M3U8格式小結
-
Header
EXTM3U
EXT-X-TARGETDURATION:12
EXT-X-VERSION:3
```
-
Footer
#EXT-X-ENDLIST
-
Body
#EXTINF:A, http://ac-gql3ob7p.uu.com/2c6a453bdd824.mp4 #EXTINF:B, http://ac-gql3ob7p.clouddn.com/2c6a453bdd8171b07924.flv #EXTINF:C, http://ac-gql3ob7p.clouddn.com/2c6a453bdd8171b07924.ts
以上是格式結構分解,頭部的定義還不是特別清楚,所以找了一個現成的。
通過測試,總結了M3U8格式文件的一些特點。
當播放器播放M3U8的時候,實際上M3U8是一個播放列表,把一些小視頻組合在一起播放,理論上只要符合格式要求,里面可以放任何不同的視頻格式,只要你當前的播放器支持,只要你里面放的URL正確有效。
當播放器加載一個M3U8的時候,界面計算了視頻的總長度,該長度是根據#EXTINF:之后的數字累加而得,也就是說A+B+C。然而播放器在真正開始播放視頻的時候,會加載真實視頻下的時間,也就是說如果你所有視頻長度加起來只有30秒,即使你這里A+B+C結果為30分鐘,也就只有剛開始播放器顯示30分鐘,一旦播放就會顯示真實時間。當然,播放器只計算了目前在播放的小片段以及已經緩沖的內容,如果希望得到正確的時間請寫正確的時間,有一個小技巧就是,如果你提前知道M3U8的總時間,那就在第一段寫上總時間。
通過測試#EXTINF:之后的數字寫不寫都能通過,但是影響播放體驗,不便于進度條邏輯的處理。
M3U8在移動端的支持還是比較好的,iOS和Android原生都支持這種播放形式,在PC端可能要借助各種工具了。
M3U8還有一個最重要的特點,就是必須掛起在網絡上播放,所以請至少在本地服務器上掛著,通過http:127.0.0.1/videos/xxx.m3u8來播。
PS:由于地址是網上個人的云空間,所以文中都是改過的地址,不能讓讀者測試,這點請見諒!如果有新的發現會繼續總結。