H265 码流结构
H265 码流和是由很多 NAL Unit 组成,所有 NAL Unit 均存在一个 16 位数据的 NAL Unit Header ,一个 NAL Unit Header 的语法如下:
+---------------+---------------+ |0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |F| Type | LayerId | TID | +-------------+-----------------+ Figure 1: The Structure of the H265 NAL Unit Header
-
F: 1bit forbidden_zero_bit,在 H.265 规范中规定了这一位必须为 0。它的作用是在尚存 MPEG-2 系统环境中,防止产生可以解释为 MPEG-2 起始码的比特模式。
-
Type: 6bit 其允许的 NAL Unit 的类型编码比 H264 多一倍,达到了 64 类,其中 32 类作用于 VCL NAL Unit,32 类作用于 non-VCL NAL Unit。
-
LayerId: 6bit 用于 H265 拓展层标识符
-
TID: 3bit temporal_id,表示 H265 的接入单元(AU)属于哪个时域子层,时域标识符值为 0 到 6。
H265 码流打包
RFC 7798 Section 4.4 指定了四种不同类型的 RTP 数据包有效负载结构:
-
单 NAL 单元模式(Single NAL Unit Packet): 仅包含单个 NAL Unit 的有效载荷。
-
组合封包模式(Aggregation Packet):用于聚合多个 NAL Unit 的分组类型成为单个 RTP 有效负载。
-
分片封包模式(Fragmentat