一直想写一篇文章来描述一下mp4文件格式的组织情况,一开始笔者也是通过在百度搜“mp4文件格式解析” 或“mp4文件格式详解” 或者说的牛X一点就是"mp4文件格式剖析",最后一大堆box把我看晕了,对于box内容的理解确实对于mp4文件格式的了解有很大帮助,但是很不幸,这些文章都是堆叠abox:abox的描述,实在是让人捉摸不透。诚然,box是为了实现某些功能,或者达到目的而产生的。今天我就来写一篇文章,让你对mp4文件的box有个通俗的理解,通俗并不代表吃快餐式的描述,并不是读完本文只有个大概的了解。希望本篇文章能让你醍醐灌顶,立刻懂mp4了。
mp4由很多box组成,如果你是个初学者,我建议你下载一个mp4info这个软件,然后随便从网上找来一个mp4媒体文件打开。然后你会看到如下所示:使用这个工具便于你对mp4文件格式有个视觉上的了解。box逻辑上是嵌套的,树形的。
看到这几个box,你一定很费解,其实这就是英文缩写,下面解释一下
ftype : file type 文件类型
moov : movie 存放媒体信息,它的子box就是它的内容
mvhd : movie header 媒体头 文件的时长,创建时间等信息,没必要了解那么细
track: track 通道,我这里有两个通道,一个是视频通道,一个是音频通道,两个通道分别描述媒体信息。怎么描述的见下文
mdata: 真正的媒体数据
顺便说一下右侧的小窗mp4info下的信息,这些信息是从box中解析出来的,你要问从哪个box解析出来的,我只能告诉你,你先知道这么多,知道太多了反而会把你头搞大。mp4的核心在于点播,在于快速定位帧数据,这些媒体总体信息随后你会发现解析太简单了。
这个小窗的信息分三部分,左侧上部是音频信息,smplrate:sample rate 采样率16000,channel通道个数,我这里是单通道,多通道就是立体声,bitrate就是比特率,单位是秒。 左侧下部是音频信息,with height视频的宽高,这里是1280x720