This is my study note of MP4.

MP4全名为MPEG-4 Part 14,属于MPEG-4的一部分。

基本概念

  • Box
    1
    MP4由一个一个Box组成,它由Header+Date组成,Data可以存储媒体元数据和实际的音视频码流数据。Box里可以直接存储数据块也可以包含其他的Box,这种Box叫做container box。
    Alt text

从图中可以看出,在Box的Header头部,size指定了这个Box的大小,一般头部大小就是8字节

  • Sample
    1
    采样,对于视频而言可以理解为一帧数据,对于音频一帧数据就是一段固定时间的音频数据,即多个sample,存储媒体数据的单位为Sample。
  • Track
    1
    Sample的集合,一个视频序列或者音频序列。除了媒体数据,Track还可以包含其他非媒体数据,如指示信息和字幕信息。
  • Chunk
    1
    一个track内,连续几个Sample称为Chunk,每个Chunk都有一个偏移量,整个偏移量从文件头算起。
    MP4文件中,包含好几个track,每个track由许多Chunk组成,每个Chunk都是由连续的Sample组成。

Box

  • ftyp Box
    1
    ftyp是MP4的第一个Box,包含了视频文件使用的编码格式、标准等,一份MP4中只有一个这样的Box,通常放在文件的开头,让解析器知道使用哪种协议对该文件进行解析。
  • moov Box
    1
    包含了文件媒体的元数据信息,该box和ftyp一样,是最重要的box,包含了音视频的编码格式、数据样本、chunk的大小等
  • mvhd Box
    1
    描述了与具体音频或视频流无关的文件整体信息