Java getruntime()exec()命令中带双引号

Java getruntime()exec()命令中带双引号,java,android,ffmpeg,Java,Android,Ffmpeg,我想执行一个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命令,除了

我想执行一个
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
命令,除了这一个,所有命令都可以工作,这是不是有什么bug

我找不到这个问题的具体解决方案,将参数分解成一个数组,然后将其传递给
runtime().exec()
,就像其他地方建议的那样,似乎不起作用,或者简单地尝试用\“转义引号也不起作用

上面命令中引用的两个文件都位于SD卡中,我删除了命令的连接,这样事情就不会变得混乱,请放心,当引用文件的完整路径时,这些命令在终端中工作。 我使用stringbuilder和`getexternalstorageDirectory().getabsolutepath().getabsolutepath()继续传递给getRuntime().exec()的字符串,以获取每个文件的路径,就像我在使用process类时对以前的命令所做的那样

我正在使用Jelly Bean 4.2,以防它有任何意义。

试试看

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筛选器字符串)必须在同一个数组元素中。

字符串数组不能正常工作吗

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"});

你应该把所有的参数放在一个数组中。

我想你们都是对的,当我把数组放在一起的时候,我已经把你给弄糊涂了,我想323go首先得到了答案,非常感谢你们研究这个+1