我正在另一台机器上运行 ffmpeg 进行屏幕捕获。我希望能够远程停止它的录制。 FFMPEG 要求按下 q 以停止编码,因为它必须进行一些最终确定才能干净地完成文件。我知道我可以用 kill/killall 杀死它,但这会导致视频损坏。
Press [q] to stop encoding
我在谷歌上找不到任何专门针对此的内容,但有人建议回显到/proc//fd/0 会起作用。
我已经试过了,但它不会停止 ffmpeg。然而,q 显示在运行 ffmpeg 的终端中。
echo -n q > /proc/16837/fd/0
那么我怎样才能将字符发送到另一个现有进程,就像在本地输入一样?或者是否有另一种方法可以干净地远程停止 ffmpeg。
最佳答案
当我遇到这个问题时,我发现了一个巧妙的技巧:创建一个空文件(它不必是命名管道或任何东西),然后在停止记录时向它写入“q”。
- $ 触摸停止
- $ <./stop ffmpeg -i ... output.ext >/dev/null 2>>Capture.log &
- $等待停止时间
- $ echo 'q' > 停止
FFmpeg 停止,就好像它从终端 STDIN 得到“q”一样。
关于linux - 如何远程停止ffmpeg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9722624/