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

Opencv 非IDR图片NAL单位-0x21和0x61含义,opencv,video-streaming,h.264,Opencv,Video Streaming,H.264,有人知道h.264编码视频流中的0x21和0x61是什么意思吗 我知道0x01表示它是b-frame,0x41表示它是p-frame。我的编码视频给我两个0x21帧,然后是一个b帧 I 21 21 B 21 21 B...... 这是什么0x21?来自H.264规范: 7.3.1 NAL单元语法 禁止的0位-1位-应等于0 nal\u ref\u idc-2位-不等于0指定nal单元的内容包含序列参数集[…] nal\u unit\u type-5位-指定nal单元中包含的RBSP数据结构

有人知道h.264编码视频流中的
0x21
0x61
是什么意思吗

我知道
0x01
表示它是
b-frame
0x41
表示它是
p-frame
。我的编码视频给我两个
0x21
帧,然后是一个
b帧

I 21 21 B 21 21 B...... 
这是什么
0x21

来自H.264规范:

7.3.1 NAL单元语法

  • 禁止的0位-1位-应等于0
  • nal\u ref\u idc
    -2位-不等于0指定nal单元的内容包含序列参数集[…]
  • nal\u unit\u type
    -5位-指定nal单元中包含的RBSP数据结构的类型[…]
0x21
0x61
使其成为NAL单元类型1(非IDR图片的编码片段),并具有不同的
NAL\u ref\u idc

UPD。不存在特定位的一对一映射,特别是在“帧”开头的固定位置,表示它是I/P/B帧。根据H.264规范的7.4.3切片头语义,您需要解析出比特流以读取值(在大多数情况下仍然可行,因为该值非常接近比特流的开头-有关详细信息,请查看H.264规范):


slice_type“>

第一点,NALu与帧不同。帧可以包含多个NALu(但不能少于)。帧也可以由多个切片类型组成。单个帧可以包含I、B和p切片。如果是IDR帧,则该帧的每个切片都必须是IDR


0x01不是B片。它是非IDR图片的“编码片”“。与0x21和0x61完全相同。它可以是I/B/P或P片。您需要解析slice_类型以了解更多信息。

您的十六进制值是否表示NALU的第一个字节?@szatmary请查找下面包含字节序列的链接。这是我得到的字节序列。首先是SPS,然后是PPS,然后是I帧,然后我假设P,P和B。。。如何区分帧。那么这是P帧还是B帧?nal\U unit\U type将为所有4个组合返回01。(0x01、0x21、0x41、0x61)那么我们如何知道数据包是B帧、P帧还是I帧呢?这个答案是不完整的。您能给出任何示例或参考来解析NAL uni t并找到切片类型(I/P/B)吗?不,我不能。“注释”字段不允许我键入足够的答案。请打开另一个问题。@szatmary Access units Delimeter(当存在时)可用于标识帧的开始和结束。当AUD不存在时,解析帧的开始和结束的正确方法是什么?请您解释一下。您必须解析每个nalu,直到每个宏块都被解释清楚。