fenghuang
V2EX  ›  FFmpeg

终止 ffmpeg 进程问题

  •  
  •   fenghuang · Mar 25, 2020 · 6527 views
    This topic created in 2307 days ago, the information mentioned may be changed or developed.

    最近在用 python 调用 ffmpeg 拉取网络流,有时候执行 kill -9 ffmpeg_pid 可以正常终止 ffmpeg 进程,但是有时候执行后 ffmpeg 进程就变成 [ffmpeg], 然后就无法 kill 了,python 进程也在阻塞状态,只能终止 python 进程,这个 [ffmpeg] 进程也退出了,这是什么情况?

    11 replies    2020-03-30 19:10:52 +08:00
    ClericPy
        1
    ClericPy  
       Mar 25, 2020
    没什么代码么, 直接听起来像是 kill 以后父进程没 wait 导致了僵尸进程, 进程标记有写它现在的状态和父进程吗
    Sasasu
        2
    Sasasu  
       Mar 25, 2020
    进程处于 zombie 状态
    fenghuang
        3
    fenghuang  
    OP
       Mar 25, 2020
    @ClericPy #1 上代码
    ```python
    cmd = 'ffmpeg ...'
    r = subprocess.Popen(shlex.split(cmd), stderr=subprocess.PIPE)
    time.sleep(3600)
    subprocess.run("kill -9 {pid}".format(pid=r.pid), shell=True)
    ```
    nightwitch
        4
    nightwitch  
       Mar 25, 2020   ❤️ 1
    @fenghuang ffmpeg 进程被你的 Python 进程拉起,父进程是 Python,你要在 Python 里面给它收尸体才不会变成僵尸进程。平时我们可以用 kill 杀进程是因为进程的父进程 init 会自动收尸。
    正确代码
    ```
    cmd = 'ffmpeg ...'
    r = subprocess.Popen(shlex.split(cmd), stderr=subprocess.PIPE)
    time.sleep(3600)
    r.terminate() #要求子进程结束
    r.wait() #给子进程收尸
    ```
    MoYi123
        5
    MoYi123  
       Mar 25, 2020
    往里面写一个 b‘q’ 就可以退出.
    fenghuang
        6
    fenghuang  
    OP
       Mar 25, 2020
    @MoYi123 #5 往哪里面写
    fenghuang
        7
    fenghuang  
    OP
       Mar 25, 2020
    @nightwitch #4 我试一下 非常感谢
    MoYi123
        8
    MoYi123  
       Mar 25, 2020
    Popen.communicate(input=b'q'),可以先在 shell 里试一下运行 ffmpeg xxx 后按 q 能不能退出
    Kobayashi
        9
    Kobayashi  
       Mar 25, 2020 via Android
    难道没有人注意到 subprocess 有超时参数可以传吗?
    fenghuang
        10
    fenghuang  
    OP
       Mar 30, 2020
    @MoYi123 #8 好的,我试试,谢谢
    fenghuang
        11
    fenghuang  
    OP
       Mar 30, 2020
    发现变成[ffmpeg]的原因了 ffmepg 进程自己卡死了,这时候什么命令都无法终止了,只能结束 python 主进程才行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   935 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 19:40 · PVG 03:40 · LAX 12:40 · JFK 15:40
    ♥ Do have faith in what you're doing.