弱网传输

SRT 弱网推流怎么调:延迟、丢包、重传和端到端测试

说明 SRT latency 参数、RTT、丢包重传、带宽余量、Caller/Listener 模式和端到端延迟的关系,并给出弱网回传的调试顺序。

SRT 解决的是传输可靠性,不是自动降延迟

SRT 适合公网、移动网络和有一定丢包抖动的回传链路。它通过接收缓冲和重传给丢失的数据补救机会,但这段缓冲本身也会增加传输等待。因此,SRT 的设置不是越小越好,也不是把 latency 调大就一定稳定。

项目真正要平衡的是三件事:网络往返时间和抖动、可接受的端到端延迟、编码码率与实际可用带宽。

先确认 Caller、Listener 和网络入口

一端作为 Listener 监听端口,另一端作为 Caller 主动连接。放在公网侧或有固定端口映射的一端通常更适合 Listener;位于复杂 NAT 后的远端设备通常使用 Caller 主动发起连接。

联调前应确认公网地址、监听端口、UDP 放行、容器到宿主的端口映射,以及双方使用的 streamid、passphrase 和传输模式。连接都没有建立时,先解决这些问题,不要提前调整延迟参数。

latency 参数应该怎么起步

SRT latency 是为网络抖动和丢包重传预留的时间,不是摄像头到播放器的最终延迟。可以从当前产品或编码端的稳定默认值开始,在固定码率和固定网络条件下逐步调整。

如果 RTT 较高、抖动明显或重传包经常来不及到达,需要增加 latency;如果网络稳定、用途是远程控制或低延迟监看,可以小幅降低,但每次调整后都要重新观察丢帧和卡顿。StreamGate 当前 SRT 回传示例以 120 ms 作为基础值,实际项目应按目标网络复测。

实时视频应使用 live 传输类型。启用过期包丢弃(如 tlpktdrop)可以避免网络恢复后继续播放大量旧画面,但会牺牲无法及时重传的数据,应结合业务对连续性和实时性的要求决定。

带宽不足时,加大缓冲也解决不了

编码码率长期接近或超过上行可用带宽时,发送队列会持续积压。更大的 latency 只能延后问题,不能创造带宽。弱网回传应为码率预留余量,并控制瞬时峰值、GOP 和音频码率。

测试时不要只看运营商标称带宽。记录持续可用上行、峰值码率、RTT、抖动和丢包,并在业务高峰时段复测。移动网络还要观察小区切换或信号变化后的恢复。

用指标区分丢包、重传和播放卡顿

建议同时观察:

  • 发送与接收码率是否稳定,是否长期低于编码输出。
  • RTT、丢包数、重传数和来不及恢复的包数。
  • 发送队列或接收缓冲是否持续增加。
  • 网关收到首包和首个可解码帧的时间。
  • 浏览器首帧、卡顿次数、重连时间和稳定阶段延迟漂移。

SRT 统计正常但浏览器仍卡顿时,应继续检查网关转发、转码、播放缓冲和终端解码;不要把整条链路的问题都归到 SRT。

在网关项目里的典型链路

远端编码端可以向 StreamGate 所在服务器的 SRT Listener 推流,网关在本机接入该视频后,再提供浏览器预览、录像、回放和业务系统接口。这样把不稳定的公网回传与内网播放、存储链路分开,排障时也能判断问题位于远端上行、SRT 传输还是网关输出。

StreamGate 摄像头接入、SRT 回传与浏览器播放架构
StreamGate 的 SRT 回传位置SRT 负责跨网回传;接入后的预览、录像和接口仍由网关统一管理。查看 StreamGate 产品页

一个可复现的调试顺序

  1. 在同一局域网内先确认 Caller/Listener、地址、端口和 streamid 可用。
  2. 固定编码分辨率、帧率、码率和 GOP,记录无丢包时的基础延迟。
  3. 接入目标公网,记录 RTT、抖动、丢包、重传和端到端延迟。
  4. 一次只调整一个参数,先保证不持续积压,再在稳定性与延迟之间取值。
  5. 使用真实画面时钟对比源端和播放端,不能把 SRT latency 当成最终结果。
  6. 连续运行并覆盖网络波动、断网重连和服务重启。

常见误区

把 latency=120 ms 当成端到端延迟。 实际结果还包括采集、编码、网关处理、播放缓冲、解码和显示。

遇到卡顿就不断加大 latency。 如果根因是带宽不足或编码峰值过高,缓冲只会让延迟继续累积。

只测握手成功。 连接成功不能说明长时间重传、网络切换和播放恢复可靠。

只看播放器感受。 没有 RTT、丢包、重传、码率和时钟对比,就很难判断调整是否有效。

这篇内容是否有帮助?反馈仅用于改进文章内容。