2015-11-19 35 views
4

如何使用AVC標準或Annex B標準解碼MP4或MOV H.264視頻文件的視頻字節流?兩種標準都可以用0x000001啓動它們的NALUs。MP4/MOV H.264 - 確定字節流標準(附錄B或AVC)

在附件B標準中,每個NALU以起始碼0x000001或0x00000001開始。在AVC標準中,長度字段也可以是0x00000134。 MP4文件中是否有任何附加信息提供了提示,即起始字節(0x00000134)是AVC標準的長度字段,而不是附件B標準視頻的起始碼0x000001?

在我的具體示例中,我的MP4視頻文件具有AVC標準,我的MOV文件具有附件B標準。兩者都具有 「NALULengthSizeMinusOne」 字段的值設置爲4。

+0

另請參閱http://stackoverflow.com/questions/24884827/possible-locations-for-sequence-picture-parameter-sets-for-h-264-stream – aergistal

回答

3

「附件B」 看上去通常是這樣的:

(AUD)(SPS)(PPS)(I-Slice中)(PPS)(P- (PPS)(P-Slice)...(AUD)(SPS)(PPS)(I-Slice)

「AVC」或「MP4」通常具有(AUD)除去。 附件B應該從00 00 00 01 09 00 00 00 01 x8開始。

因此,您可以查找起始碼前綴AUDs,SPSs和PPSs。

對於「AVC」,您可以讀取大小字段,而不是驗證下一個字節是否包含有效的NAL單元類型,而不是尋找通過NAL並幾次執行相同操作。

2

AnnexB在mp4/mov中完全不受支持。