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

时间:2012-12-29 04:50:35

标签: 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命令,除了这个命令之外的所有工作都是这个错误吗?

我找不到这个问题的具体解决方案,将args打成一个数组,然后按照其他地方的建议将其传递给runtime().exec()似乎不起作用,或者只是试图用\解除引号“不行。

上面命令中引用的两个文件都位于sdcard中,我删除了命令的串联,这样事情就不会变得混乱,请放心,当引用完整路径时,这些命令在终端中工作。文件。 我使用stringbuilder和`getexternalstorageDirectory()。getabsolutepath()来传递传递给getRuntime()。exec()的字符串,以获取每个文件的路径,就像我在使用流程类时使用以前的命令一样。

我正在使用Jelly Bean 4.2,如果有任何意义的话。

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

您应该将所有参数放入数组中。

相关问题