流媒体传输 - RTP 荷载 H264

本文详细介绍了H264码流的结构,包括NAL Unit Header和不同类型NAL Unit的含义。接着阐述了RTP打包H264码流的三种模式:单NAL单元模式、组合封包模式和分片封包模式,分析了它们的应用场景和优势。同时,对FU-A和FU-B两种分片封包模式进行了深入讲解,包括其RTP有效负载格式和特殊标志位的含义。
摘要由CSDN通过智能技术生成

H264 码流结构

H264 码流是由很多 NAL Unit 组成,所有 NAL Unit 均存在一个八位数据的 NAL Unit Header ,这八位数据也充当此 RTP 有效负载格式的有效负载头。一个 NAL Unit Header 的语法如下:

    +---------------+
    |0|1|2|3|4|5|6|7|
    +-+-+-+-+-+-+-+-+
    |F|NRI|  Type   |
    +---------------+
  • F: 1bit forbidden_zero_bit,在 H.264 规范中规定了这一位必须为 0。

  • NRI: 2bit nal_ref_idc,取 00 ~ 11, 似乎指示这个 NALU 的重要性,如 00 的 NALU 解码器可以丢弃它而不影响图像的回放。不过一般情况下不太关心这个属性。

  • Type: 5bit 等于 nal_unit_type,标识着这个 NAL Unit 的 Type,其类型如下:

      Table 1.  Summary of NAL unit types and the corresponding packet types
    
          NAL Unit  Packet    Packet Type Name               Section
          Type      Type
          -------------------------------------------------------------
          0        reserved                                     -
          1-23     NAL unit  Single NAL unit packet             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    reserved

H264 码流打包

RFC 6184 Section 5.2 中指定了 3 种打包方式:

  • 单 NAL 单元模式(Single NAL Unit Packet): 仅包含单个 NAL 单元的有效载荷。
  • 组合封包模式(Aggregation Packet):用于聚合多个 NAL 单元的分组类型成为单个 RTP 有效负载。
  • 分片封包模式(Fragmentation Unit):用于将单个 NAL 单元分段成多个 RTP 数据包。

单 NAL 单元模式

一个 RTP 包仅由一个完整的 NALU 组成。这种情况下 RTP 的 NAL 头类型字段和原始的 H.264 的 NALU 头类型字段是一样的。

对于 NALU 的长度小于 MTU 大小的包,一般采用单一 NAL 单元模式。一个原始的 H.264 NALU 单元常由 [Start Code] [NALU Header] [NALU Payload] 三部分组成,其中 Start Code 用于标示这是一个 NALU 单元的开始,必须是 "00 00 00 01" 或 "00 00 01", NALU 头仅一个字节,其后都是 NALU 单元内容,打包时去除 "00 00 01" 或 "00 00 00 01" 的开始码,把其他数据封包为 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
+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值