如何理解H264的标题

sk.*_*sk. 4 h.264

00 00 00 01 67 42 00 1F E6 20 0A 00 B6 60 22 00 00 03 00 02 00 00 03 00 79 C0 00 00 10 FD D0 00 00 40 16 43 F4 A4 18 00 00 03 02 1D 97 00 00 1A B3 F1 FA 52 05 00 00 00 01 68

我的NAL单元看起来像这样我怎样才能理解RBSP中的数据,如有效负载大小以及数据表示什么

Str*_*ram 14

在H264格式中,字节流被组织成许多NAL单元.为了理解NAL单元在哪里启动一个三字节或四字节的起始码0x000001或0x00000001,它位于每个NAL单元的开头.

图片 该序列也可能存在于原始数据中,在这种情况下,仿真防止字节 0x03用于将序列0x000000,0x000001,0x000002和0x000003分别转换为0x00000300,0x00000301,0x00000302和0x00000303.

在每个NAL单元中,报头仅占用其序列的第一个字节,字节的其余部分表示实际的有效载荷.

图像2

标题包含有关负载中包含的数据类型的信息,它可以分为三个部分.

标题0x67(它是NAL单元中的标题)例如对应于二进制序列0110 0111.该序列的第一位(为0)是禁用的零,用于验证在传输数据包期间遇到的错误.

以下2位(11)称为nal_ref_idc,它们表示NAL单元是参考场,帧还是图像.

其余5位指定nal_unit_type.它指定NAL单元中包含的RBSP数据结构的类型.有关NAL单元标头的更详细说明,请参阅此处的表7.1 或官方RFC

  • 当您找到 0x000001 或 0x00000001 字节时,您可以判断出 NAL 单元启动。在这些字节之后,您有一个字节的标头,然后是有效载荷。当下一个 NAL 单元开始时,有效载荷结束,同样是 0x000001 或 0x00000001 字节。看看我的答案中的第一张图片。 (2认同)