《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開發實戰詳解,含直播系統的搭建過程)》