“m3u8格式簡析”與“視頻秒開優化”

“m3u8格式簡析”與“視頻秒開優化”

公司要求對 視頻秒開率 進行優化(一秒內成功加載的播放數/播放總數)。
因此本意是想對比一下m3u8與mp4視頻格式,並瞭解m3u8格式優缺點,以確定一個優化大概方向。
但對m3u8做簡單瞭解後,覺得有必要對m3u8文件格式做一個記錄。

  • m3u8視頻 是一種什麼樣的視頻格式?
  • m3u8視頻 舉例
  • 維基百科對m3u8的定義
  • m3u8 與 MP4 對比
  • 提高視頻秒開率的一個方案

一、m3u8視頻 是一種什麼樣的視頻格式?

m3u8不是一種視頻格式,而是一種純文本文件。
m3u8視頻文件格式中存放了視頻的基本信息分段視頻的索引地址 (將一整個視頻分成了時長不同的很多小段)。當播放m3u8視頻時,就是按順序下載播放索引列表的視頻,從而完成一部完整視頻的播放。

以上幾句話是我對m3u8視頻格式是什麼東西的一個總結,可能有用詞不當的地方。但想了很長時間,覺得這樣說已經是我能表達的最容易理解的說法了。

但只是這樣說,可能還是有些抽象,因此下邊我會舉個例子。

二、m3u8視頻 舉例

這是一個來自網易公開課的視頻播放地址:
http://flv0.bn.netease.com/videolib1/1903/15/9b4wxrd1g/SD/movie_index.m3u8
這個地址可以在mac瀏覽器上直接播放。
在這裏插入圖片描述

下邊我們將這個m3u8文本文件下載到本地,打開:

// M3U8文件必須包含的標籤,並且必須在文件的第一行
#EXTM3U
// M3U8文件的版本,常見的是3
#EXT-X-VERSION:3
// 第一個TS分片的序列號
#EXT-X-MEDIA-SEQUENCE:0
// 是否允許cache
#EXT-X-ALLOW-CACHE:YES
// 每個每個媒體段(ts)的最大的時長
#EXT-X-TARGETDURATION:39
// 每個媒體段(ts)的持續時間
#EXTINF:1.084422,
/videolib1/1903/15/9b4wxrd1g/SD/9b4wxrd1g-mobile-0.ts
// 每個媒體段(ts)的持續時間
#EXTINF:2.002000,
/videolib1/1903/15/9b4wxrd1g/SD/9b4wxrd1g-mobile-1.ts
// 每個媒體段(ts)的持續時間
#EXTINF:2.919578,
/videolib1/1903/15/9b4wxrd1g/SD/9b4wxrd1g-mobile-2.ts

// ... 中間部分省略

/videolib1/1903/15/9b4wxrd1g/SD/9b4wxrd1g-mobile-130.ts
// 每個媒體段(ts)的持續時間
#EXTINF:11.386378,
/videolib1/1903/15/9b4wxrd1g/SD/9b4wxrd1g-mobile-131.ts
// 表示PlayList的末尾了
#EXT-X-ENDLIST
  • 註釋說明是我後加的,爲了是讓大家瞭解m3u8文本格式各標籤的大概含義
  • 可以看到這個公開課的完整視頻,被分成了很多小段的 ts 結尾的視頻文件

這裏我們隨意下載一段視頻,比如第一段視頻
http://flv0.bn.netease.com/videolib1/1903/15/9b4wxrd1g/SD/9b4wxrd1g-mobile-0.ts

在這裏插入圖片描述

到這裏其實就看的很清楚了,m3u8視頻 就是通過按順序下載播放一段段時長不同的ts視頻,來完成整部視頻播放的

再把前邊我總結的,m3u8視頻到底是什麼重新讀一遍:

m3u8不是一種視頻格式,而是一種純文本文件。m3u8視頻文件格式中存放了視頻的基本信息 和 分段視頻的索引地址 (將一整個視頻分成了時長不同的很多小段)。當播放m3u8視頻時,就是按順序下載播放索引列表的視頻,從而完成一部完整視頻的播放。

三、維基百科對m3u8的定義

瞭解m3u8時,也參考了維基百科,但其給出的答案並不太讓我滿意。下邊是我在維基百科上查到的內容。當然內容我進行了簡單的組合…

  • M3U8: m3u8 是一種純文本文件,採用UTF-8編碼,是一種Unicode版本的m3u文件。
  • **M3U : **m3u 是一種播放多媒體列表的文件格式,可以指定一個或多個多媒體文件的位置,它的設計初衷是爲了播放音頻文件。比如MP3,但是越來越多的軟件現在用來播放視頻文件列表。
    M3U文件是記錄了一個索引純文本文件,打開它時播放軟件並不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。
  • HLS :m3um3u8 文件都是蘋果公司使用的HLS (HTTP Live Streaming)格式的基礎,這種格式可以在iPhone和Macbook等設備播放。
    HLS 點播是常見的分段 HTTP 點播,就是將視頻流分成不同的片段,客戶端不斷的去下載該片段,由於片段之間的分段間隔時間非常短,所以看起來是一條完整的播放流

四、m3u8 與 MP4 對比

瞭解了m3u8的文件格式和播放原理,下邊就可以對m3u8 與mp4 做一個簡單對比了。

  • mp4 對HTML5和flash播放器親和度都挺好。但是文件頭太大,結構複雜,長視頻的大文件頭影響加載速度的視頻體驗,所以短視頻更常見
  • m3u8 採用蘋果的HLS協議,目前 ios與android設備均已支持。由於其工作原因是將整個視頻流分成一個個小的基於Http的文件進行下載播放,因此支持視頻直播

關於mp4與m3u8格式詳細對比,曾寫過這樣一篇文章,可供大家參考:
mp4相比m3u8第一幀加載較慢的原因?
https://xiaxl.blog.csdn.net/article/details/103370511

五、提高視頻秒開率的一個方案

A、視頻重轉碼爲m3u8

將播放格式由mp4更換爲m3u8

B、m3u8轉碼規則:

僅僅重轉碼,還是遠遠不夠的。
必須對m3u8文件切片大小執行一定的限制規則,對m3u8文件切片大小可做如下規定:

  • m3u8文件的 第一個ts片段長度爲1~3秒
  • m3u8文件的 第二個ts片段長度爲3~5秒
  • m3u8文件的 第三個ts片段長度爲10秒左右
  • m3u8文件的 第四個ts片段以上長度爲30秒左右
  • m3u8文件 最長ts片段不超過35秒

根據此規則重轉碼後,其視頻播放秒開率相較mp4播放格式,相信會有一個質的提升。

參考

https://zh.wikipedia.org/wiki/HTTP_Live_Streaming

https://www.zhihu.com/question/20256377

https://www.cnblogs.com/renhui/p/10351870.html

https://www.zhihu.com/question/21087379

https://blog.csdn.net/qq_35425276/article/details/79612348

https://www.jianshu.com/p/426425cad08a

https://blog.csdn.net/DeliaPu/article/details/79013812

https://www.jianshu.com/p/2ce402a485ca

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

wx_gzh.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章