|
RTP
RTP(Real-time Transport Protocol,实时传输协议)和RTCP(Real-time Transport Control Protocol)一起使用,RTP使用偶数端口号收发数据,相应的RTCP则使用相邻的下一位奇数端口号。当应用程序启动一个RTP会话时,将同时占用两个端口,分别供RTP和RTCP使用。RTP负责数据传输,RTCP负责收集相关连接信息,实时监控数据传输和服务质量。
RTP的典型应用创建在UDP上,但也能够在TCP或ATM等其余协议之上工作。RTP基于UDP时,和UDP一样,并不提供任何传输可靠性的保证和流量的拥塞控制机制,无法保证实时业务的服务质量。这里就有个疑问,既然UDP和RTP都是传输层协议,RTP由在UDP之上,那二者有什么关系?简单来说,RTP协议和UDP两者共同完成传输层协议传输。UDP只是负责传输数据包,RTP提供时间标志戳及其他技术来保证流媒体在实时传输时的时间正确性。
RTCP负责管理传输质量。在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量、丢失的数据包的数量等统计信息。服务器利用这些信息动态地改变传输速率,甚至改变有效载荷类型。
SVAC之RTP打包
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 2
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| V |P|X| CC |M| PT | sequence number |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| timestamp |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ssrc |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| profile | length |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext1 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext2 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext3 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext4 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext5 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| fu_type | 0x01 | 0x01 | 0x01 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| f |r | type |e|a| savc |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| savc |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
解释:
fu_type:0;
start code : 3个字节的0x000001;
savc_nalu_header:f(1b) + nal_ref(1b) + type(1b,此处为SVAC_PSLICE=1/SVAC_IDR=2/SVAC_EXT=5/SVAC_SEI=6/SVAC_SPS=7/SVAC_PPS=8)
+ encrp(1b) + auth(1b)
注:如果要下盘,则去掉RTP头,再去掉1B的fu——type,再保留SVAC_NALU_HEADER的1B下盘。
二、NALU分片打包格式
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 2
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| V |P|X| CC |M| PT | sequence number |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| timestamp |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ssrc |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| profile | length |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext1 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext2 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext3 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext4 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext5 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| fu_type | 0x01 | 0x01 | 0x01 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| f |r | type |e|a| savc |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| savc |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fu_type:为28
savc_fu_header:s(1b) + e(1b) + savc_fu_a(6b)
start_code:0x000001
savc_nalu_header:f(1b) + nal_ref(1b) + type(1b) + encrp(1b) + auth(1b)
|
|