SRT推流失败:遭遇Unsupported timestamp reference clock错误及FIXME日志
解决RTSP转SRT推流的GStreamer播放问题
问题重现
执行以下GStreamer管道尝试将RTSP源转SRT推流:
gst-launch-1.0 --gst-debug=3 rtspsrc location="rtsp://admin:admin@localhost/live.sdp" short-header=TRUE name=demux demux. ! rtph265depay ! queue ! video/x-h265 ! mpegtsmux name=mux1 ! srtsink uri=srt://:8888 demux. ! queue ! rtpmp4adepay ! aacparse ! mux1.
运行后出现大量FIXME日志,且VLC无法播放推流内容。
日志分析
大部分FIXME日志属于GStreamer元素的非致命开发提示,不直接导致播放失败:
- 随机stream-id提示:fakesrc元素的内部实现细节,不影响功能
- rtpjitterbuffer时钟提示:RTSP源时钟格式未被完全支持,可通过配置缓解
- rtph265depay的DONL提示:源流未携带DONL字段,元素默认兼容处理,无需修改
- srtsink的group-id提示:上游元素未实现group-id,不影响流传输
真正导致播放失败的原因是流格式兼容性问题和传输配置缺失。
修改后的推流管道
gst-launch-1.0 --gst-debug=3 rtspsrc location="rtsp://admin:admin@localhost/live.sdp" latency=200 do-retransmission=true name=demux \ demux. ! application/x-rtp,media=video,encoding-name=H265 ! rtph265depay ! h265parse ! queue ! mpegtsmux name=mux1 \ demux. ! application/x-rtp,media=audio,encoding-name=MPEG4-GENERIC ! rtpmp4adepay ! aacparse ! queue ! mux1. \ mux1. ! srtsink uri=srt://:8888 latency=200 sync=false
关键修改点说明
- RTSP源优化:
- 添加
latency=200:设置接收延迟,适配RTSP流的网络波动 - 添加
do-retransmission=true:启用RTSP重传,减少丢包
- 添加
- 明确RTP caps过滤:
- 给视频/音频流添加精准的RTP格式过滤,避免元素自动协商出错
- 视频流补全解析:
- 插入
h265parse:将RTSP解封装后的H.265裸流转换为mpegtsmux兼容的标准比特流格式
- 插入
- SRT传输配置:
- 添加
latency=200:匹配RTSP接收延迟,保证流同步 - 添加
sync=false:关闭硬同步,避免时钟不兼容导致的播放卡顿/无画面
- 添加
VLC播放配置
确保VLC已安装SRT插件(如Ubuntu下执行sudo apt install vlc-plugin-srt),然后使用以下命令播放:
vlc srt://@:8888
内容的提问来源于stack exchange,提问作者abhinav gorle
相关产品推荐
相关产品推荐

