每当我发出以下命令时," intermediate.ts
"输出文件已创建:
getRuntime.exec("ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts")
即使使用这样的String[]
:
String[] cmd = {
"sh",
"-c",
"./ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts"
}
但是当我打开终端模拟器并写同样的东西时,我得到了正确的输出,我正在寻找。通过Java我可以从
获得输出ffmpeg -help
但无法使用FFMpeg和Java的getRuntime.exec()
创建文件。我做错了什么?
答案 0 :(得分:1)
当您在Android应用程序的上下文中运行ffmpeg时,其工作目录是文件系统的根目录,并且以只读方式挂载。您可以指定输出文件的完整路径,或使用exec(cmd, null, dir)
。输出文件必须转到您的应用具有写权限的目录,例如 myActivity.getFilesDir()或 myPackageInfo.applicationInfo.dataDir 。
您不需要通过 sh 运行 ffmpeg ,但您必须提供可执行文件的完整路径,或通过的Runtime.exec()强>