(rfc3984)H.264视频的RTP负载格式--学习笔记

H.264视频的RTP负载格式
1介绍-----------------------------------------------------------
一个nal单元由一字节的头和负载字节组成
h.264的一个主要特性是传输时间,解码时间,图像有片断采样时间完全解耦合
参数集概念-------------------------------------------------------
h.264规范包含两类参数集:
  顺序参数集
  图像参数集
参数集结构包含 :图像大小,采用的可选的编码模式,宏块到片断组映射等信息


网络抽象层单元类型-------------------------------------------------
nal的设计信息?????????????
所有nal单元有一个单个nal单元类型字节,也作为rtp负载格式的负载头,后加nal单元的负载
nal单元字节的结构语义


      +---------------+
      |0|1|2|3|4|5|6|7|
      +-+-+-+-+-+-+-+-+
      |F|NRI|  Type   |
      +---------------+
f: 1bit forbidden_zero_bit H.264规范声明设置为1,指示语法违例
nri: 2bit  值为00时指示nal单元的内容不用于重建引用图像的帧
           大于00时要求维护引用图像的完整性
type: 5bit nal_unit_type 本部件指定nal单元负载类型定义


定义和缩写


don(decoding order number):解码顺序号
donb:
dond:解码顺序号差
fec:向前纠错
fu:分片单元
idr:舜间解码刷新
mane:美提感知网络元素
mtap:多时刻聚合包
mtap16:16位时戳位移
mtap24:24位时戳位移
nal网络抽象层
nalu:nal单元
sei:被充增强信息
stap:单时刻聚合包
stap-a:stab类型a
stap-b:stab类型b
ts:时间戳
vcl:视频解码层




RTP 负载格式
RTP头的使用(再看一看rtp头吧)
 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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |V=2|P|X|  CC   |M|     PT      |       sequence number         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           timestamp                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           synchronization source (SSRC) identifier            |
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
      |            contributing source (CSRC) identifiers             |
      |                             ....                              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


                       图 1.  RTP 头。
对RTP头作如下设置:
maker_bit(M): 1bit 
对RTP时间戳指示的访问单元的最后一个包位进行设置
允许有效缓冲处理布局
对于聚合包(stap,mtap) m位必须设置成最后一个NAL单元
如果传送在单个RTP包中


注:运送多个nal单元的聚合包只有一个M位相关联, 如果一个网关重新打包一个聚合包为几个包,M位的设置就会显得不可靠


playload type(pt): 7bit
sequece number(sn):16bit
对于单个nalu与非交错打包方式,序号用于nalu解码顺序


timestamp:32bit
设置为内容的采样时戳,必须使用90khz的时钟频率
如果nal单元没有自已的时间戳设置成访问单元主编码图象的时间戳
接收者应该忽略包含在访问单元的任何图像时间SEI消息,通过rtp时戳同步显示过程




注:因为h.264允许解码顺序可以和显示顺序不同,RTP时戳的值对于RTP的序号可以不是单调非减的


RTP负载格式的公共结构-------------------------------------------
可以通过rtp负载的第一个字节来识别负载结构
单个nal单元包   (h264需要的rbsp)
聚合包:
stap-a聚合包a (nal单元的大小为65535)
stap-b聚合包b
mtap16
mtap24
分片单元:
FU-A分片单元fu-a
FU-B分片单元fu-b




   Table 1.  单元类型以及负载结构总结
   单元类型号
      Type   Packet    Type name                        Section
      ---------------------------------------------------------
      0      undefined                                    -
      1-23   NAL unit  Single NAL unit packet per H.264   5.6
      24     STAP-A    Single-time aggregation packet     5.7.1
      25     STAP-B    Single-time aggregation packet     5.7.1
      26     MTAP16    Multi-time aggregation packet      5.7.2
      27     MTAP24    Multi-time aggregation packet      5.7.2
      28     FU-A      Fragmentation unit                 5.8
      29     FU-B      Fragmentation unit                 5.8
      30-31  undefined                                    -
注:没有限制单封装在单个nal单元包和分片单元的大小
   封装在聚合包nal单无的大小为(65535)


nal单元字节的使用-------------------------------------------------


      +---------------+
      |0|1|2|3|4|5|6|7|
      +-+-+-+-+-+-+-+-+
      |F|NRI|  Type   |
      +---------------+


f:1bit forbidden_zero_bit
nri: 2bit  nal_ref_idc
 0值和非0值与h264规范一样
          大于00的nri值指示相对传输优先级
 最高优先级是11,依次为10-01 ,00最低
注:任何非零的nri在h.264解码器的处理是相同的,接收者在传送nal单元给解码器时不必操作nri的值


nal单元类型的值:
h.264编码器必须要据h264的规范设置nri值
当nal_unit_type范围是1到12
在h.264规范要求对于nal_unit_type为6,9,10,11,12的nal单元的nri值为0
nal_unit_type为7,8的nal单元的nri值为11,nal单元里封装有是(序列参数集和图像参数集)
nal_unit_type为5的nal单元的nri值为11


注:在某些profile中数据分区不可用,在main或baseline profiles
   如果nal 单元类型2,3,4出现在视频流符合数据分区被允许的profile情况下
   不会出现在符合main/baseline profile


   Table 2.  编码片和主编码参考图像数据分区的编码片的NRI值的例子


      NAL Unit Type     Content of NAL unit              NRI (binary)
      ----------------------------------------------------------------
       1              non-IDR coded slice                         10
       2              Coded slice data partition A                10
       3              Coded slice data partition B                01
       4              Coded slice data partition C                01


         注释: 像以前提起的, 非参考图像NRI值是00.


h.264编码器应该设置冗余编码参考图像的编码片和编码片分区nal单元的nri值为01


nal单元类型(nal_unit_type)24-29的nri的定义??????????????
nal单元类型(nal_unit_type)13-23的nri的值,这些值保留给itu-t,iso/iec
nal单元类型(nal_unit_type)0,30,31的nri的值,没有指定


打包方式------------------------------------------------------------------
 1 单个NAL单元方式 常规系统,兼容itu-t h.261
 2 非交错方式 可以不符合ITU-T H.241建议.在非交错方式, NAL单元按照NAL单元解码顺序传送
 3 交错方式  不要求非常低端到端延迟的系统,允许传送NAL单元不按照NAL单元解码顺序


设置打包方式:通过optional packetization-mode mime的值指定
每个打包方式允许的NAL单元类型总结(yes = 允许, no = 不允许, ig = 忽略)


                       单个nal方式    非交错方式        交错方式
      Type   Packet    Single NAL    Non-Interleaved    Interleaved
                       Unit Mode           Mode             Mode
      -------------------------------------------------------------


      0      undefined     ig               ig               ig
      1-23   NAL unit     yes              yes               no
      24     STAP-A        no              yes               no
      25     STAP-B        no               no              yes
      26     MTAP16        no               no              yes
      27     MTAP24        no               no              yes
      28     FU-A          no              yes              yes
      29     FU-B          no               no              yes
      30-31  undefined     ig               ig               ig




解码顺序号don-------------------------------------------------------------
在交错打包方式,nal单元的传输顺序允许和nal单元的解码顺序不同
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值