每当我发出以下命令时,都不会创建"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()创建文件。我做错了什么?
发布于 2017-03-18 21:42:22
当您在Android应用程序的上下文中运行ffmpeg时,它的工作目录是文件系统的根目录,并且它被挂载为只读。可以指定输出文件的完整路径,也可以使用exec(cmd, null, dir)。输出文件必须转到应用程序具有写权限的目录,例如myActivity.getFilesDir()或myPackageInfo.applicationInfo.dataDir.。
您不需要通过Runtime.exec() sh运行ffmpeg,但是必须给可执行文件提供完整的路径,或者通过的第二个参数指定路径。
https://stackoverflow.com/questions/42878815
复制相似问题