【问题标题】:Terminating FFMPEG from Python using Linux使用 Linux 从 Python 中终止 FFMPEG
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2020-07-14
    • 2021-07-18
    • 2022-01-03
    相关资源
    最近更新 更多