天天看点

H264 数据帧头分析

推荐一款免费小巧快速十六进制编辑器 HxD

这里附上标准采集分辨率格式缩写,便于查阅。

H264 数据帧头分析

h264常见的帧头数据为:

00 00 00 01 61    (P帧)

00 00 00 01 65    ( IDR 帧)

00 00 00 01 67    (SPS)

00 00 00 01 68    (PPS)

帧类型有:

NAL_SLICE = 1     非关键帧      # 00 00 00 01 61
    NAL_SLICE_DPA = 2 片分区A
    NAL_SLICE_DPB = 3 片分区B
    NAL_SLICE_DPC =4  片分区C
    NAL_SLICE_IDR =5  关键帧        # 00 00 00 01 65
    NAL_SEI = 6       补充增强信息
    NAL_SPS = 7       SPS帧        # 00 00 00 01 67 
    NAL_PPS = 8       PPS帧        # 00 00 00 01 68 
    NAL_AUD = 9       分解符
    NAL_FILLER = 12   填充
           

对于H.264而言,每帧的界定符为00 00 00 01 或者00 00 01。

例如下面是一个H264的文件片段

00 00 00 01 67 42 C0 28 DA 01 E0 08 9F 96 10 00

00 03 00 10 00 00 03 01 48 F1 83 2A 00 00 00 01

68 CE 3C 80 00 00 01 06 05 FF FF 5D DC 45 E9 BD

E6 D9 48 B7 96 2C D8 20 D9 23 EE EF …

第一帧是00 00 00 01 67 42 C0 28 DA 01 E0 08 9F 96 10 00 00 03 00 10 00 00 03 01 48 F1 83 2A

第二帧是00 00 00 01 68 CE 3C 80

第三帧是00 00 01 06 05 FF FF 5D DC 45 E9 BD E6 D9 48 B7 96 2C D8 20 D9 23 EE EF ..

SPS 对于H264而言,就是编码后的第一帧,如果是读取的H264文件,就是第一个帧界定符和第二个帧界定符之间的数据的长度是4

PPS 就是编码后的第二帧,如果是读取的H264文件,就是第二帧界定符和第三帧界定符中间的数据长度不固定。

如我采集的的H264文件

第一帧SPS帧起始帧

第二帧PPS帧

第三帧 SEI  补充增强信息

第四帧 IDR 关键帧

第一个帧界定符和第二个帧界定符之间的数据长度是4(数据长度4byte),第二帧和第三帧之间数据长度1,第三帧和第四帧数据长度1 。

H264 数据帧头分析