01 GB28181中的RTP over TCP
GB28181的TCP码流遵循的标准是RFC4571(RTP OVER TCP),具体类型是:
代码语言:javascript复制 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
---------------------------------------------------------------
| LENGTH | RTP or RTCP packet ... |
---------------------------------------------------------------
详细协议文档可以参考《rfc4571.Framing-Real-time-Transport-Protocol-(RTP)-and-RTP-Control-Protocol-(RTCP)-Packets-over-Conn.pdf》文档
02 RTSP中的RTP over TCP
RTSP中tcp码流是遵循的RFC2326标准,
详细介绍参考公众号历史文章:《RTP over TCP》
代码语言:javascript复制| magic number | channel number | data length | data |magic number -
magic number:RTP数据标识符,"$" 一个字节
channel number:信道数字 - 1个字节,用来指示信道
data length :数据长度 - 2个字节,用来指示插入数据长度
data :数据 - ,比如说RTP包,总长度与上面的数据长度相同
RTP,RTCP数据和RTSP数据共享TCP数据通道,所以必须有一个标识来区别三种数据:
- RTP和RTCP数据会以$符号+1个字节的通道编号+2个字节的数据长度,共4个字节的前缀开始,
- RTSP数据是没有前缀数据的。
- RTP数据和RTCP数据的区别在于第二个字节的通道编号
03
两个标准的区别
- RFC4571标准格式: 长度(2字节) RTP头 数据
- RFC2326标准格式:$(1字节) 通道号(1字节) 长度(2字节) RTP头 数据
提示
上面所说的长度,都是网络字节序。