一、简介
MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的一部分,是“ISO/IEC 14496-12(MPEG-4 Part 12 ISO base media file format)”标准中所定义的媒体格式的一种实现,后者定义了一种通用的媒体文件结构标准。MP4是一种描述较为全面的容器格式,被认为可以在其中嵌入任何形式的数据,各种编码的视频、音频等都不在话下,不过我们常见的大部分的MP4文件存放的AVC(H.264)或MPEG-4(Part 2)编码的视频和AAC编码的音频。MP4格式的官方文件后缀名是“.mp4”,还有其他的以mp4为基础进行的扩展或者是缩水版本的格式,包括:M4V, 3GP, F4V等。
二、格式学习
1、学习方法
1.1、参考地址
https://www.cnblogs.com/jingzhishen/p/3698570.html
https://blog.csdn.net/lh2016rocky/article/details/52691768
https://blog.csdn.net/u013898698/article/details/77152347
https://segmentfault.com/a/1190000012477812
https://blog.csdn.net/hejjunlin/article/details/73162841
https://blog.csdn.net/shelldon/article/details/54144409
1.2、解析工具
mp4info借助该工具可以对mp4的视频数据进行分析,其他
1.Gstreamer
2.libvlc
3.live555
4.ffmpeg
2、理解
主要文件信息组成,mp4文件说白了就是一系列box组成,大box里面有小box。接下来会深入到具体的box里面,来具体分析mp4格式。
2.1、 ftyp(File Type Box) box,在文件的开始位置,描述的文件的版本、兼容协议等;
2.2、 moov (Movie Box) box,这个box中不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息,moov box下有mvhd和trak box。有的视频文件该信息会前置就是再ftyp后面,有的在最后面就是在视频文件的最后面。
>>mvhd中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息。
>>trak中的一系列子box描述了每个媒体轨道的具体信息。
2.3、 moof box,这个box是视频分片的描述信息。并不是MP4文件必须的部分,但在我们常见的可在线播放的MP4格式文件中(例如Silverlight Smooth Streaming中的ismv文件)确是重中之重。
2.4、 mdat box,实际媒体数据。我们最终解码播放的数据都在这里面。
2.5、 mfra box,一般在文件末尾,媒体的索引文件,可通过查询直接定位所需时间点的媒体数据。