FFmpeg向YouTube推流画面损坏,重启恢复的问题排查及解决
问题
我用Python结合FFmpeg向YouTube推送图片流,整体运行正常,但偶尔会出现流损坏、画面呈现异常的情况——此时必须重启FFmpeg才能恢复正常;有时因网络错误自动重启流后,仍可能再次出现损坏。
Windows测试时从未出现该问题,仅在Linux服务器上发生。我使用的FFmpeg版本为3.2.18-0+deb9u1,生成的图片保存为文件时无异常。
用到的FFmpeg参数如下:
cmd_out = ['ffmpeg', '-re', '-f', 'concat', '-i', os.path.join(BASE_DIR, 'music', 'music.txt').replace('\\', '/'), '-r', '1', '-f', 'image2pipe', '-vcodec', 'png', '-r', '1', '-i', '-', '-c:v', 'libx264', '-c:a', 'copy', '-g', '4', '-f', 'flv', 'rtmp://a.rtmp.youtube.com/live2/{}'.format(stream_key)]
请问该问题的原因是什么?如何修复?
解决方案
问题根源是Docker环境中使用的FFmpeg版本过旧,更换为静态构建版本后问题解决。
Docker配置调整如下:
WORKDIR /app ADD ./ffmpeg /app RUN mv ffmpeg /usr/local/ffmpeg RUN chmod +x /usr/local/ffmpeg
目前该错误已彻底解决。
内容的提问来源于stack exchange,提问作者unpwn
相关产品推荐
相关产品推荐

