RxFFmpeg 是基於 ( FFmpeg 4.0 + X264 + mp3lame + fdk-aac ) 編譯的適用於 Android 平臺的音視頻編輯、視頻剪輯的快速處理框架,包含如下功能(視頻拼接,轉碼,壓縮,裁剪,片頭片尾,分離音視頻,變速,添加靜態貼紙和gif動態貼紙,添加字幕,添加濾鏡,添加背景音樂,加速減速視頻,倒放音視頻,音頻裁剪,變聲,混音,圖片合成視頻,視頻解碼圖片等主流特點功能……ubuntu
win10 + ubuntu 16.04 + gcc + make 主要依賴如下庫進行編譯bash
編譯腳本、JNI代碼整理後上傳框架
支持任何FFmpeg命令執行異步
支持FFmpeg命令執行進度回調ide
支持中斷FFmpeg命令post
支持同步/異步執行ui
支持開啓/關閉 debug 模式編碼
支持硬件加速,使編解碼處理更快spa
代碼封裝成SDK的方式,方便依賴使用debug
支持把FFmpeg的各子模塊libavutil libavcodec libavformat libavdevice libavfilter libswscale libswresample libpostproc 最終打包成一個libffmpeg-core.so核心庫方便依賴使用,無需導入七八個so庫
支持libx264編碼庫,能夠使壓縮後的視頻體積變的極小,清晰度還保持着很高清,簡單的壓縮命令: ffmpeg -y -i /storage/emulated/0/1/input.mp4 -b 2097k -r 30 -vcodec libx264 -preset superfast /storage/emulated/0/1/result.mp4
支持添加 mp三、aac、wav 等主流格式的背景音樂
支持主流視頻格式轉換,如: avi > mp4 > avi
使用方式
一、開啓/關閉 debug 模式,建議在 Application 初始化調用
RxFFmpegInvoke.getInstance().setDebug(true); 二、FFmpeg 命令執行 (RxJava2優雅的調用)
String text = "ffmpeg -y -i /storage/emulated/0/1/input.mp4 -vf boxblur=25:5 -preset superfast /storage/emulated/0/1/result.mp4";
String[] commands = text.split(" ");
RxFFmpegInvoke.getInstance().runCommandRxJava(commands).subscribe(new RxFFmpegSubscriber() {
@Override
public void onFinish() {
if (mProgressDialog != null)
mProgressDialog.cancel();
showDialog("處理成功");
}
@Override
public void onProgress(int progress) {
if (mProgressDialog != null)
mProgressDialog.setProgress(progress);
}
@Override
public void onCancel() {
if (mProgressDialog != null)
mProgressDialog.cancel();
showDialog("已取消");
}
@Override
public void onError(String message) {
if (mProgressDialog != null)
mProgressDialog.cancel();
showDialog("出錯了 onError:" + message);
}
});
複製代碼
三、FFmpeg 命令執行 (同步方式)
RxFFmpegInvoke.getInstance().runCommand(command, null);
複製代碼
四、中斷 FFmpeg 命令
RxFFmpegInvoke.getInstance().exit();
複製代碼
好了,今天就給你們介紹這麼多,有什麼想方法或者建議歡迎留言評論。
以爲文章還不錯喜歡的點個贊給個喜歡鼓勵下唄~