每当我发出以下命令时,都不会创建“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() 创建文件。我做错了什么?
最佳答案
当您在 Android 应用程序的上下文中运行 ffmpeg 时,其工作目录是文件系统的根目录,并且以只读方式挂载。您可以指定输出文件的完整路径,或使用 exec(cmd, null, dir)
。输出文件必须转到您的应用程序具有写入权限的目录,例如myActivity.getFilesDir() 或 myPackageInfo.applicationInfo.dataDir。
你不需要通过sh运行ffmpeg,但你必须给出可执行文件的完整路径,或者通过Runtime的第二个参数指定PATH .exec()
关于java - Android FFMPEG - 未创建输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42878815/