1.概述
mp4文件中的媒體描述與媒體數(shù)據(jù)是分開的,媒體數(shù)據(jù)的組織也很自由休雌,不一定要按照時間順序排列锭碳。
mp4文件由一系列的box構(gòu)成栅葡,每個box包含box頭部和box體。box體可以包含普通的數(shù)據(jù),也可以包含其他的box恬惯,如果box中包含了另一個box誉尖,這種box稱為container box狭郑。
2.結(jié)構(gòu)
3.mp4格式文件轉(zhuǎn)碼后處理
有時輸出的格式拿到網(wǎng)絡(luò)上后發(fā)現(xiàn)需要完整下載后才能開始播放腹暖,而不能像網(wǎng)上的很多視頻那樣一開始就能播放,造成這個問題的原因是一些描述mp4文件信息的moov box元數(shù)據(jù)放置在了視頻文件的最后翰萨,而所有的播放器都需要這些信息來正確構(gòu)建播放(比如視頻分辨率到底是多少脏答,視頻到底有多長......)由此需要把這些信息想辦法移動到mp4文件的前部,這樣讀取到這些信息后客戶端播放器就可以搭起播放環(huán)境亩鬼,后續(xù)只需要播放數(shù)據(jù)即可以蕴。
3.1 qt-faststart簡介
能夠?qū)oov box移動到mp4文件的前部,位于ftyp box后辛孵。
3.2 qt-faststart編譯和使用
源碼位于FFmpeg源碼tools文件夾下丛肮。
編譯:make tools/qt-faststart.c
編譯后,會在tools目錄下產(chǎn)生出名為qt-faststart的可執(zhí)行文件魄缚。
使用: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