FFmpeg开发笔记(九十六)采用Kotlin+Compose的视频编辑器OpenVideoEditor

《FFmpeg开发实战:从零基础到短视频上线》一书的"第 12 章 FFmpeg的移动开发"介绍了如何使用FFmpeg在手机上播放视频,基于FFmpeg的国产播放器开源框架也有很多了,前有哔哩哔哩的ijkplayer,后有小红书的RedPlayer,参见之前的文章《使用国产的ijkplayer播放器观看网络视频》和《使用国产的RedPlayer播放器观看网络视频》。

除此以外,OpenVideoEditor也是一款优秀的Android原生视频编辑器,该框架基于Kotlin+Compose开发,并采用Media3和Jetpack Compose构建,贴近最新的Android开发技术。OpenVideoEditor支持裁剪、灰度、反转、缩放、旋转、调整分辨率等常见的视频剪辑功能,可谓功能强大。
OpenVideoEditor的源码托管地址为https://github.com/devhyper/open-video-editor(星星数0.5k),国内的镜像地址为https://gitcode.com/gh_mirrors/op/open-video-editor,最新版本是2024年9月发布的v1.1.3,可见该框架的源码更新十分及时,该版本的源码下载地址为https://github.com/devhyper/open-video-editor/archive/refs/tags/v1.1.3.tar.gz。
并且OpenVideoEditor的源码采用Kotlin+Compose编写,适合Android开发者用作进阶练习,不过由于OpenVideoEditor引入了最新的Android开发技术,因此需要使用较新的Android Studio才能成功导入运行。接下来以Android Studio Ladybug(小瓢虫版本)为例,介绍如何通过Android Studio编译运行OpenVideoEditor的demo工程。
为了加快OpenVideoEditor项目的加载速度,可打开settings.gradle.kts,在repositories节点内部补充以下配置:

复制代码
// 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
maven { url = uri("https://maven.aliyun.com/repository/jcenter") }
maven { url = uri("https://maven.aliyun.com/repository/google")}
maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin")}
maven { url = uri("https://maven.aliyun.com/repository/public")}
// 以下添加清华大学的仓库地址
maven { url = uri("https://mirrors.tuna.tsinghua.edu.cn/repository/maven-central/") }

增加以上配置的目的是引入国内的仓库地址,以便加快相关依赖包的下载速度。

等待OpenVideoEditor工程编译通过,把demo应用安装到手机上,启动之后的App界面如下图所示:

点击【视频】按钮,先到系统相册选择一个视频文件,返回的加工界面如下图所示:

点击加工界面右下角的方形按钮,弹出底部选择菜单如下图所示:

点击【剪辑】菜单项,表示根据起止时间裁剪视频片段。此时界面下方的进度条出现两个圆珠,第一个圆珠代表裁剪开始时间,第二个圆珠代表裁剪结束时间,如下图所示:

分别拖动两个圆珠确定裁剪的起止时间后,点击右下角的打勾按钮,此时进度条长度变为视频片段的持续时间比如10秒。点击界面右上角的三点按钮,弹出操作菜单列表如下图所示:

点击【导出】菜单项,弹出保存文件的配置界面如下图所示:

在配置界面可以选择导出方式与音视频的编码格式,点击右下角的导出按钮跳到保存目录的选择界面,选择某个公共目录比如Download,即可将视频片段保存到Download目录。

总结一下,OpenVideoEditor确实使用简单,剪辑功能也丰富,是个未来可期的下一代视频编辑器。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

相关推荐
xiangpanf6 小时前
Laravel 10.x重磅升级:五大核心特性解析
android
robotx9 小时前
安卓线程相关
android
消失的旧时光-194310 小时前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
dalancon11 小时前
VSYNC 信号流程分析 (Android 14)
android
dalancon11 小时前
VSYNC 信号完整流程2
android
dalancon11 小时前
SurfaceFlinger 上帧后 releaseBuffer 完整流程分析
android
yy我不解释12 小时前
关于comfyui的mmaudio音频生成插件时时间不一致问题(三)
开发语言·python·ai作画·音视频·comfyui
用户693717500138412 小时前
不卷AI速度,我卷自己的从容——北京程序员手记
android·前端·人工智能
程序员Android12 小时前
Android 刷新一帧流程trace拆解
android
墨狂之逸才13 小时前
解决 Android/Gradle 编译报错:Comparison method violates its general contract!
android