在線短視頻秒播優化之視頻文件格式之MP4文件Moov box的位置

clipboard.png
以前咱們介紹了在線短視頻秒播優化的方方面面,從服務器,cdn部署接入,數據鏈接/獲取,客戶端緩存,出幀策略,到視頻文件I幀位置等。
今天從視頻文件格式的另一個角度介紹,MP4文件的box排列順序是如何影響,在線短視頻的播放以及秒播優化的。
MP4文件中的全部數據都裝在box中 (iso-14496-12/14)
(QuickTime中爲atom)即mp4是由若干個box組成的
先簡單介紹幾個重要的box,以便諸位在後續學習時心中有數:
一、 ftyp box,在文件的開始位置,描述的文件的版本、兼容協議等;
二、 moov box,這個box中不包含具體媒體數據,但包含本文件中全部媒體數據的宏觀描述信息,moov box下有mvhd和trak box。android

mvhd中記錄了建立時間、修改時間、時間度量標尺、可播放時長等信息。
trak中的一系列子box描述了每一個媒體軌道的具體信息。
三、 moof box,這個box是視頻分片的描述信息。並非MP4文件必須的部分,但在咱們常見的可在線播放的MP4格式文件中(例如Silverlight Smooth Streaming中的ismv文件)確是重中之重。
四、 mdat box,實際媒體數據。咱們最終解碼播放的數據都在這裏面。
五、 mfra box,通常在文件末尾,媒體的索引文件,可經過查詢直接定位所需時間點的媒體數據。
clipboard.png
clipboard.png
clipboard.png
clipboard.png
clipboard.png
clipboard.png
MP4文件的生成與解析,播放
兩個重要的box,moov and mdat
1.生成:先寫入mdat後寫入moov,所以絕大多數工具都會把moov數據放到mdat後邊,好比android的mp4writer,ffmpeg等工具
2.解析:解析播放的時候,先讀取moov,才能解析mdat
播放影響
1.本地播放,沒有影響,播放軟件能夠先seek到末尾,讀取moov
2.在線播放
(1).須要http服務器支持seek
(2).服務器不支持seek,是個很是不友好的方案,要先把數據下載完成才能播放(不管下載到哪裏,新服務器,本地內存或存儲)
(3).(1)和(2)多多少少會引入延時,尤爲(2),影響秒開
clipboard.png
clipboard.png
clipboard.png
市面上短視頻mp4 box排列
抖音,火山等小視頻moov排在前邊,不用seek;
快手,360等moov排在後邊須要seek;
能夠看出前者小視頻在這方面更專業。
在線短視頻MP4 moov box排在後邊的解決方案
1.修改文件把moov box排在前面,在MP4在設備上生成的時候或傳到服務器上後進行
這個方法一勞永逸,還能提高秒開的速度
工具:
ffmpeg option faststart
qt-faststart
clipboard.png
clipboard.png
clipboard.png
clipboard.png

Thanks緩存

相關文章
相關標籤/搜索