簡體   English   中英

getruntime()exec()在命令中用雙引號引起來

[英]getruntime() exec() with double quotes in command

我想執行一個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,以防萬一。

嘗試

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

您應該將所有參數放入數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM