这是一个 Fork 自 formatBCE 的 轻量级FFmpeg 库。 使你可以更轻松的在安卓项目中使用 FFmpeg 命令。
如果 targetSdkVersion 为 29(Android 10),将会报错 Permission denied
- 更小的集成包,仅仅只有21kb的大小。
- 支持大多数CPU架构(包括64位) -- armv7 -- armv7-neon -- armv8 -- x86 -- x86_64 -- arm64-v8a
- 可由开发者或用户自由选择下载适合使用设备的二进制文件
- 因为库本身没有包含二进制文件,所以可以绕过 Google Play 的64位检测
导入项目
implementation 'com.equationl.ffmpeg:tiny-android-ffmpeg:1.1.8'请将版本号替换为上方图片所示的最新版本
使用前切记检查是否支持该设备,并且二进制是否存在且可用。
1.检查是否支持:
ffmpeg.isSupported()2.检查二进制文件是否存在
ffmpeg.isFFmpegExist()3.如果不存在则需要自行下载
你可以在 这里 找到所有ffmpeg的二进制文件,请将这些文件下载后上传到你自己的服务器上,然后自己在项目中实现下载文件。
4.将下载好的文件应用到库中
ffmpeg.setFFmpegFile(file);5.应用二进制文件时的回调
ffmpeg.setFFcheckFileListener(new FFcheckFileListener() {
@Override
public void onCopyFileFail(IOException e) {
Log.e(e);
}
@Override
public void onAllFinish() {
}
@Override
public void onVerifyFileFail() {
Log.e("check file fail!");
}
});下面的例子将会运行 ffmpeg -version 命令
FFmpeg ffmpeg = FFmpeg.getInstance(context);
// to execute "ffmpeg -version" command you just need to input "-version"
String[] cmd = {"-version"};
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
@Override
public void onStart() {}
@Override
public void onProgress(String message) {}
@Override
public void onFailure(String message) {}
@Override
public void onSuccess(String message) {}
@Override
public void onFinish() {}
});停止(或退出) FFmpeg 进程
如果你想要终止运行中的FFmpeg进程,只需要在运行中的 FFtask 调用 .sendQuitSignal():
FFmpeg ffmpeg = FFmpeg.getInstance(context);
FFtask ffTask = ffmpeg.execute( ... )
ffTask.sendQuitSignal();注意:这样做的话,将会调用 onFailure 而非onSuccess.
完整示例请查看项目的 demo
该项目 Fork 自 formatBCE
formatBCE Fork自 bravobit
bravobit Fork 自WritingMinds
感谢上面各位为开源做出的贡献!