Python 为什么我的ffmpeg流子进程冻结在6分钟?

Python 为什么我的ffmpeg流子进程冻结在6分钟?,python,ffmpeg,Python,Ffmpeg,我在一个shell脚本中有一个ffmpeg管道,该脚本在Python中作为子进程启动。出于某种原因,当Python启动脚本时,我的视频流非常完美,然后每次冻结大约6分钟。冻结后,如果我尝试手动运行脚本,则会出现以下错误: 无效的MIT-MAGIC-COOKIE-1 keyxcb\u连接\u已\u错误()返回true 无法进行符号链接 /root/.pulse/65F3DED611649C6DCF9EBAE2000046D运行时到 /tmp/pulse-PKDHTXMMMR18N:无法执行输入/输

我在一个shell脚本中有一个ffmpeg管道,该脚本在Python中作为子进程启动。出于某种原因,当Python启动脚本时,我的视频流非常完美,然后每次冻结大约6分钟。冻结后,如果我尝试手动运行脚本,则会出现以下错误:

无效的MIT-MAGIC-COOKIE-1 keyxcb\u连接\u已\u错误()返回true 无法进行符号链接 /root/.pulse/65F3DED611649C6DCF9EBAE2000046D运行时到 /tmp/pulse-PKDHTXMMMR18N:无法执行输入/输出错误[alsa@0x4b2f0] 打开音频设备hw:0,0(设备或资源繁忙)hw:0,0: 输入/输出错误

但是,如果我重新启动并手动运行脚本,音频和视频将无限期地正常播放

有人知道为什么会这样吗?谢谢

这是我的pipline.sh文件:

sudo ffmpeg -f video4linux2 -video_size 640x480 -framerate 30 -input_format yuyv422 -i /dev/video7 -f alsa  -i hw:0,0 -map 0:0 -map 1:0  -b:v 120k -bufsize 120k -vcodec libx264 -preset ultrafast -crf 28 -acodec aac -strict -2  -f flv -metadata streamName= StreamName tcp://71.192.1.22
这是我在Python中使用的子流程:

subprocess.Popen("sudo ./ffmpeg_script.sh", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

我的猜测是:脚本没有足够快地耗尽标准输出管道,而且它充满了调试输出,以至于ffmpeg的标准输出耗尽了缓冲区空间,并且冻结了。

谢谢。我正在python文档中搜索一种方法,以便在它充满时将其排空。你知道我会怎么做吗?你真的在乎那些数据吗?如果是这样的话,请在它出现时对其进行处理,或者将stdout设置为一个临时文件,您可以在以后空闲时解析它。如果没有,请不要捕捉它。谢谢你的帮助。我不需要这些数据。使用stdout=None,stderr=None使其工作。一开始我没有工作,因为我没有“无”的帽子。嗯,我以为我有。它可以在终端上运行,但是当我的python脚本使用upstart启动时,ffmpeg子进程不会启动。这可能是因为$PATH在终端和upstart中的值不同。确保upstart的$PATH中有ffmpeg,或者在脚本中添加ffmpeg的完整路径。