You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python监听并解码RTMP视频流?遇参数报错求解决

解决Python av库监听RTMP流时的listen参数错误问题

错误原因

av.open()方法本身并不支持listen这个关键字参数,你想要设置的-listen 1是FFmpeg的全局选项,需要通过av库提供的options参数传递给底层FFmpeg。

修正后的代码

import av

# 通过options字典传递FFmpeg的listen选项
container = av.open('rtmp://localhost:1935/live/app', options={'listen': '1'})

try:
    for frame in container.decode(video=0):
        # 转换为BGR格式的numpy数组
        frame_bgr = frame.to_ndarray(format='bgr24')
        # 在这里添加你的帧处理逻辑
        print(f"获取到视频帧,尺寸:{frame_bgr.shape}")
except KeyboardInterrupt:
    print("停止监听RTMP流")
finally:
    container.close()

关键说明

  • options参数是av库用来传递FFmpeg全局配置的入口,所有FFmpeg命令行中的全局选项都可以以键值对的形式传入,值需要是字符串类型(比如'1'而不是数字1)
  • 建议添加异常捕获和资源释放逻辑,避免流中断时出现资源泄漏
  • 如果运行仍然报错,先执行pip install -U av更新到最新版本的av库,旧版本可能对RTMP监听的支持不完善

内容的提问来源于stack exchange,提问作者Li-GanMa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 21:12:08