2016-05-06 10 views
1

私はFFemegライブラリファイルを私の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のような例外がスローされます。別にこのクラスファイルを実行しますが、私は私のプロジェクトでこのコードを使用するときTOMCATサーバに私のプロジェクトを実行すると、それが例外をスローしたとき、私は、Java Tomcat Server経由で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(); 
    } 

コードの上..以下の私のコードを動作します添付しています。前もって感謝します。

答えて

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には、必要に応じて実行可能ファイルとパラメータがあります。

関連する問題