FFmpeg开发笔记(七十七)Android的开源音视频剪辑框架RxFFmpeg

《FFmpeg开发实战:从零基础到短视频上线》一书的"第 12 章 FFmpeg的移动开发"介绍了如何使用FFmpeg在手机上剪辑视频,方便开发者更好地开发类似剪映那样的视频剪辑软件。那么在Android系统上还有一款国产的开源视频剪辑框架RxFFmpeg,通过该框架可以更快地开发剪辑App,下面就要介绍如何在App工程中使用RxFFmpeg。

RxFFmpeg是一个Android平台的音视频编辑、视频剪辑的快速处理框架,它基于多个音视频开源框架,包括但不限于FFmpeg 4.0、x264、mp3lame、fdk-aac、opencore-amr、openssl等等。RxFFmpeg主要提供拼接、转码、压缩、裁剪、变速、分离音视频、添加片头片尾、添加贴纸、添加字幕、添加滤镜、添加背景音乐等常见功能,能够基本满足音视频文件的日常剪辑需求。

RxFFmpeg的源码托管地址为https://github.com/microshow/RxFFmpeg,最新版本是2020年11月发布的RxFFmpeg 4.9(星星数4.6k),可见该框架的源码更新十分及时。并且RxFFmpeg的源码采用Java+XML编写,对于初学者而言非常友好,使用Android Studio Dolphin(小海豚版本)无需任何改动即可直接导入RxFFmpeg的demo工程。

在自己的App工程中集成RxFFmpeg也很简单,只要执行下列几个步骤就行。

一、导入RxFFmpeg库

如果已经事先导入RxFFmpeg的库工程,则只需在build.gradle中添加下面一行即可引入RxFFmpeg:

复制代码
implementation project(path: ':rxffmpeg')

如果不用库工程,也只要在build.gradle中添加下面一行即可引入RxFFmpeg:

复制代码
implementation 'com.github.microshow:RxFFmpeg:4.9.0'

如果没有较高要求的话,添加下面这行极速版的RxFFmpeg也够了:

复制代码
// 极速版 (预计占用 4M 左右空间),主要移除了一些不常用的编解码器
implementation 'com.github.microshow:RxFFmpeg:4.9.0-lite'

二、执行FFmpeg命令

在App工程的Java代码中可通过以下方式异步执行FFmpeg的音视频剪辑命令:

复制代码
private void runFFmpegRxJava() {
    String text = "这里填完整的ffmpeg剪辑命令";
    String[] commands = text.split(" ");
    myRxFFmpegSubscriber = new MyRxFFmpegSubscriber(this);
    //开始执行FFmpeg命令
    RxFFmpegInvoke.getInstance()
            .runCommandRxJava(commands)
            .subscribe(myRxFFmpegSubscriber);
}

开始音视频剪辑操作后,可通过以下代码中断RxFFmpeg的剪辑操作:

复制代码
RxFFmpegInvoke.getInstance().exit();

如果不是剪辑加工音视频文件,仅仅需要获取音视频文件的媒体信息,也可调用以下代码抓取指定文件携带的媒体信息:

复制代码
String filePath = "这里填音视频文件的完整路径";
String mediaInfo = RxFFmpegInvoke.getInstance().getMediaInfo(filePath);

由此可见,RxFFmpeg用起来很简单,只要开发者掌握常见的ffmpeg操作命令,就能快速地在自己的App工程中添加各种音视频剪辑功能。

按照上述几个步骤给App工程集成RxFFmpeg后,编译运行RxFFmpeg的demo工程,打开测试App如下图所示。

可见RxFFmpeg界面简洁,容易上手,是个不错的国产视频剪辑SDK。

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

本系列的FFmpeg进阶文章目录为《FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)》

相关推荐
论迹复利9 小时前
Sniff 省电模式参数调优——续航与音频稳定性平衡实操
音视频·sniff·bt·功耗、
星核0penstarry10 小时前
从 Dialog-RSN-1 看语音 Agent 走向:企业如何评估音频原生模型与 API 服务
人工智能·音视频·音频·api
2501_9159090612 小时前
iOS 应用反调试技详解术 检测调试器的原理与防护实践
android·ios·小程序·https·uni-app·iphone·webview
明如正午12 小时前
【python】Python + OpenCV 实现视频关键帧提取与智能去重
python·opencv·音视频
Lvan的前端笔记12 小时前
AndroidX 完全入门指南
android·androidx
呆呆敲代码的小Y12 小时前
5 分钟上手 OpenMontage:把 AI 编程助手变成视频工作室
人工智能·aigc·音视频·ai视频生成·claude code·openmontage
帅次13 小时前
Android 应用高级面试:Window 近1年高频追问 18 题
android·面试·职场和发展
奈斯先生Vector13 小时前
大模型 Agentic Workflow 架构解构:异构 API 调度与 Token 路由的多模态系统设计
开发语言·前端·架构·prompt·aigc·音视频
海带紫菜菠萝汤13 小时前
FFmpeg.wasm 实践:在浏览器中运行 FFmpeg 的能力边界与性能瓶颈
前端·javascript·ffmpeg·音视频·wasm
甜甜小酒窝13 小时前
通过Canvas在网页中将后端发来的一帧帧图片渲染成“视频”的实现过程
音视频