2024年6月7日发(作者:)
MP4
文件格式
综述
关键概念
MP4文件格式中,所有的内容存在一个称为movie的容器中。一个movie可以由多个
tracks组成。每个track就是一个随时间变化的媒体序列,例如,视频帧序列。track里的每个时
间单位是一个
sample
,它可以是一帧视频,或者音频。
sample
按照时间顺序排列。注意,一帧
音频可以分解成多个音频sample,所以音频一般用sample作为单位,而不用帧。MP4文件格式
的定义里面,用sample这个单词表示一个时间帧或者数据单元。每个track会有一个或者多个
sampledescriptions。track里面的每个sample通过引用关联到一个sampledescription。这
个sampledescriptions定义了怎样解码这个sample,例如使用的压缩算法。
与其他的多媒体文件格式不同的是,MP4文件格式经常使用几个不同的概念,理解其不同
是理解这个文件格式的关键。
这个文件的物理格式没有限定媒体本身的格式。例如,许多文件格式将媒体数据分成帧,
头部或者其他数据紧紧跟随每一帧视频,!!!TODO(例如MPEG2)。而MP4文件格式不是如
此。
文件的物理格式和媒体数据的排列都不受媒体的时间顺序的限制。视频帧不需要在文件按
时间顺序排列。这就意味着如果文件中真的存在这样的一些帧,那么就有一些文件结构来描述媒体
的排列和对应的时间信息。
MP4文件中所有的数据都封装在一些box中(以前叫atom)。所有的metadata(媒体描
述元数据),包括定义媒体的排列和时间信息的数据都包含在这样的一些结构
box
中。MP4文件格
式定义了这些这些box的格式。Metadata对媒体数据(例如,视频帧)引用说明。媒体数据可以
包含在同一个的一个或多个box里,也可以在其他文件中,metadata允许使用URLs来引用其他
的文件,而媒体数据在这些引用文件中的排列关系全部在第一个主文件中的metadata描述。其他
的文件不一定是MP4文件格式,例如,可能就没有一个box。
k
有很多种类的track,其中有三个最重要,videotrack包含了视频sample;audiotractrack
包含了audiosample;hinttrack稍有不同,它描述了一个流媒体服务器如何把文件中的媒体数据
组成符合流媒体协议的数据包。如果文件只是本地播放,可以忽略hinttrack,他们只与流媒体有
关系。
媒体文件的物理结构
Box定义了如何在sampletable中找到媒体数据的排列。这包括datareference(数据引
用),thesamplesizetable,thesampletochunktable,andthechunkoffsettable.这些表就可以找
到track中每个sample在文件中的位置和大小。
datareference允许在第二个媒体文件中找到媒体的位置。这样,一部电影就可以由一个
媒体数据库中的多个不同文件组成,而且不用把它们全部拷贝到另一个新文件中。例如,对视频编
辑就很有帮助。
为了节约空间,这些表都很紧凑。另外,interleave不是samplebysample,而是把单个
track的几个samples组合到一起,然后另外几个sample又进行新的组合,等等。一个track的连
续几个sample组成的单元就被称为chunk。每个chunk在文件中有一个偏移量,这个偏移量是从
文件开头算起的,在这个chunk内,sample是连续存储的。


发布评论