Runtime.getRuntime()。exec()没有在centos上运行ffmpeg命令

时间:2013-12-23 13:43:25

标签: java linux ffmpeg

我在centos机器上做如下

String fileName = "ffmpeg -i file:///home/xyz %d.png";
Runtime.getRuntime().exec(fileName);

xyz是mp4文件,我想要创建多个不同的图像帧

当我按照上面的java应用程序运行时它无法工作但是如果我尝试直接在终端上这样做它正在工作,请建议可能出错?

2 个答案:

答案 0 :(得分:1)

问题可能是程序输出大量标准输出或错误。如果您不使用此输出,Java程序可能会挂起。以这样的方式使用Process #getErrorStream()getOutputStream()

is = new BufferedReader(new InputStreamReader(proc.getInputStream()));

while ((line = is.readLine()) != null)
  System.out.println(line);

这也可以帮助您分析运行命令的任何错误输出。您可能需要为两个流执行此操作。

此外,您可能需要等待子进程使用Process#waitFor终止,否则即使生成的子进程仍在后台运行,您的Java程序也可能正在完成执行(除非这是您想要的)。

答案 1 :(得分:0)

道歉,如果这么晚,希望对某些人有用。 正如@rodion所预见的,这肯定与ffmpeg的特定输出有关。

我尝试了-nostats -loglevel 0个选项,然后Runtime.getRuntime().exec("");正确地执行了ffmpeg