Java Process Builder运行ffmpeg命令的速度非常慢



我正在尝试使用ProcessBuilder在Java中运行ffmpeg。我在Windows上。它运行良好。但不确定为什么它比我在命令提示符或PowerShell中运行相同命令时慢得多。

为什么?有什么方法可以提高速度吗?

processBuilder.command("C:\Windows\System32\cmd.exe", "/c","ffmpeg.exe", "-y", "-i", video,"-vf","scale=720:-1","out.mp4");
processBuilder.redirectErrorStream(true);
try {
process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

String line="";
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
System.err.println("Error in processBuilder. ");
}

您有两次启动,删除第一次,否则重定向将不起作用:

process = processBuilder.start();

如果您的子进程非常冗长,问题可能只是System.out.println(),因为向某些Windows cmd/终端的多行输出可能异常缓慢。您可以通过注释打印或在开始前捕获到基于文件的输出来验证是否存在这种情况:

processBuilder.redirectOutput(new File("stdout.log"));

不要忘记在末尾添加状态检查,并与ffmpeg文档交叉检查rc:

int rc = process.waitFor();

最新更新