RFC-6184 H264-RTP打包

详细的RFC见RFC-618

简介

RTP是流协议,所以传输的H264一定是Nal类型的H264数据,Nal的头中有三个字段,分辨是forbidden_zero, nal_ref, nal_unit_type,内涵不再详细说明。
RTP头格式中与H264相关的字段如下:

  • M (Mark), 表示当前包是H264 Nal的最后一个包。
  • PT(Payload Type),对于H264该字段应该是通过SDP或则其他信令映射的标示。
  • Sequence Number, 序列号,单调递增。
  • Timestamp 时间戳,Nalu第一个8bit的采样时间,频率是90Hz。

1. 概览

1.1 打包方式

RFC-6184根据RTP包大小和NAL类型定义了如下数据封装格式

对于H264的数据,RTP打包的时候是如何打包这些数据的呢?

  • Signal Nal Unit, 仅包含一个NAL。
  • Aggregation Unit, 聚合多个NAL,包括 STAP-A,STAP-B,MTAP16,MTAP24。
  • Fragmentation Unit, 如果一个NAL太大,可以将其分片分别进行打包,会使用该中类型。
NAL Unit TypePacket TypePacket Type NameSection
0reserved-
1-23NAL unitSingle NAL unit packet5.6
24STAP-ASingle-time aggregation packet5.7.1
25STAP-BSingle-time aggregation packet5.7.1
26MTAP16Multi-time aggregation packet5.7.2
27MTAP24Multi-time aggregation packet5.7.2
28FU-AFragmentation unit5.8
29FU-BFragmentation unit5.8
30-31reserved-

1.2 打包模式

根据不同的应用场景,定义了三种不同的组包模式,分别如下

  • 单NALU模式:使用单个NALU包进行封RTP包的方式,实现此协议的所有应用都需要支持此模式。
  • 非交织模式:NAL发送顺序和其生成顺序一致,实现此协议的应用建议支持此模式。
  • 交织模式:NAL发送顺序和其生成顺序不一致,此模式是可选的。

几种模式与负载的关系
在这里插入图片描述

2 DON

DON即Decoding Order Number,在非交织传输NAL的发送顺序和生成顺序不同,这就意味着接收端收到NAL的顺序与生成顺序也不同,为了能够正常的解码,需要重新对NAL进行排序。因此引入DON的概念,标识解码顺序。

3 包格式

3.1 Signal Nal Unit 包格式

在这里插入图片描述

3.2 Aggregation Unit 打包方式

在这里插入图片描述
聚合报文是本负载规范的NAL单元聚合方案。引入该方案是为了反映两个关键目标网络中MTU大小的显著差异:有线IP网络(MTU大小通常受以太网MTU大小的限制,大约1500字节)和基于IP或非基于IP(例如,ITU-T H.324/M)的无线通信系统,首选传输单元大小为254字节或更小。为了防止媒体在两个世界之间进行转码,避免不必要的分组开销,提出了一种NAL单元聚合方案。

规范中定义了两种聚合类的报文方式:

  • STAP(Single-Time Aggregation Packet)对NALU时间相同的NAL单元进行聚合,具体如下
    • STAP-A 不带DON
    • STAP-B 带DON
  • MTAP(Multi-time aggregation packet)对NALU时间可能不同的NAL单元进行聚合,具体如下

注意, 无论是STAP还是MTAP打包时都应该遵守如下规则:

  1. RTP时间戳必须设置为所有要聚合的NAL单元的nalu时间中最早的一个。
  2. NAL单元的头中 Type 必须设置正确,根据上面的表格,如STAP-A 对应24。
  3. 如果复合的NAL都是可以正确解码的帧,则F为必须设置为0,否则设置为1。
  4. 如果复合的NAL头的NRI需要取所有NAL单元的最大值。

STAP-A

在这里插入图片描述

STAP-B

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值