1.概述
mp4文件中的媒体描述与媒体数据是分开的,媒体数据的组织也很自由,不一定要按照时间顺序排列。
mp4文件由一系列的box构成,每个box包含box头部和box体。box体可以包含普通的数据,也可以包含其他的box,如果box中包含了另一个box,这种box称为container box。
2.结构
3.mp4格式文件转码后处理
有时输出的格式拿到网络上后发现需要完整下载后才能开始播放,而不能像网上的很多视频那样一开始就能播放,造成这个问题的原因是一些描述mp4文件信息的moov box元数据放置在了视频文件的最后,而所有的播放器都需要这些信息来正确构建播放(比如视频分辨率到底是多少,视频到底有多长......)由此需要把这些信息想办法移动到mp4文件的前部,这样读取到这些信息后客户端播放器就可以搭起播放环境,后续只需要播放数据即可。
3.1 qt-faststart简介
能够将moov box移动到mp4文件的前部,位于ftyp box后。
3.2 qt-faststart编译和使用
源码位于FFmpeg源码tools文件夹下。
编译:make tools/qt-faststart.c
编译后,会在tools目录下产生出名为qt-faststart的可执行文件。
使用:qt-faststart <inMp4FilePath> <outMp4FilePath>
4. FFmpge解码mp4
阅读FFmpeg源码中的libavformat/mov.c
参考
http://blog.csdn.net/zzqhost/article/details/8275518
http://xdsnet.cn-bj.ufileos.com/index.html?name=%E6%9D%82%E8%B0%88:mp4%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6%E8%BD%AC%E7%A0%81%E5%90%8E%E5%A4%84%E7%90%86