我在另一台机器上运行ffmpeg进行屏幕捕获.我希望能够阻止它远程录制.FFMPEG要求按下q以停止编码,因为它必须完成一些完成以干净地完成文件.我知道我可以用kill/killall杀死它但是这会导致视频损坏.
Press [q] to stop encoding
Run Code Online (Sandbox Code Playgroud)
我在谷歌专门为此找不到任何东西,但有些人建议回复到/ proc // fd/0将起作用.
我试过这个,但它并没有停止ffmpeg.然而,q显示在运行ffmpeg的终端中.
echo -n q > /proc/16837/fd/0
Run Code Online (Sandbox Code Playgroud)
那么如何将角色以这样的方式发送到另一个现有流程呢?就好像它是在本地键入的一样?还是有另一种方法可以干净地远程停止ffmpeg.
小智 15
这是我在遇到这个问题时发现的一个巧妙的技巧:创建一个空文件(它不必是命名管道或任何东西),然后在停止录制时向它写'q'.
FFmpeg停止,好像它从终端STDIN得到'q'.
sas*_*alm 12
较新版本的ffmpeg不再使用'q',至少在Ubuntu Oneiric上,而是他们说按Ctrl + C来阻止它们.因此,对于较新的版本,您只需使用'killall -INT'向它们发送SIGINT而不是SIGTERM,它们应该干净地退出.