MP4文件格式简单解析
Mp4文件中的所有数据都装在box中,就是说,你可以简单的理解为MP4文件就是一个个box组成的。
那么,在Mp4文件中,Box主要有三种:
1 Ftyp box(有且只有一个):作为Mp4文件的标志,并包含关于文件的一些信息
2 Moov box(有且只有一个):包含媒体的metadata
3 Mdat box(可以0个,可以多个):包含媒体数据
那么,什么是box?
box是由header和body组成,header中主要存该box的size和type
还有一个概念是container box,就是box中包含子box的,这个box就叫做container box
所以,严谨的讲,mp4文件就是由一个个有可能有嵌套的box组成的。
那么,mp4中主要的三种box:ftyp,moov和mdat到底有什么区别?
Ftyp box(File Type Box)
Header:
Body:包含4字节major brand,4字节minor version和compatible brands数组(以4字节为单位)
Moov box(Movie box)
Header:
Body:一个mvhd和若干个trak(trak也是container box)
mvhd应该作为首个子box出现,其中包含了许多信息如推荐播放速率,下一个track使用的id等
Track
Header
Body:包含tkhd和mdia(也是container box)
Mdia:含一个mdhd,一个hdlr和一个minf
Mdhd(media header box):类型,大小等信息
Hdlr(handler reference box):解释媒体播放过程信息
Minf(media information box):存储了许多track媒体数据的handler-special信息
Mdat box(media data box)
存储媒体数据
简单的图就是
mdat中主要存放的是ES:最小的单位是sample。
那什么是sample?
video sample即为一帧或者一组连续视频帧,audio sample即为一段连续的音频。