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();
复制代码
好了,今天就给你们介绍这么多,有什么想方法或者建议欢迎留言评论。
以为文章还不错喜欢的点个赞给个喜欢鼓励下呗~