mp4相比m3u8第一幀加載較慢的原因?


mp4相比m3u8第一幀加載較慢的原因?

工作室正在做的軟件,是一個以長視頻播放為主的Android與IOS 手機軟件。
最近半年,老板要求對視頻的 秒開率(1秒內成功加載的播放數 / 播放總數)、失敗率 (播放失敗的次數 / 播放總數) 等進行優化。經過線上AB測試發現,m3u8視頻(第一段切片為1~3秒)在秒開率、失敗率等性能指標上均優於普通mp4視頻

這里想探究一下,m3u8視頻(第一段切片為1~3秒)在秒開率上均優於普通mp4視頻的原因。

網絡上找到的原因基本是:
mp4 - PC/Apple/Android 通吃,和HTML5和flash播放器親和度都挺好,但是文件頭太大,結構復雜,長視頻的大文件頭影響加載速度的視頻體驗, 所以短視頻更常見

一、普通MP4

這里從網絡上找了一個普通MP4文件的結構圖,讓我們看一下它的文件結構:

普通MP4文件結構
一眼看去,完全懵逼了,果然結構復雜...

MP4實際代表的含義是 MPEG-4 Part 14。
其文件由若干個box組成,每個box有類型和長度,這里可以將box理解為一個數據對象塊。box中還可以包含子box,包含子 box 則稱之為container box

這里我從網絡上下載了一個普通MP4文件。在Mac平台上,我們用MediaParser軟件可以用來大致看一下這個MP4文件的構造。

mp4視頻文件舉例

1.1、ftyp

一個MP4文件有且只有一個 ftyp ,在MP4文件的開始位置,描述的文件的版本、兼容協議等 ;

1.2、moov

moov(Movie Box)是一個container box ,一般跟隨在ftyp之后,有且只有一個。
其不包含具體媒體數據,但包含本文件中所有媒體數據的宏觀描述信息(視頻創建時間、視頻修改時間、播放速率、視頻時長、音量大小、視頻寬高、字幕語言、聲道、視頻/音頻幀位置 等)。

moov box下,一般包含以下幾個box:

  • mvhd 中記錄了創建時間、修改時間、時間度量標尺、可播放時長等信息;
  • trak 可以有多個,描述了每個媒體軌道的具體信息;
  • udta user data;

1.3、mdat

mdat(Midia Data Box)MP4文件的媒體數據存放在這里。mdat中的數據幀依次存放,每個幀的位置、時間、長度都由moov中的信息指定。
mdat Box 基本上占據了視頻大小的 95% 以上,得益於 mp4 邊下邊播的效果,瀏覽器獲取到了部分 mdat box,就可以進行播放。

若希望詳細了解普通MP4文件結構,可參考文章:
mp4文件格式解析

結論

了解到此,大致可以了解到:
普通MP4文件播放時,ftyp與moov box需同時加載完成后,並下載部分mdat box的幀數據后,才能開始播放
那對於一些長視頻,確實存在文件頭過大,從而影響第一幀的加載速度問題。
另外,對於不是很規范的文件,例 mp4視頻文件舉例中moov box基本在文件最后的的MP4文件,還有可能存在視頻文件基本下載完成后才能播放的問題。

二、Fragment mp4 (fmp4)

在網絡上查找MP4文件結構時,發現一種Fragmented mp4 的文件結構圖

fmp4文件結構

fmp4 是基於 MPEG-4 Part 12 的流媒體格式。與普通MP4相比:

  • fmp4不需要一個 moov Box 來進行 initialization
  • fmp4 的 moov Box 只包含了一些 track 信息
  • fmp4 的 視頻/音頻 metadata 信息與數據都存在一個個 moof、mdat 中,它是一個流式的封裝格式

2.1、Fragment

在微軟的 Silverlight中的Smooth Streaming文件結構文件分為了多個Fragments,每個Fragment中包含moof和mdat。這樣的結構符合漸進式播放需求,mdat及其描述信息逐步傳輸,收齊一個Fragment便可播放其中的mdat

2.2、moof

這個box並不是MP4文件必須的部分。它是視頻分片的描述信息,其為流媒體格式(微軟的 Silverlight中的Smooth Streaming)中的重中之重。

三、參考

mp4文件格式解析

什么是「Fragmented mp4(fmp4)」, 它和普通 mp4 格式有什么區別?

========== THE END ==========

wx_gzh.jpg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM