我添加了org.bytedeco.javacpp的ffmpeg-2.3-0-9.jar(https://www.versioneye.com/java/org.bytedeco.javacpp-presets:ffmpeg/2.3-0.9),我需要能够在我的Android应用程序中执行命令,例如:
ffmpeg -ss 00:00:00 -t 00:00:15 -i in.mp4 -codec copy out.mp4
但是,“ffmpeg”不是此jar公开的类或方法。有些帖子建议我在处理ffmpeg本机代码时应该使用exec方法,但是你如何做到这一点(如果这对这个库来说甚至是正确的事情)? 我正在尝试以下命令但没有成功。
Process p=Runtime.getRuntime().exec("/libs/ffmpeg-2.3-0.9 -i -i in.mp4 -codec copy out.mp4");
有什么建议吗?
答案 0 :(得分:0)
我决定使用FFmpeg4Android。它比使用JNI的任何东西都更加用户友好,并且它能够接受AsyncTask中的ffmpeg命令。进口是:
import com.netcompss.ffmpeg4android.GeneralUtils;
import com.netcompss.loader.LoadJNI;
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();
}
我希望这可以帮助那些人。唯一的问题是它会产生无法在VideoView内播放的损坏视频!不幸的是,另一个名为mp4parser的流行替代品也会产生类似损坏的mp4文件。