使用Linux从Python终止FFMPEG

问题描述 投票:1回答:1

所以我有一个项目,用于监听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,并且调用mergeFiles.kill()之类的东西对我来说不起作用。

python linux ffmpeg raspberry-pi subprocess
1个回答
0
投票

我认为这样做的原因是因为ffmpeg命令启动了第二个进程而你没有第二个进程的Pid(只是猜测我不是专家)。

我的解决方案是当我想终止ffmpeg时将pkill ffmpeg作为子进程调用。 (https://en.wikipedia.org/wiki/Pkill)。

© www.soinside.com 2019 - 2024. All rights reserved.