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) 提供了更好的容错能力。