FFmpeg开发笔记(九十六)采用Kotlin+Compose的视频编辑器OpenVideoEditor
<span data-cke-copybin-start="1"><span data-cke-copybin-start="1"></span></span><span id="cke_bm_426S">《FFmpeg开发实战:从零基础到短视频上线》一书的“第 12 章 FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上播放视频,基于FFmpeg的国产播放器开源框架也有很多了,前有哔哩哔哩的ijkplayer,后有小红书的RedPlayer,参见之前的文章《使用国产的ijkplayer播放器观看网络视频》和《使用国产的RedPlayer播放器观看网络视频》。</span><p><span id="cke_bm_426S"> 除此以外,OpenVideoEditor也是一款优秀的Android原生视频编辑器,该框架基于Kotlin+Compose开发,并采用Media3和Jetpack Compose构建,贴近最新的Android开发技术。OpenVideoEditor支持裁剪、灰度、反转、缩放、旋转、调整分辨率等常见的视频剪辑功能,可谓功能强大。<br>
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。<br>
并且OpenVideoEditor的源码采用Kotlin+Compose编写,适合Android开发者用作进阶练习,不过由于OpenVideoEditor引入了最新的Android开发技术,因此需要使用较新的Android Studio才能成功导入运行。接下来以Android Studio Ladybug(小瓢虫版本)为例,介绍如何通过Android Studio编译运行OpenVideoEditor的demo工程。<br>
为了加快OpenVideoEditor项目的加载速度,可打开settings.gradle.kts,在repositories节点内部补充以下配置:</span></p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="8" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22%2F%2F%20%E4%BB%A5%E4%B8%8B%E5%9B%9B%E8%A1%8C%E6%B7%BB%E5%8A%A0%E9%98%BF%E9%87%8C%E4%BA%91%E7%9A%84%E4%BB%93%E5%BA%93%E5%9C%B0%E5%9D%80%EF%BC%8C%E6%96%B9%E4%BE%BF%E5%9B%BD%E5%86%85%E5%BC%80%E5%8F%91%E8%80%85%E4%B8%8B%E8%BD%BD%E7%9B%B8%E5%85%B3%E6%8F%92%E4%BB%B6%5Cnmaven%20%7B%20url%20%3D%20uri(%5C%22https%3A%2F%2Fmaven.aliyun.com%2Frepository%2Fjcenter%5C%22)%20%7D%5Cnmaven%20%7B%20url%20%3D%20uri(%5C%22https%3A%2F%2Fmaven.aliyun.com%2Frepository%2Fgoogle%5C%22)%7D%5Cnmaven%20%7B%20url%20%3D%20uri(%5C%22https%3A%2F%2Fmaven.aliyun.com%2Frepository%2Fgradle-plugin%5C%22)%7D%5Cnmaven%20%7B%20url%20%3D%20uri(%5C%22https%3A%2F%2Fmaven.aliyun.com%2Frepository%2Fpublic%5C%22)%7D%5Cn%2F%2F%20%E4%BB%A5%E4%B8%8B%E6%B7%BB%E5%8A%A0%E6%B8%85%E5%8D%8E%E5%A4%A7%E5%AD%A6%E7%9A%84%E4%BB%93%E5%BA%93%E5%9C%B0%E5%9D%80%5Cnmaven%20%7B%20url%20%3D%20uri(%5C%22https%3A%2F%2Fmirrors.tuna.tsinghua.edu.cn%2Frepository%2Fmaven-central%2F%5C%22)%20%7D%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">// 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
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/") }</code></pre>
</div>
<p>增加以上配置的目的是引入国内的仓库地址,以便加快相关依赖包的下载速度。<br>
等待OpenVideoEditor工程编译通过,把demo应用安装到手机上,启动之后的App界面如下图所示:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="7" data-cke-widget-wrapper="1">
<p class="img-center cke_widget_element" data-cke-widget-data="%7B%22hasCaption%22%3Afalse%2C%22src%22%3A%22https%3A%2F%2Fi-blog.csdnimg.cn%2Fdirect%2Ffb4625d0464b496ca807f7f8e9475b74.jpeg%22%2C%22alt%22%3A%22%22%2C%22width%22%3A%22307%22%2C%22height%22%3A%22662%22%2C%22lock%22%3Atrue%2C%22align%22%3A%22center%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="image"><span class="cke_image_resizer_wrapper"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><img src="https://img2024.cnblogs.com/blog/729938/202512/729938-20251208085411493-405017553.jpg"></span></span></p>
</div>
<p>点击【视频】按钮,先到系统相册选择一个视频文件,返回的加工界面如下图所示:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="6" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><img src="https://img2024.cnblogs.com/blog/729938/202512/729938-20251208085424724-1616121495.jpg"></span></span></span></span></p>
<p>点击加工界面右下角的方形按钮,弹出底部选择菜单如下图所示:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="5" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><img src="https://img2024.cnblogs.com/blog/729938/202512/729938-20251208085436796-457363467.jpg"></span></span></span></span></p>
<p>点击【剪辑】菜单项,表示根据起止时间裁剪视频片段。此时界面下方的进度条出现两个圆珠,第一个圆珠代表裁剪开始时间,第二个圆珠代表裁剪结束时间,如下图所示:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="4" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><img src="https://img2024.cnblogs.com/blog/729938/202512/729938-20251208085446421-1713524734.jpg"></span></span></span></span></p>
<p>分别拖动两个圆珠确定裁剪的起止时间后,点击右下角的打勾按钮,此时进度条长度变为视频片段的持续时间比如10秒。点击界面右上角的三点按钮,弹出操作菜单列表如下图所示:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="3" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><img src="https://img2024.cnblogs.com/blog/729938/202512/729938-20251208085459428-1022764015.jpg"></span></span></span></span></p>
<p>点击【导出】菜单项,弹出保存文件的配置界面如下图所示:</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="2" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><img src="https://img2024.cnblogs.com/blog/729938/202512/729938-20251208085514872-1633988988.jpg"></span></span></span></span></p>
<p>在配置界面可以选择导出方式与音视频的编码格式,点击右下角的导出按钮跳到保存目录的选择界面,选择某个公共目录比如Download,即可将视频片段保存到Download目录。<br>
总结一下,OpenVideoEditor确实使用简单,剪辑功能也丰富,是个未来可期的下一代视频编辑器。</p>
<p>更多详细的FFmpeg开发知识参见<span class="cke_widget_wrapper cke_widget_inline cke_widget_csdnlink cke_widget_selected" data-cke-display-name="a" data-cke-filter="off" data-cke-widget-id="1" data-cke-widget-wrapper="1">《FFmpeg开发实战:从零基础到短视频上线》一书。</span></p>
<span data-cke-copybin-start="1">
<span data-cke-copybin-end="1"></span></span><br><br>
来源:https://www.cnblogs.com/aqi00/p/19319703
頁:
[1]