我运行java进程使用ffmpeg.exe转换视频。
Runtime rt = Runtime.getRuntime();
String cmd = FFMPEGFULLPATH + " -y -i " + '"' + mpeg4File + '"' + " -vcodec libx264 -vsync 2 " + '"' + H264file + '"';
Process pr = rt.exec(cmd);
ThreadedTranscoderIO errorHandler = new ThreadedTranscoderIO(pr.getErrorStream(), "Error Stream");
errorHandler.start();
ThreadedTranscoderIO inputHandler = new ThreadedTranscoderIO(pr.getInputStream(), "Output Stream");
inputHandler.start();
try {
pr.waitFor();
} catch (InterruptedException e) {
LiveApplication.logger.info("Some shit happens during convertation 2 ");
throw new IOException("UseTranscoderBlocking - Run_FFMPEG - process interrupted " + e);
}
但是当进程开始时,有时尤其是大文件,但并不总是得到这个窗口消息:
这仅在Windows Server 2008上发生,而在Windows 7上没有发生。
我有两个问题:
答案 0 :(得分:1)
查看Process.waitFor()的返回值。如果进程崩溃,则可能返回不同的错误代码(可能为负数)。
有关退出代码如何受到不同操作系统崩溃影响的一些示例,请参阅here。