FFmpeg开发笔记(一百)国产的Android开源视频压缩工具VideoSlimmer

《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开发实战详解,含直播系统的搭建过程)》

相关推荐
EasyDSS3 小时前
连锁扩张管控难?一套视频会议/直播/点播/集群对讲EasyDSS音视频云平台打通门店全流程数字化
网络·音视频·easydss
阿明副业观察4 小时前
2026年免费AI视频生成工具功能深度解析:有无水印、中文语音及商业用途考量
大数据·人工智能·ai作画·aigc·音视频·ai写作
国产化创客7 小时前
ESP32音频/语音技术(4)AudioTools 库及转发播放程序分析
物联网·音视频·esp32
martindelophy7 小时前
浏览器视频导出太慢怎么优化?一次 WebCodecs 实践:8 分钟视频耗时降低 31%
性能优化·音视频·优化
Dovis(誓平步青云)8 小时前
常用命令藏得太深?怎么做一个快捷命令坞
运维·前端·自动化·音视频·prometheus
geovindu8 小时前
sql:Search-Optimized SQL Queries using mysql 9.0
android·数据库·sql·mysql·数据库开发·数据库架构
知之则吱吱10 小时前
Android 开发者验证机制迎来新变化:核心要求、实施时间与开发者应对指南
android·google
墨天梦11 小时前
D09_Retrofit接口与数据转换
android·kotlin·retrofit
开开心心就好12 小时前
把手机变成电脑麦克风,WiFi连接就能用
智能手机·ffmpeg·计算机外设·电脑·word·音视频
电商API_1800790524712 小时前
闲鱼商品列表API接口商品详情API接口请求示例(含一份真实响应数据示例)
android·数据挖掘·网络爬虫·跨境电商·反向海淘