RTP over TCP 模式概述
RTP over TCP 指的是将RTP数据包封装在TCP连接中进行传输,而不是使用传统的基于UDP的传输方式。
与UDP模式对比
特性 | RTP over TCP | RTP over UDP |
---|---|---|
端口数量 | 仅需 1 个 TCP 端口(默认 554) | 每路流需 2 个 UDP 端口(数据+控制) |
可靠性 | 依赖 TCP 重传机制,数据无丢失 | 可能丢包,影响实时性 |
防火墙兼容性 | 易穿透(常用端口 554) | 需开放多个端口,易被拦截 |
延迟 | 较高(重传机制引入延迟) | 较低(无连接、无重传) |
适用场景 | 高丢包网络(如互联网)、防火墙环境 | 低延迟需求(局域网、专网) |
工作原理
在RTSP的RTP over TCP模式下,RTP和RTCP数据被"隧道化"到RTSP控制连接中,通常使用基于分隔符的帧间发送(Interleaved Mode)。具体流程如下:
-
建立RTSP连接:客户端与服务器之间首先建立一个RTSP的TCP连接,通常是在端口554上。
-
SETUP 阶段协商
客户端在SETUP
请求中指定传输方式为 TCP,并分配交织通道号:httpTransport: RTP/AVP/TCP;interleaved=0-1

0-1
表示视频流:0
为 RTP 数据通道(偶数),1
为 RTCP 控制通道(奇数)。- 音频流通常分配
2-3
通道。
- 发送RTP/RTCP数据:在同一个TCP连接上,RTP和RTCP数据通过特定的通道(通常是通过RTSP"interleaving"机制,即在RTSP消息中嵌入RTP数据)进行传输。每个RTP/RTCP包前面会有一个标识符(通常是"$"符号后跟通道号),以区分不同类型的数据。
- 数据封装格式
每个 RTP/RTCP 包添加 4 字节头部,结构如下:
字段 | 长度 | 说明 |
---|---|---|
Magic Number | 1 字节 | 固定值 0x24 (ASCII 字符 $ ),用于标识 RTP/RTCP 数据包。 |
Channel Number | 1 字节 | 通道号(如 0 代表 RTP 视频数据,1 代表 RTCP 视频控制)。 |
Embedded Data Len | 2 字节 | 后续 RTP/RTCP 数据包的长度(网络字节序)。 |
Data | N 字节 | 实际的 RTP 或 RTCP 数据包 |
RTCP SR数据包封装:
视频RTP包封装:
参考资源
-
RFC 4571 :
Interleaved RTP over TCP -
RFC 4571 :
Embedded (Interleaved) Binary Data