非IDR图片NAL单位 - 0x21和0x61含义

时间:2014-03-21 05:58:43

标签: opencv video-streaming h.264

是否有人知道0x210x61在h.264编码视频流中的含义?

我知道0x01表示它是b-frame0x41表示它是p-frame。我的编码视频为我提供了两个0x21帧,后跟一个b-frame

I 21 21 B 21 21 B...... 

这是0x21是什么?

2 个答案:

答案 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数据结构的类型[...]
  •   

0x210x61使其成为NAL单位类型1(非IDR图片的编码切片),具有nal_ref_idc的不同值。

UPD。特定位没有一对一的映射,尤其是。从#34;框架开始的固定位置"说它的I / P / B帧。您将需要解析比特流以读取H.264规范的每个7.4.3 Slice头语义的值(在大多数情况下仍然可行,因为该值实际接近比特流的开头 - 检查H.264规范详情):

<code>slice_type</code>