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

树莓派使用GStreamer推流至RTMP服务器出现未知Segmentation fault如何解决

GStreamer RTMP推流段错误问题解决方案

根因说明

你使用的GStreamer 1.19.0属于开发迭代版本,rtmp2sink 插件在该版本存在未修复的野指针内存访问漏洞,在接收 flvmux 输出的流媒体数据时会触发内存越界,最终导致段错误,该问题仅在RTMP推流场景触发,所以替换为 fakesink、hlssink 时运行正常。

可行解决方法

  • 优先替换为稳定版本GStreamer
    1.19.x为非稳定开发版,建议降级到1.18.x稳定版或者升级到1.20.3及以上的后续稳定版,rtmp2sink 的段错误漏洞在1.20.3版本已被正式修复,直接安装对应稳定版即可解决问题。
  • 调整管道参数临时规避
    如果暂时不能更换GStreamer版本,可以通过修改管道配置解决问题:
    1. 将 rtmp2sink 替换为兼容性更好的旧版 rtmpsink 插件,同时调整x264编码参数适配RTMP协议要求,修改后的管道如下:
    gst-launch-1.0 --no-fault -v \
        rpicamsrc ! queue \
      ! x264enc bitrate=1000 byte-stream=true ! video/x-h264,profile=baseline ! queue \
      ! h264parse ! video/x-h264 ! queue \
      ! flvmux streamable=true name=mux ! queue \
      ! rtmpsink location=rtmp://my-cool-server.com/live/key sync=true
    
    1. 如果坚持使用 rtmp2sink,可以将 async-connect=true 修改为 async-connect=false,1.19.0版本中该插件的异步连接逻辑存在内存泄漏问题,关闭异步连接即可规避崩溃。
  • 修复编译依赖问题
    源码编译GStreamer前先安装 librtmp-dev 依赖包,之后重新编译 gst-plugins-bad 组件,确保RTMP相关插件完整编译,避免依赖缺失导致的运行异常。

内容的提问来源于stack exchange,提问作者acsmith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 08:24:07