FU-A方式分包

当 NALU 的长度超过 MTU 时, 就必须对 NALU 单元进行分片封包. 也称为 Fragmentation Units (FUs). 
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  

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  

| FU indicator | FU header | 

| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | 

                                    | FU payload | | | 

| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

                                                            | :...OPTIONAL RTP padding | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   

H264码流 NAL HEADER格式

| FU indicator      |

+---------------+  

|0|1|2|3|4|5|6|7|  

+-+-+-+-+-+-+-+-+  

|F|NRI|FU-Type     |    (28)

+---------------+ 

 

| FU header |

+---------------+  

|0|1|2|3|4|5|6|7|  

+-+-+-+-+-+-+-+-+  

|S|E|R| Type      |

+---------------+

同一个NALU分包后的FU indicator头、Type是完全一致的,FU header只有S以及E位有区别,分别标记开始和结束,RTP分包的序列号应该是依次递增的,且时间戳必须一致,负载数据为NALU包去掉1个字节的NALU头后对剩余数据的拆分,因为NALU头被拆分成了FU indicator和FU header,所以不再需要1字节的NALU头了。
1. 第一个FU-A包的FU indicator:F、NRI、Type应该为当前NALU头的F、NRI、Type,Type则等于28,表明是FU-A包。FU header生成方法:S = 1,E = 0,R = 0。
2. 中间的N个FU-A包(不是最后一个包),FU header应该为:S = 0,E = 0,R = 0。
3. 最后一个FU-A包FU header应该为:S = 0,E = 1,R = 0。

posted @ 2015-12-21 12:37  Samaritan  阅读(1779)  评论(0编辑  收藏  举报