外部命令不能完全执行 - Java

Hri*_*tov 5 java ffmpeg runtime.exec

所以,我正在构建一个将.flv文件转换为其他格式的程序.为此,我正在使用ffmpeg,它在通过命令行执行时完美地完成了它的工作.例如:

ffmpeg -i C:\test.flv -acodec libmp3lame -y C:\test.mp3
Run Code Online (Sandbox Code Playgroud)

这个例子就像一个魅力 - 执行命令时没有一个问题.

但是当我尝试从Java类中执行相同的命令时会出现问题.我在try-catch块中执行此操作:

System.out.println("Start");
Process p = Runtime.getRuntime().exec("cmd /c ffmpeg -i C:\test.flv -acodec libmp3lame -y C:\test.mp3");
System.out.println("End");
Run Code Online (Sandbox Code Playgroud)

控制台打印"开始".它开始转换,但没有完成.
有人能帮助我吗?

Hri*_*tov 5

好吧,这个问题以一种非常意想不到的方式解决了.我只需要读取执行生成的输出.而且,瞧,该文件已被转换.

InputStream in = p.getErrorStream();
int c;
while ((c = in.read()) != -1)
{
    System.out.print((char)c);
}
in.close();
Run Code Online (Sandbox Code Playgroud)