2013-12-23 116 views
0

我下面做的CentOS機器上的ffmpeg的命令調用Runtime.getRuntime()。EXEC()未運行在CentOS

String fileName = "ffmpeg -i file:///home/xyz %d.png"; 
Runtime.getRuntime().exec(fileName); 

xyz是MP4文件,我想,爲了創造不同的圖像幀數

當我通過Java應用程序運行上述它不工作,但如果我試圖直接在終端上這樣做,請建議爲什麼可能是錯誤的?

+0

%d如何設置?這似乎可能是一個無效的文件。你會得到任何類型的錯誤信息? – DaveH

+0

ffmpeg -i file:/// home/xyz%d.png在我在本地終端上運行時運行良好。這裏%d正在爲圖像創建不同的編號.. –

+0

我試圖刪除%d也..不工作 –

回答

1

問題可能是程序輸出大量標準輸出或錯誤。如果您不使用此輸出,Java程序可能會掛起。使用Process#getErrorStream()getOutputStream(),在這樣的方式:

is = new BufferedReader(new InputStreamReader(proc.getInputStream())); 

while ((line = is.readLine()) != null) 
    System.out.println(line); 

這也將幫助您分析從運行此命令的任何輸出誤差。您可能需要爲這兩個流執行此操作。

此外,您可能需要等待子進程終止,使用Process#waitFor,否則即使生成的子進程仍在後臺運行(除非這是您想要的),否則您的Java程序可能會完成執行。

+0

Thx救了我的命。 – wangqi060934

相關問題