Android ICS FFMPEG 缩放视频不工作
Android ICS FFMPEG scale video not working
我正在使用 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(冰淇淋三明治)上使用此代码不会执行任何操作。虽然在 processComplete
中的其他设备上测试 exitValue
始终等于 0
,但在 ICS 上它是 11
。这是 LogCat 中的输出:
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
我认为这不是 ffmpeg 的问题,更像是库试图从内存中的原始文件夹执行 ffmpeg 可执行文件时出现的问题,但我也看不到任何表明这一点的日志或错误。
所以我的问题是,如果我在使用/运行此代码或某些可以阻止 ffmpeg 可执行文件在具有 Android 的旧设备上执行 运行 的任何错误集成电路?
提前致谢!
因此,经过大量测试并为 Android 构建 ffmpeg
,我发现使用 ffmpeg
可执行构建而不需要 PIE support
(Android Lollipop
需要) ) 在 Android 4.0 / 4.0.3 / 4.0.4
上很有魅力。
因此,如果您遇到同样的问题,请尝试使用不包含 PIE support
的 ffmpeg
构建进行测试,看看它是否会起作用。在我的例子中成功了。
我正在使用 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(冰淇淋三明治)上使用此代码不会执行任何操作。虽然在 processComplete
中的其他设备上测试 exitValue
始终等于 0
,但在 ICS 上它是 11
。这是 LogCat 中的输出:
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
我认为这不是 ffmpeg 的问题,更像是库试图从内存中的原始文件夹执行 ffmpeg 可执行文件时出现的问题,但我也看不到任何表明这一点的日志或错误。
所以我的问题是,如果我在使用/运行此代码或某些可以阻止 ffmpeg 可执行文件在具有 Android 的旧设备上执行 运行 的任何错误集成电路?
提前致谢!
因此,经过大量测试并为 Android 构建 ffmpeg
,我发现使用 ffmpeg
可执行构建而不需要 PIE support
(Android Lollipop
需要) ) 在 Android 4.0 / 4.0.3 / 4.0.4
上很有魅力。
因此,如果您遇到同样的问题,请尝试使用不包含 PIE support
的 ffmpeg
构建进行测试,看看它是否会起作用。在我的例子中成功了。