我下面做的CentOS機器上的ffmpeg的命令調用Runtime.getRuntime()。EXEC()未運行在CentOS
String fileName = "ffmpeg -i file:///home/xyz %d.png";
Runtime.getRuntime().exec(fileName);
xyz是MP4文件,我想,爲了創造不同的圖像幀數
當我通過Java應用程序運行上述它不工作,但如果我試圖直接在終端上這樣做,請建議爲什麼可能是錯誤的?
我下面做的CentOS機器上的ffmpeg的命令調用Runtime.getRuntime()。EXEC()未運行在CentOS
String fileName = "ffmpeg -i file:///home/xyz %d.png";
Runtime.getRuntime().exec(fileName);
xyz是MP4文件,我想,爲了創造不同的圖像幀數
當我通過Java應用程序運行上述它不工作,但如果我試圖直接在終端上這樣做,請建議爲什麼可能是錯誤的?
問題可能是程序輸出大量標準輸出或錯誤。如果您不使用此輸出,Java程序可能會掛起。使用Process
#getErrorStream()
和getOutputStream()
,在這樣的方式:
is = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while ((line = is.readLine()) != null)
System.out.println(line);
這也將幫助您分析從運行此命令的任何輸出誤差。您可能需要爲這兩個流執行此操作。
此外,您可能需要等待子進程終止,使用Process#waitFor
,否則即使生成的子進程仍在後臺運行(除非這是您想要的),否則您的Java程序可能會完成執行。
Thx救了我的命。 – wangqi060934
%d如何設置?這似乎可能是一個無效的文件。你會得到任何類型的錯誤信息? – DaveH
ffmpeg -i file:/// home/xyz%d.png在我在本地終端上運行時運行良好。這裏%d正在爲圖像創建不同的編號.. –
我試圖刪除%d也..不工作 –