h264 RTP STAP-A单时间聚合包

参考官方文档: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,详见规范文档

分片单元相对来说比聚合单元更简单一点

posted @ 2019-11-20 17:51  姬无华  阅读(2514)  评论(0编辑  收藏  举报