是否有人知道0x21
和0x61
在h.264编码视频流中的含义?
我知道0x01
表示它是b-frame
而0x41
表示它是p-frame
。我的编码视频为我提供了两个0x21
帧,后跟一个b-frame
。
I 21 21 B 21 21 B......
这是0x21
是什么?
答案 0 :(得分:6)
首先,NALu与帧不同。一帧可以包含多于1 NALu(但不能少于)。帧也可以由多个切片类型组成。单个帧可以具有I,B和P切片。如果它是IDR帧,则该帧的每个片段必须是IDR。
0x01不是B切片。它是“非IDR图片的编码片段”。完全像0x21和0x61。它可以是I / B / P或p切片。你需要解析slice_type以了解更多信息。
答案 1 :(得分:5)
来自H.264规范:
7.3.1 NAL单位语法
- forbidden_zero_bit - 1位 - 应等于0.
nal_ref_idc
- 2位 - 不等于0指定NAL单元的内容包含序列参数集[...]nal_unit_type
- 5位 - 指定NAL单元中包含的RBSP数据结构的类型[...]
0x21
和0x61
使其成为NAL单位类型1(非IDR图片的编码切片),具有nal_ref_idc
的不同值。
UPD。特定位没有一对一的映射,尤其是。从#34;框架开始的固定位置"说它的I / P / B帧。您将需要解析比特流以读取H.264规范的每个7.4.3 Slice头语义的值(在大多数情况下仍然可行,因为该值实际接近比特流的开头 - 检查H.264规范详情):