小夭夭 發表於 2025-10-18 10:56:00

FFmpeg开发笔记(八十三)国产的视频裁剪框架AndroidVideoTrimmer

<span data-cke-copybin-start="1"><span data-cke-copybin-start="1">​</span></span><span id="cke_bm_3095S">《FFmpeg开发实战:从零基础到短视频上线》一书的“第 12 章 &nbsp;FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上剪辑视频,方便开发者更好地开发类似剪映那样的视频剪辑软件。那么在Android系统上还有一款国产的开源视频裁剪框架Android-Video-Trimmer,通过该框架可以更快地裁剪视频片段,下面就来介绍如何在App工程中使用Android-Video-Trimmer。</span>
<p><span id="cke_bm_3095S"> Android Video Trimmer是一款专为Android平台设计的强大开源视频处理工具,它通过FFmpeg实现视频裁剪功能,并支持裁剪后的视频压缩功能。此外,Android Video Trimmer采用VideoView播放视频,采用RecycleView显示视频的帧图片,通过MediaMetadataRetriever获取视频帧的缩略图。<br>
Android Video Trimmer的源码托管地址为https://github.com/iknow4x/Android-Video-Trimmer(星星数1.1k),最新版本基于Android 13(API 34)和Kotlin 1.9开发,可见该框架的源码更新十分及时。<br>
实测发现最新版的Android Video Trimmer编译通过后无法正常裁剪视频,只有2019年2月发布的Android-Video-Trimmer-1.0.0才能正常使用,该版本的压缩包下载地址为https://github.com/iknow4x/Android-Video-Trimmer/archive/refs/tags/v1.0.0.zip。<br>
由于1.0版本的Android-Video-Trimmer发布时间较早,为了让小海豚版本的Android Studio Dolphin能够打开它的范例工程,需要对Android-Video-Trimmer-1.0.0的App工程作如下修改:</span></p>
<h1>一、升级Gradle版本</h1>
<p>打开Android-Video-Trimmer工程的gradle/wrapper/gradle-wrapper.properties,把下面这行配置</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="7" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22distributionUrl%3Dhttps%5C%5C%3A%2F%2Fservices.gradle.org%2Fdistributions%2Fgradle-4.4-all.zip%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip</code></pre>
</div>
<p>改成如下这行配置,表示把Gradle版本从4.4升级到6.7.1。</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="6" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22distributionUrl%3Dhttps%5C%5C%3A%2F%2Fservices.gradle.org%2Fdistributions%2Fgradle-6.7.1-bin.zip%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip</code></pre>
</div>
<h1>二、更新工具库的仓库位置</h1>
<p>打开Android-Video-Trimmer工程的build.gradle,把里面的两处“jcenter()”都改为以下配置:</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="5" 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'https%3A%2F%2Fmaven.aliyun.com%2Frepository%2Fjcenter'%20%7D%5Cnmaven%20%7B%20url%20'https%3A%2F%2Fmaven.aliyun.com%2Frepository%2Fgoogle'%7D%5Cnmaven%20%7B%20url%20'https%3A%2F%2Fmaven.aliyun.com%2Frepository%2Fgradle-plugin'%7D%5Cnmaven%20%7B%20url%20'https%3A%2F%2Fmaven.aliyun.com%2Frepository%2Fpublic'%7D%5Cngoogle()%5CnmavenCentral()%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 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/gradle-plugin'}
maven { url 'https://maven.aliyun.com/repository/public'}
google()
mavenCentral()</code></pre>
</div>
<p>因为jcenter仓库已经废弃,所以改成引用国内的仓库位置。<br>
此外,还要把下面两行配置</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="4" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22classpath%20'com.android.tools.build%3Agradle%3A3.1.2'%5Cnclasspath%20'me.tatarka%3Agradle-retrolambda%3A3.3.1'%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'me.tatarka:gradle-retrolambda:3.3.1'</code></pre>
</div>
<p>改成下面这行配置,表示把Gradle插件版本升级到适配Android Studio Dolphin的4.0版本:</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="3" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22classpath%20'com.android.tools.build%3Agradle%3A4.0.0'%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">classpath 'com.android.tools.build:gradle:4.0.0'</code></pre>
</div>
<h1>三、升级Support库或者迁移到AndroidX</h1>
<p>打开Android-Video-Trimmer工程的app/build.gradle,发现里面引用了支持库Support v27,但Android早已废弃Support库,转为使用AndroidX库,所以要么把Support库升级到最后更新的v28库,要么把支持库迁移到AndroidX。<br>
在Android Studio Dolphin的主界面依次选择顶部菜单“Refactor”→“Migrate to AndroidX”,即可将App工程的Support库迁移到AndroidX库。<br>
完成以上三处修改后,重新编译App安装到真机上,挑选一个视频后进入视频裁剪界面如下图所示:</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/202510/729938-20251005161410618-66076532.jpg"></span></span></span></span></p>
<p>可见裁剪界面下方展现一排不同时间点的缩略图列表,拖动列表图片即可切换待裁剪的视频起止时间段。拖动选好待裁剪的视频片段之后,点击界面右下角的完成按钮,即可自动执行裁剪操作。裁剪之后的视频片段放在App安装路径下的cache目录,完整路径为“我的手机/Android/data/com/iknow.android/cache/视频片段的文件名.mp4”。</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><br><br>
来源:https://www.cnblogs.com/aqi00/p/19126677
頁: [1]
查看完整版本: FFmpeg开发笔记(八十三)国产的视频裁剪框架AndroidVideoTrimmer