我正在处理一个比较奇怪的问题。
我已经为ffmpeg的旧版本编写了Python包装器(在Python 2.6.6中)。问题是,给定一个非常特殊的视频,它将ffmpeg
停止正常工作(笨拙的输出,完整的cpu使用率,没有结束阶段等),并且将python解释器与之一同关闭。
现在,如果我ffmpeg
直接从终端运行编码选项,并将有问题的视频作为输入,ffmpeg
则不会立即响应Ctrl-c
。我必须等待10秒钟或更长时间才能退出,并给我提示。但是,如果我改用“健康”视频,它将简单地打印Received signal 2: terminating.
并正常退出。
在python包装器中,我p.kill()
没有任何作用。行为完全相同,也就是我必须等待10秒钟才能退出程序。ffmpeg
当视频出现问题时,如何立即停止播放?
请注意,如果我进行了两次操作,无论如何Ctrl-c
我都会立即得到提示。
您如何执行FFmpeg子进程?有很多方法可以启动和监视Python中的进程。
我曾经处理这个确切的问题,因为我曾经为FFmpeg项目运行连续的自动化测试。当我需要调试它时,我将打印出程序认为与正在运行的FFmpeg进程相对应的PID 。然后,我将使用top
或ps
验证PID是否正确。Linux和Mac OS X之间存在一些奇怪的问题,这些问题涉及传递给Python函数的外壳参数以及PID是否与FFmpeg进程或启动FFmpeg进程的外壳相关。
另请参阅:我写的这篇老博客文章探讨了这个问题以及众多的答复。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句