当我在 Windows 下使用 Bash 脚本捕获屏幕时ffmpeg -i desktop
,我无法使用 结束捕获taskkill /f
,因为 FFmpeg 不会写入 MP4 标头。
必须用control+将其关闭C。
当 FFmpeg 在后台运行时,如何向其发送control+ ?C
答案1
要停止 ffmpeg,你可以signal.CTRL_C_EVENT
用 python 的发送os.kill
,但你必须将其发送到WINPID,而不是 PID:
WINPID=$(ps aux | grep ffmpeg | awk '{print $4}')
python -c "import os, signal; os.kill($WINPID, signal.CTRL_C_EVENT)"
请看这里的完整示例:
https://gist.github.com/elsamuko/9c3fe69f00a0f847251ffa3ef1d080a2
参考:
https://trac.ffmpeg.org/ticket/6336
https://bugs.python.org/issue42962