我想执行一个ffmpeg
命令,我正在使用的方法适用于我的列表上的每个命令,除了下面的一个包含双引号来设置过滤器(-vf)参数
ffmpeg -i 2012-12-27.mp4 -vf "movie=bb.png [movie]; [in] [movie] overlay=0:0 [out]" -vcodec libx264 -acodec copy out.mp4
我试过改变单引号的引号而没有运气。该命令在android终端上使用单引号和双引号。
我正在开发的应用程序使用大约5个ffmpeg
命令,除了这个命令之外的所有工作都是这个错误吗?
我找不到这个问题的具体解决方案,将args打成一个数组,然后按照其他地方的建议将其传递给runtime().exec()
似乎不起作用,或者只是试图用\解除引号“不行。
上面命令中引用的两个文件都位于sdcard中,我删除了命令的串联,这样事情就不会变得混乱,请放心,当引用完整路径时,这些命令在终端中工作。文件。 我使用stringbuilder和`getexternalstorageDirectory()。getabsolutepath()来传递传递给getRuntime()。exec()的字符串,以获取每个文件的路径,就像我在使用流程类时使用以前的命令一样。
我正在使用Jelly Bean 4.2,如果有任何意义的话。
答案 0 :(得分:4)
尝试
getRuntime().exec( new String[] { "ffmpeg", "-i", "2012-12-27.mp4", "-vf", "movie=bb.png [movie]; [in] [movie] overlay=0:0 [out]", "-vcodec", "libx264", "-acodec", "copy", "out.mp4" } );
属于一起的参数(例如引用的-vf过滤字符串)需要位于同一个数组元素中。
答案 1 :(得分:2)
字符串数组不能正常工作?
java.lang.Runtime.exec(String[])
java.lang.Runtime.exec(String[], String[], File)
Runtime.exec(new String[]{"ffmpeg","-i","2012-12-27.mp4","-vf",
"movie=bb.png [movie]; [in] [movie] overlay=0:0 [out]",
"-vcodec","libx264","-acodec","copy","out.mp4"});
您应该将所有参数放入数组中。