>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Kotlin

使用 Jetpack Compose 和 Media3 构建的简易视频编辑器 — 无广告、无追踪

每次在 Android 上需要剪辑短视频或去除音频时,都会变成一场折腾。在 Google Play 上,大多数编辑器要么立即要求订阅,要么在屏幕一半的位置强行添加水印,要么强迫你观看赌场广告。内置的图库编辑器往往会将文件重新压缩到面目全非。

最近发现了开发者 devhyper 的 open-video-editor 项目。这是一个遵循 GPLv3 协议的简洁应用,完全使用 Kotlin 编写,采用现代化的 Android 开发技术栈。

这个应用能做什么

该项目无意与 CapCut 这类笨重的移动端一体化工具竞争。关注点在于你每天都会用到的基础操作:

  • 沿时间线裁剪视频(Trim)
  • 去色帧(Grayscale filter)
  • 更改分辨率和缩放(Scale, Resolution)
  • 将视频旋转 90、180 或 270 度(Rotate)

Phone screenshot 1 Phone screenshot 2 Phone screenshot 3 Phone screenshot 4

界面非常直观:从图库中选择文件,移动滑块,点击保存按钮。无需账号、注册或隐藏购买。

项目内部结构

对于 Android 开发者来说,该仓库最值得关注的是其媒体处理流水线的实现方式。

以前,在 Android 上处理视频是一件令人头疼的事:要么通过 NDK 封装笨重的 C++ FFmpeg,要么在底层 MediaCodec 中挣扎。在这里,作者选择了 Google 官方的 Media3 Transformer 库。

Media3 Transformer 处理硬件编码和解码、轨道同步,以及通过 OpenGL shader 应用图形效果。如果你查看源代码,视频处理归结为简洁的调用:

val editedMediaItem = EditedMediaItem.Builder(mediaItem)
    .setEffects(
        Effects(
            listOf(audioProcessor),
            listOf(presentation, rgbFilter)
        )
    )
    .build()

val transformer = Transformer.Builder(context)
    .setVideoMimeType(MimeTypes.VIDEO_H264)
    .build()

transformer.start(editedMediaItem, outputPath)

界面完全使用 Jetpack Compose 构建。代码库干净整洁,没有层层抽象或遗留的 XML 布局。如果你需要在项目中添加简单的视频处理功能,又不想重复造轮子,这是一个很好的参考。

在哪里获取以及如何运行

该项目通过 F-Droid、IzzyOnDroid、Google Play 以及 GitHub 上的 APK 发布版本进行分发。

如果你想深入研究代码或在本地构建项目,标准的 clone 操作即可:

git clone https://github.com/devhyper/open-video-editor.git

项目可以在最新的 Android Studio 中打开,构建时无需特定的外部依赖或封闭的 API 密钥。

这个项目适合谁

如果你需要一款轻量级、无追踪器的个人手机工具,open-video-editor 可以满足基础的视频裁剪和旋转需求。

如果你从事 Android 开发,该项目是学习使用 Jetpack Media3 Transformer 的清晰示例。Google 官方文档中的示例往往过于繁重,但在这里你可以从小而完整的应用中查看实际的生产代码。

相关项目