MP4文件Moov box的位置
love 2021-02-02
# MP4文件的box排列顺序
MP4文件中的所有数据都装在box中 (iso-14496-12/14)
(QuickTime中为atom)即mp4是由若干个box组成的
- ftyp box,在文件的开始位置,描述的文件的版本、兼容协议等;
- moov box,这个box中不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息,moov box下有mvhd和trak box。
mvhd中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息。 trak中的一系列子box描述了每个媒体轨道的具体信息。
- moof box,这个box是视频分片的描述信息。并不是MP4文件必须的部分,但在我们常见的可在线播放的MP4格式文件中(例如Silverlight Smooth Streaming中的ismv文件)确是重中之重。
- mdat box,实际媒体数据。我们最终解码播放的数据都在这里面。
- mfra box,一般在文件末尾,媒体的索引文件,可通过查询直接定位所需时间点的媒体数据。
# MP4文件的生成与解析,播放
# 两个重要的box:moov and mdat
- 生成:先写入mdat后写入moov,因此绝大多数工具都会把moov数据放到mdat后边,比如android的mp4writer,ffmpeg等工具
- 解析:解析播放的时候,先读取moov,才能解析mdat
# 播放影响
本地播放,没有影响,播放软件可以先seek到末尾,读取moov
在线播放
(1). 需要http服务器支持seek (2). 服务器不支持seek,是个非常不友好的方案,要先把数据下载完成才能播放(无论下载到哪里,新服务器,本地内存或存储) (3). (1)和(2)多多少少会引入延时,尤其(2),影响秒开
# 结论
moov box需要放在 ftyp 后面,mdat 前面,能够提高打开速度
windows查看视频信息软件mp4 info