代码之家  ›  专栏  ›  技术社区  ›  faceclean

H264 NAL标题是什么意思?

  •  25
  • faceclean  · 技术社区  · 16 年前
    0000 0109 1000 0001 6742 0020 e900 800c
    3200 0001 68ce 3c80 0000 0001 6588 801a
    

    据我所知, 是标识NAL单元的起始前缀代码。“09….”是什么意思什么意思?它是头类型字节吗?

    4 回复  |  直到 16 年前
        1
  •  36
  •   kidjan    15 年前

    还有图片参数设置:

    00 0001 68...

    0000 0001 65...

        2
  •  12
  •   Yaur    11 年前

    http://www.itu.int/rec/T-REC-H.264-201304-S . 具体而言,第63页的表格(截至2014年1月)列出了所有有效的NAL类型。

    要想知道你在看什么,请看前4个字节。如果NAL在“附录B”框架中,则它们将 00 00 01 . 此序列在H.264位流中被禁止/抑制,因此如果您看到它,您肯定知道您正在查看NAL的开始。NAL类型是1后面的5个低位。在代码中:

    int nalType = p[2] == 1 ? (p[3] & 0x1f) : (p[4] & 0x1f);
    

    利用以上信息,我们可以查看上述流并看到一个访问单元分隔符,后跟一个SPS、PPS和第一个I帧。

        3
  •  7
  •   Community Mohan Dere    8 年前
        0000 0109 1000 0001 6742 0020 e900 800c
        3200 0001 68ce 3c80 0000 0001 6588 801a
    
    -> 000001| 09 (AUD)| 10 | 000001 | 67(SPS) | xxxx (SPS data)
       xx | 000001 | 68 (PPS)| xxxx (PPS data)
    

    AUD、SPS、PPS是NALU(网络抽象层单元)的类型 那鲁大约有31种类型。

    09 AUD平均访问单元分隔符。

    访问单元分隔符(AUD)。AUD是可选的NALU,可以 (除非集装箱/协议另有规定,如TS),并且 通常不包括为了节省空间,但它可以是有用的

    answer 更多信息。

    question 关于如何解码h264流(在iOS中)。

        4
  •  2
  •   Matt    16 年前

    定义数据包类型的。格式为:

    +---------------+
    |0|1|2|3|4|5|6|7|
    +-+-+-+-+-+-+-+-+
    |F|NRI|  Type   |
    +---------------+
    

    你确定这是h.264 NAL头吗?从您提供的内容来看,这似乎不是您提供的上下文的标题。