【发布时间】:2012-04-01 03:09:50
【问题描述】:
我正在另一台机器上运行 ffmpeg 进行屏幕截图。我希望能够远程停止它的录制。 FFMPEG 要求按下 q 以停止编码,因为它必须进行一些最终确定才能干净地完成文件。我知道我可以用 kill/killall 杀死它,但这会导致视频损坏。
Press [q] to stop encoding
我在谷歌上找不到任何专门针对此的内容,但有人建议回显到 /proc//fd/0 会起作用。
我已经尝试过了,但它并没有停止 ffmpeg。然而,q 显示在运行 ffmpeg 的终端中。
echo -n q > /proc/16837/fd/0
那么我怎样才能将一个字符发送到另一个现有进程,就好像它是在本地输入的一样?还是有另一种方法可以干净地远程停止ffmpeg。
【问题讨论】:
-
较新版本的 ffmpeg 不再使用 'q' 了,至少在 Ubuntu Oneiric 上,他们说要按 Ctrl+C 来停止它们。因此,对于较新的版本,您可以简单地使用“killall -INT”向他们发送 SIGINT 而不是 SIGTERM,他们应该干净地退出。
-
@satuon:那个版本的 Ubuntu 很可能使用 avconv(分叉的 Libav 项目的一部分)。该实用程序已将“q”作为选项删除;主要的 FFmpeg 仍然有它。
-
我发现我可以使用 kill -2 干净地停止 ffmpeg。不过,我仍然对如何模拟按下其他应用程序的按键感兴趣。
-
@satuon 您想添加您对 Ctrl+C 的建议作为答案,以便我接受吗?
-
好的,我将其粘贴为答案。