2016-05-06 34 views
1

我在Windows機器上使用FFMPEG庫文件將媒體文件從一種格式轉換爲另一種格式,所以我嘗試通過java調用FFMPEG Windows命令。它通過在正常的java程序中調用Process p = Runtime.getRuntime().exec("ffmpeg -i " + xxx.mp4 + " " + yyy.wav + "");來工作。但是當我啓動我的項目到TOMCAT服務器時,它會拋出異常,如java.io.IOException: cannot run program : "ffmpeg" CreateProcess error=2, the system cannot find the file specified。我重視我下面的代碼..通過Java Tomcat服務器運行Windows命令

String sVideo = "C:\\Users\\Administrator\\Desktop\\voice.amr"; 
    String dVideo2 = "C:\\Users\\Administrator\\Desktop\\sVideo.wav"; 
    try { 
     Process p = Runtime.getRuntime().exec("ffmpeg -i " + sVideo + " " + dVideo2 + "");   
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

上面的代碼工作,當運行這個類文件分開,但是當我在我的項目中使用此代碼,運行我的Tomcat服務器項目時,它拋出異常。提前致謝。

回答

1

我猜你當前的目錄是在你的tomcat(webapp)的某個地方,你是否嘗試使用完整的ffmpeg.exe路徑呢?

1

您可以使用ProcessBuilder創建包含路徑文件夾的進程以運行該程序。

String folder = "C:\\Users\\Administrator\\Desktop"; 
String[] cmdarray = new Sring[]{"ffmpeg -i","voice.amr", "sVideo.wav"}; 
ProcessBuilder processBuilder = new ProcessBuilder(cmdarray); 
processBuilder.directory(new File(folder)); 
Process process = processBuilder.start(); 

int exitCode = -1; 
boolean finished = false; 
while (!finished) { 
    exitCode = process.waitFor(); 
    finished = true; 
} 

cmdarray將有您的可執行文件和參數,如果需要的話。