H.264 的RTP 三种封包模式

     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                                     -

      Table 3.  Summary of allowed NAL unit types for each packetization
                mode (yes = allowed, no = disallowed, ig = ignore)

      Payload Packet    Single NAL    Non-Interleaved    Interleaved
      Type    Type      Unit Mode           Mode             Mode
      -------------------------------------------------------------
      0      reserved      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  reserved      ig               ig               ig

H.264 的 RTP (Real-time Transport Protocol) 载荷格式有三种封包模式,每种模式支持不同的NAL (Network Abstraction Layer) 单元类型。理解这些封包模式及其支持的NAL单元类型有助于更好地配置和优化视频流的传输。以下是对这三种模式及其支持的NAL单元类型的详细解释:

1. Single NAL Unit Mode (模式 0)

单个NAL单元模式是最简单的封包模式,适用于低延迟的传输场景。在这种模式下,每个RTP包只包含一个完整的NAL单元。

支持的NAL单元类型:

  • NAL unit type 1-23(包含视频片段、补充增强信息等)。

特点:

  • 每个RTP包只包含一个NAL单元。
  • 适用于实时性要求高且网络条件较好的场景。
  • 不支持分片(fragmentation),即不支持将一个大的NAL单元分成多个RTP包传输。

2. Non-Interleaved Mode (模式 1)

非交织模式适用于需要分片传输较大NAL单元的场景。在这种模式下,可以将一个大的NAL单元分片,并将这些分片放在多个RTP包中。

支持的NAL单元类型:

  • NAL unit type 1-23(同样包含视频片段、补充增强信息等)。
  • 分片单元 (Fragmentation Units, FUs) :NAL unit type 24-31,主要用于将较大的NAL单元分片。

特点:

  • 支持将大的NAL单元分片成多个RTP包传输。
  • 不支持复合NAL单元,即每个RTP包中不能包含多个NAL单元或分片。

3. Interleaved Mode (模式 2)

交织模式允许在RTP包中交织多个NAL单元或其分片。此模式适用于误码率较高的网络环境(如无线网络),因为它允许在重传时重新排序和重组NAL单元。

支持的NAL单元类型:

  • NAL unit type 1-23。
  • 分片单元(Fragmentation Units, FUs):NAL unit type 24-31。
  • 单元集合(Aggregation Packets, APs):用于在一个RTP包中包含多个NAL单元。

特点:

  • 支持在RTP包中交织多个NAL单元或其分片,增强了对数据包丢失和重传的容错能力。
  • 适用于网络状况不稳定、丢包率较高的环境。

表格概览

模式 支持的NAL单元类型 特点
Single NAL Unit Mode (0) 1-23 每个RTP包只包含一个完整的NAL单元;适用于低延迟传输,不支持分片
Non-Interleaved Mode (1) 1-23, 24-31(分片单元) 支持分片传输大的NAL单元,每个RTP包不能包含多个NAL单元
Interleaved Mode (2) 1-23, 24-31(分片单元), Aggregation Packets (APs) 支持在RTP包中交织多个NAL单元或其分片,适用于高丢包环境

总结

选择合适的H.264 RTP封包模式需要考虑具体应用的需求和网络环境。对于低延迟的应用,Single NAL Unit Mode (模式 0) 是合适的选择;对于需要分片的情况,可以使用Non-Interleaved Mode (模式 1);而在高丢包的环境中,Interleaved Mode (模式 2) 提供了更好的容错能力。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-25 23:38:10       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-25 23:38:10       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-25 23:38:10       82 阅读
  4. Python语言-面向对象

    2024-05-25 23:38:10       91 阅读

热门阅读

  1. docker迁移根目录导致的权限问题

    2024-05-25 23:38:10       35 阅读
  2. docker 安装RabbitMQ

    2024-05-25 23:38:10       38 阅读
  3. SQL的多表联查

    2024-05-25 23:38:10       37 阅读
  4. ZJGSU 2199 图论1

    2024-05-25 23:38:10       37 阅读
  5. C++11-独占指针unique_ptr原理实现

    2024-05-25 23:38:10       37 阅读
  6. Spring Boot :从上传的二维码图片中读取信息

    2024-05-25 23:38:10       36 阅读
  7. 解决“unknown shorthand flag: ‘d‘ in -d‘”错误

    2024-05-25 23:38:10       40 阅读