我在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
之类的异常。我在下面附上了我的代码..
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 Server中运行我的项目时引发异常。提前谢谢。
答案 0 :(得分:1)
我猜你现在的dir在你的tomcat(webapp)的某个地方,你是否尝试使用完整的ffmpeg.exe路径?
答案 1 :(得分: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
将包含您的可执行文件和参数。