使用 Jetpack Compose 和 Media3 构建的简易视频编辑器 — 无广告、无追踪
每次在 Android 上需要剪辑短视频或去除音频时,都会变成一场折腾。在 Google Play 上,大多数编辑器要么立即要求订阅,要么在屏幕一半的位置强行添加水印,要么强迫你观看赌场广告。内置的图库编辑器往往会将文件重新压缩到面目全非。
最近发现了开发者 devhyper 的 open-video-editor 项目。这是一个遵循 GPLv3 协议的简洁应用,完全使用 Kotlin 编写,采用现代化的 Android 开发技术栈。
这个应用能做什么
该项目无意与 CapCut 这类笨重的移动端一体化工具竞争。关注点在于你每天都会用到的基础操作:
- 沿时间线裁剪视频(Trim)
- 去色帧(Grayscale filter)
- 更改分辨率和缩放(Scale, Resolution)
- 将视频旋转 90、180 或 270 度(Rotate)
界面非常直观:从图库中选择文件,移动滑块,点击保存按钮。无需账号、注册或隐藏购买。
项目内部结构
对于 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 官方文档中的示例往往过于繁重,但在这里你可以从小而完整的应用中查看实际的生产代码。
相关项目