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

WebCodecs编码H264经GStreamer推SRT失败求助

解决SRT推流失败问题

以下是针对你遇到的SRT推流报错问题的具体排查和修复步骤:


1. 调整GStreamer管道元素顺序

你的原始管道在h264parse之前就强制设置了H264 caps,这会导致解析器无法正确识别流属性。修改管道顺序,先解析再应用caps:

gst-launch-1.0 -v udpsrc port=5555 ! h264parse ! video/x-h264, profile=baseline, framerate=30/1 ! mpegtsmux ! queue ! srtsink uri="srt://REDACTED:10000"
  • 先通过h264parse处理原始H264流,提取NALU和时间戳信息
  • 明确指定帧率参数,帮助mpegtsmux生成符合标准的TS包

2. 验证SRT连接可用性

先排除网络和服务器端问题:

  • 在云服务器上运行SRT测试接收端:
    srt-live-transmit srt://:10000 file:///dev/null
    
  • 用本地测试流推送到云服务器:
    gst-launch-1.0 videotestsrc ! x264enc profile=baseline ! h264parse ! mpegtsmux ! srtsink uri="srt://REDACTED:10000"
    

如果测试流能正常推送,说明问题出在WebCodecs→UDP的流数据上;如果仍报错,检查云服务器防火墙是否开放10000端口(SRT基于UDP)。

3. 修复流时间戳缺失问题

WebCodecs输出的流可能缺少PTS/DTS时间戳,导致mpegtsmux生成无效TS包。添加identity元素注入系统时钟时间戳:

gst-launch-1.0 -v udpsrc port=5555 ! identity sync=true ! h264parse ! video/x-h264, profile=baseline, framerate=30/1 ! mpegtsmux ! queue ! srtsink uri="srt://REDACTED:10000"

4. 启用GStreamer调试日志定位问题

添加调试日志获取更详细的错误信息:

GST_DEBUG=3 gst-launch-1.0 -v udpsrc port=5555 ! h264parse ! video/x-h264, profile=baseline, framerate=30/1 ! mpegtsmux ! queue ! srtsink uri="srt://REDACTED:10000"

日志会显示libsrt报错的具体原因,比如数据格式错误或连接超时。

5. 备选方案:改用RTP封装推送

如果TS封装仍有问题,尝试用RTP封装直接推送(需接收端对应处理RTP流):

gst-launch-1.0 -v udpsrc port=5555 ! h264parse ! video/x-h264, profile=baseline, framerate=30/1 ! rtph264pay config-interval=1 ! queue ! srtsink uri="srt://REDACTED:10000"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:12:11