WebRTC 全景实战 (8):RTP/RTCP 媒体传输与 QoS
· 24 min read
Ch7 DTLS/SRTP 建立加密通道后,音频和视频以 RTP 包在 UDP 上传输。RFC 3550 定义了 RTP/RTCP——它的历史可追溯到 1992 年 Ron Frederick 的 nv 工具与 MBONE 多播实验(详见 Curious — RTP 历史)。
Frederick 在访谈中说:「如果一个东西需要实时数据流,又无需精确时序传输,它就可以从 RTP 中受益。」他最初为 MBONE 多播场景设计 RTP,后来 RTP 成为互联网实时音视频的事实标准。WebRTC 在 RTP 之上叠加了 SRTP 加密、AVPF 反馈 profile 和 TWCC 拥塞控制,但 RTP 包头结构与核心语义 thirty 年来未曾改变。
设计哲学
RTP 不要求数据按精确时序到达——它面向实时而非可靠。丢包用 FEC/NACK/PLC 补偿,而非 TCP 式重传阻塞。这正是 Ron Frederick 所说「如果一个东西需要实时数据流,又无需精确时序传输,它就可以从 RTP 中受益」。
本章覆盖 RFC 3550 RTP 包头、RTCP SR/RR/NACK/PLI/TWCC、Jitter Buffer、FEC 策略,以及 getStats() 诊断实战。