1

我在 Java 中运行 ffmpeg。使用p = Runtime.getRuntime().exec(command);它用于通过 red5 服务器流式传输视频。

我的问题是ffmpeg需要按下“q”才能停止。我怎样才能做到这一点?如何将 q 字符发送到正在运行的进程,以便它执行p.destroy();或类似的东西?目前它永远运行,直到我在任务管理器中终止该进程。我正在使用Windows7。

4

2 回答 2

2

To inject the 'q' key into the running process, you can do something like this:

OutputStream ostream = p.getOutputStream(); //Get the output stream of the process, which translates to what would be user input for the commandline
ostream.write("q\n".getBytes());       //write out the character Q, followed by a newline or carriage return so it registers that Q has been 'typed' and 'entered'.
ostream.flush();                          //Write out the buffer.

This should successfully 'quit' the running ffmpeg process.

于 2014-01-09T18:06:35.753 回答
0

您可以通过-nostdin作为 FFMpeg 的参数之一传递来避免这种情况。这会禁用用户输入。

于 2021-04-28T12:10:05.840 回答