继上篇rtp中的时间戳和负载类型之后,升入到了nalu的分片打包问题,这里做下笔记
(1)fu-a的打包格式
1.基于RTP协议的打包及解包
(1)单个NAL打包
H.264NALU单元常由[start code][NALU header][NALU payload]三部分组成,其中start code 用于标志一个NALU单元的开始,必须是“00000001”或者是“000001”,打包时去掉开始码,把其他数据打包到RTP包就可以了。
(2)分片打包
由于1500个字节是IP数据报的长度的上限,去除20个字节的数据报首部,1480字节是用来存放UDP数据报的。所以当一帧中的字节数超过这个数值时,我们必须将其分片打包。而且UDP在传输的过程中也要由包头开销,所以将RTP包的最大字节数定位1400字节。
需要分片的包格式有所区别,首先说明下分片的格式:
FU指示字节有以下格式:
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|F|NRI| Type |
+---------------+
FU指示字节的类型28,29表示FU-A和FU-B。NRI域的值必须根据要分片的NAL单元NRI的值设置。
FU头的格式如下:
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+