《FFmpeg开发实战:从零基础到短视频上线》一书的"第 12 章 FFmpeg的移动开发"介绍了如何使用FFmpeg在手机上剪辑视频,方便开发者更好地开发类似剪映那样的视频剪辑软件。那么在Android系统上还有一款国产的开源视频压缩工具VideoSlimmer,通过该框架可以更方便地压缩视频大小,下面就来介绍如何在App工程中使用VideoSlimmer。
VideoSlimmer是一款专为Android平台设计的开源视频压缩工具,它通过Mediacodec实现视频压缩功能,并具有较高的压缩性能。VideoSlimmer支持压缩的视频格式包括mp4和3gp。
VideoSlimmer的源码托管地址为https://github.com/zolad/VideoSlimmer(星星数0.2k),最近版本更新于2018年10月,该版本的压缩包下载地址为https://github.com/zolad/VideoSlimmer/archive/refs/heads/master.zip。
VideoSlimmer提供了两种集成方式,引用在线库、直接导入源码,分别说明如下:
一、引用VideoSlimmer在线库
Android工程引用VideoSlimmer在线库时,需要修改以下两个配置:
1、打开模块级别的build.gradle,给dependencies节点补充下面几行配置,表示引入1.0.0版本的VideoSlimmer库:
implementation 'com.zolad:videoslimmer:1.0.0'
2、打开App模块的src/main/AndroidManifest.xml,给manifest节点补充下面两行权限配置,表示声明读写存储空间两个权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
二、直接导入VideoSlimmer源码
由于VideoSlimmer的发布时间较早,为了让小海豚版本的Android Studio Dolphin能够打开它的范例工程,需要对VideoSlimmer的App工程作如下修改:
1、升级Gradle版本
打开VideoSlimmer工程的gradle/wrapper/gradle-wrapper.properties,把下面这行配置
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
改成如下这行配置,表示把Gradle版本从4.4升级到5.4.1。
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
2、更新工具库的仓库位置
打开VideoSlimmer工程的build.gradle,把里面的两处"jcenter()"都改为以下配置:
// 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
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()
因为jcenter仓库已经废弃,所以改成引用国内的仓库位置。
此外,还要把下面两行配置
classpath 'com.android.tools.build:gradle:3.1.2'
改成下面这行配置,表示把Gradle插件版本升级到3.2.0版本:
classpath 'com.android.tools.build:gradle:3.2.0'
3、调整模块的build.gradle
打开VideoSlimmer工程的app/build.gradle,找到下面这行配置:
compileSdkVersion 28
在上面这行下方补充下面这行配置,表示指定编译工具的版本号:
buildToolsVersion "28.0.3"
还要把下面这行配置
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
改成下面这行配置:
implementation 'com.android.support:appcompat-v7:28.0.0'
改完build.gradle,记得单击Sync同步App工程配置。
完成以上三处修改后,重新编译App安装到真机上,挑选一个视频后进入视频压缩界面如下图所示:

可见选中视频正在压缩当中。稍等片刻视频压缩完成,界面下方展示结果视频的保存路径以及压缩进度,如下图所示。

发现压缩前的视频大小为85MB,压缩后的视频大小为12MB,仅为原视频的七分之一左右,可见压缩效果还是不错的。压缩之后的结果视频放在公共存储空间的Movies目录,完整路径为"我的手机/Movies/VIDEOSLIMMER_yyyymmdd_hhmiss.mp4",其中yymmdd为年月日,hhmiss为时分秒。
更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
本系列的FFmpeg进阶文章目录为《FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)》