參考官方文檔:http://www.rosoo.net/Files/UpFiles/RsProduct/avtools/2009-4/2009491562537854.txt
聚合包的RTP荷載格式的結構見圖3
即開頭1個字節表示NAL單元類型,接着1個或多個聚合單元,后面是可選的RTP填充。
單時間聚合包STAP
單時刻聚合包(STAP)應該用於當聚合在一起的NAL單元共享相同的NALU時刻。STAP-A荷載不包括DON,至少包含一個單時刻聚合單元見圖4
STAP-B荷載包含一個16位的無符號解碼順序號(DON) (網絡字節序)緊跟至少一個單時刻聚合單元。見圖5.
圖 7表示一個例子--一個RTP包包含一個STAP-A. STAP包含兩個單時刻聚合單元, 在圖中用1,2標記。
開始是4個字節的RTP頭,接着1字節NAL單元類型,應該是24,然后2字節表示第1個NALU長度,接着1字節表示第1個NALU類型,然后若干個字節的NALU負載數據,以此類推。
注意:NALU Size = NALU HDR + NALU DATA,是頭字節長度加負載數據長度。
一個STAP-A RTP包示例,其中包含了sps pps
如圖,第1個字節18表示十進制24,即這個包是STAP-A類型
00 02 表示第1個NALU長度為2,即 09 10兩個字節,09表示第一個NALU HDR,類型取后5位為0x08表示類型
然后從第5、6個字節 00 18表示第2個NALU的長度,換算為24, 頭字節67取后5位為96表示類型,也就是sps
從第7字節67開始24字節長度為第2個NALU數據,到80結束
然后 00 04表示第3個NALU長度為4字節,頭字節68取后五位為類型,也就是pps
從第25字節68開始到結束4個字節就是第三個NALU數據
圖 8 表示一個RTP包包含一個STAP-B. STAP包含兩個單時刻聚合單元, 用 1,2標記。
STAP-B比STAP-A多了一個公共的DON,詳見規范文檔
分片單元相對來說比聚合單元更簡單一點