我正在使用ffmpeg for android(使用gradle插件'com.writingminds:FFmpegAndroid:0.3.2')我试图将视频裁剪为16:9(w:h)。原始视频为1080:1920(w:h)。 当我执行命令时,我得到一个IOException没有这样的文件或目录。
我正在使用的命令:
-i /storage/emulated/0/Movies/MyApp/result_joined.mp4 -vf crop=1080:607 -preset ultrafast /storage/emulated/0/Movies/MyApp/result_cropped.mp4
例外:
java.io.IOException: Error running exec(). Command:
[/data/user/0/my.package.name/files/ffmpeg, -i, /storage/emulated/0/Movies/MyApp/result_joined.mp4, -vf, crop=1080:607, -preset, ultrafast, /storage/emulated/0/Movies/MyApp/result_cropped.mp4] Working Directory: null Environment: null
Caused by: java.io.IOException: No such file or directory
在没有任何帮助的情况下搜索了几个堆栈溢出问题。 我还尝试将文件保存到内部存储而不是外部存储。相同的结果
任何帮助?
答案 0 :(得分:1)
创建 FFmpeg 的实例后,您需要调用 loadBinary 方法。
try {
ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
@Override
public void onFailure() {
Logger.i(TAG, "ffmpeg not supported");
}
});
} catch (FFmpegNotSupportedException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
我遇到同样的异常。我忘了加载FFmpeg库。 首先,我们必须加载该库。 在运行命令之前运行此功能。
void LoadFFmpegLibrary()
{
if(ffmpeg==null)
{
ffmpeg = FFmpeg.getInstance(context);
try {
ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
@Override
public void onStart() {}
@Override
public void onFailure() {
Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess() {
Toast.makeText(context, "Success", Toast.LENGTH_SHORT).show();
}
@Override
public void onFinish() {}
});
} catch (FFmpegNotSupportedException e) {
e.printStackTrace();
}
}
}