MP4 / MOV H.264-确定字节流标准(附件B或AVC)

use*_*578 5 format video h.264

如何确定是使用AVC标准还是附件B标准对MP4或MOV H.264视频文件的视频字节流进行了解码?两种标准都可以从0x000001开始其NALU。

在附件B标准中,每个NALU都以起始码0x000001或0x00000001开头。在AVC标准中,长度字段也可以是0x00000134。MP4文件中是否还有其他信息可以提示我,开始字节(0x00000134)是AVC标准的长度字段,而不是附件B标准视频的开始代码0x000001?

在我的特定示例中,我的MP4视频文件具有AVC标准,而我的MOV文件具有附件B标准。两者都将“ NALULengthSizeMinusOne”字段设置为值4。

sza*_*ary 5

mp4/mov 中根本不支持 AnnexB。


Mar*_*ann 4

“附件 B”通常如下所示:

(AUD)(SPS)(PPS)(I 切片)(PPS)(P 切片)(PPS)(P 切片) ... (AUD)(SPS)(PPS)(I 切片)

“AVC”或“MP4”通常删除了 (AUD)(SPS)(PPS)。附件 B 应以 00 00 00 01 09 00 00 00 01 x8 开头。

因此,您可以查找起始码前缀 AUD、SPS 和 PPS。

对于“AVC”,您可以读取大小字段,然后验证下一个字节是否包含有效的 NAL 单元类型,然后搜索 NAL 并执行相同的操作几次。