SRT(Secure Reliable Transport)是一种开源的视频传输协议,专为高丢包、高延迟网络环境设计,结合了UDP的低延迟和TCP的可靠性,广泛应用于直播、远程制作、视频会议等场景。
-
定位:SRT协议的官方C/C++实现库,由Haivision和社区维护,提供高可靠、低延迟的流媒体传输能力。
-
核心功能:
-
支持SRT协议的全部特性(ARQ重传、FEC、AES加密、自适应码率)。
-
跨平台(Windows/Linux/macOS),提供C API和C++封装。
-
与FFmpeg、GStreamer等主流多媒体框架集成。
-
1. SRT的核心优势
特性 | 描述 |
---|---|
低延迟 | 基于UDP,支持端到端延迟可控制在 100ms~500ms(可配置)。 |
抗丢包 | 通过ARQ(自动重传请求)和FEC(前向纠错)恢复丢包,支持 30%+ 丢包率。 |
安全性 | 内置AES加密(128/256位),防止数据窃听。 |
自适应码率 | 动态调整发送速率,避免网络拥塞。 |
多路复用 | 支持单端口多流传输,降低资源占用。 |
2. SRT的工作原理
(1) ARQ(自动重传请求)
-
丢包检测:接收端通过序列号检测丢包,发送NACK(丢包重传请求)。
-
选择性重传:仅重传丢失的包,而非全部数据,减少带宽浪费。
-
重传超时:可配置超时时间(默认250ms),超时后放弃重传,避免延迟累积。
(2) FEC(前向纠错)
-
可选功能,在数据包中加入冗余信息,允许接收端直接恢复少量丢包(无需重传)。
(3) 自适应传输
-
带宽探测:持续监测网络带宽,动态调整发送码率。
-
延迟控制:通过缓冲区(Latency Buffer)平滑网络抖动