Https://www.versioneye.com/java/java/org.bytedeco.javacpp-presets:ffmpeg/ffmpeg/2.3-0.9),我需要能够在我的Android应用程序内执行命令,例如:
ffmpeg -ss 00:00:00 -t 00:00:15 -i in.mp4 -codec copy out.mp4
,“ FFMPEG”不是该罐子暴露的类或方法。一些帖子表明,在处理FFMPEG本机代码时,我应该使用EXEC方法,但是您如何执行此操作(如果与此库有关的话,这是正确的事情)? 我正在尝试以下命令而没有成功。
Process p=Runtime.getRuntime().exec("/libs/ffmpeg-2.3-0.9 -i -i in.mp4 -codec copy out.mp4");
我决定使用ffmpeg4android。它比使用JNI的任何东西都更加用户友好,并且能够在异步中接受FFMPEG命令。进口是:
doinbackground代码是:
PowerManager powerManager = (PowerManager) Main.this.getSystemService(Activity.POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "VK_LOCK");
wakeLock.acquire();
String commandStr = "ffmpeg -ss 00:00:00 -t 00:00:15 -i "+fullInVideoPath+" -codec copy " + fullOutVideoPath;
LoadJNI vk = new LoadJNI();
try {
vk.run(GeneralUtils.utilConvertToComplex(commandStr), scishotfolder, getApplicationContext());
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (wakeLock.isHeld()) wakeLock.release();
}
我希望这对某人有帮助。唯一的问题是它会产生无法在视频中播放的损坏视频!不幸的是,另一个流行的替代品也会产生类似损坏的MP4文件。
讨论迟到了8年,但是有人在那里得到答案:
https://bytedeco.org/javacpp-presets/ffmpeg/apidocs/org/bytedeco/ffmpeg/ffmpeg/ffmpeg.html,
您可以运行本机可执行文件通过您想要的所有参数。