MP4 / MOV H.264 - Define a standard by stream (Appendix B or AVC)

How can I find out if the video stream of an MP4 or MOV H.264 video file is decoded using AVC standard or Application B standard? Both standards can run their NALUs with 0x000001.

In the Appendix B standard, each NALU starts with a start code of 0x000001 or 0x00000001. In the AVC standard, the length field can also be 0x00000134. Is there any additional information in the MP4 file that tells me that the start bytes (0x00000134) are the length field of the AVC standard, and not the start code 0x000001 of the standard video in Appendix B?

In my specific example, my MP4 video file has the AVC standard, and my MOV file has the application standard B. Both have the "NALULengthSizeMinusOne" field set to 4.

+4
source share
2 answers

"Appendix B" usually looks like this:

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

“AVC” or “MP4” is usually deleted (AUD) (SPS) (PPS). Appendix B should begin 00 00 00 01 09 00 00 00 01 x 8.

So, you can search for the start code prefix AUD, SPS and PPS.

"AVC" , , NAL , NAL, .

+3

B mp4/mov.

+2

Source: https://habr.com/ru/post/1616515/


All Articles