【发布时间】:2017-09-30 07:04:09
【问题描述】:
所以我有一个项目,它在 Python 中侦听按钮输入,并在按下某个按钮后从相机和外部麦克风录制视频,现在当我想停止录制时,我按下另一个按钮并停止录制相机和麦克风,然后我使用子进程模块调用 ffmpeg:
mergeFiles = subprocess.Popen("sudo ffmpeg -i /home/pi/Video/video.mov -i /home/pi/Audio/test.wav -acodec copy -vcodec copy -map 0:v -map 1:a -shortest /media/pi/USB/Output/output.mkv", shell=True)
合并我刚刚创建的音频和视频文件。
现在,一旦我调用 ffmpeg,它不会停止,直到我从键盘向进程发送信号中断...有没有办法让进程在完成合并后立即停止,或者自动终止/一定时间后杀死ffmpeg?
我已经阅读过类似的其他帖子,但没有一个解决方案适合我。我无法使用 PID 终止进程,因为每次我查找 ffmpeg 的 PID 时,它都是一个不同的 ID,并且调用类似 合并文件.kill() 对我不起作用。
【问题讨论】:
-
mergeFiles.kill() 不起作用,因为 root 用户调用了 supproccess 命令。尝试更改 ffmpeg 的权限以允许普通用户或使用 sudo 用户运行整个脚本
-
我试过了,还是停不下来
-
你尝试了哪一个?
-
对不起,我尝试不以 root 身份调用 ffmpeg,只需省略“sudo”,使用 mergeFiles.kill() 仍然没有终止进程。
标签: python linux ffmpeg raspberry-pi subprocess