我正在使用Guardian Project Android Java FFMPEG库来调整视频大小。正在处理android 5.0.1 / 5.1.0 / 4.4.4
的当前代码:
File fileTmp = getCacheDir();
FfmpegController fc = null;
try {
fc = new FfmpegController(this, fileTmp);
} catch (IOException e) {
e.printStackTrace();
}
String path = Environment.getExternalStorageDirectory().getPath() + "/Movies/nexus.mp4";
final String outPath = Environment.getExternalStorageDirectory().getPath() + "/Movies/test.mp4";
final Clip out = new Clip(path);
try {
if (fc != null) {
fc.convert(out, outPath, new ShellUtils.ShellCallback() {
@Override
public void shellOut(String shellLine) {
Log.e("", "SHELL OUT: " + shellLine);
}
@Override
public void processComplete(int exitValue) {
Log.e("", "PROCESS COMPLETE: " + exitValue);
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
在Android 4.0.4(Ice Cream Sandwich)上使用此代码无效。在其他设备上进行测试exitValue
中的processComplete
始终等于0
,但在ICS上11
。SHELL OUT: /data/data/org.hardartcore.ffmpeg/app_bin/ffmpeg -y -i /mnt/sdcard/Movies/NEXUS.mp4 -ab 160k -r ntsc-film -vf scale=568:320 -strict -2 /mnt/sdcard/Movies/Test.mp4
PROCESS COMPLETE: 11
。这是LogCat中的输出:
{{1}}
我不认为这是来自ffmpeg的东西,当库试图从内部存储器中的原始文件夹执行ffmpeg可执行文件时更像是一个问题,但我看不到任何日志或错误也表明这一点。
所以我的问题是,如果我正在使用/运行此代码或可能阻止ffmpeg可执行文件在使用Android ICS的旧设备上运行时出现任何错误?
提前致谢!
答案 0 :(得分:0)
因此,经过大量测试并为Android构建ffmpeg
后,我发现在ffmpeg
上使用PIE support
可执行构建时没有Android Lollipop
(Android 4.0 / 4.0.3 / 4.0.4
需要{}}像魅力一样。
因此,如果您遇到同样的问题,请尝试使用不包含ffmpeg
的{{1}}版本进行测试,看看它是否有效。在我的情况下,这就是诀窍。