現在網上的視頻很多都是m3u8格式的,它們用這種格式有什麼好處?

小雞燉腦虎


下面我們一起談談m3u8是指什麼,有什麼好處。

M3U8視頻格式也是一種M3U,是某些移動設備例如安卓,蘋果手機瀏覽器緩存視頻的“專用視頻格式”。只是它的編碼格式是UTF-8格式。M3U用Latin-1字符集編碼。M3U8格式特點是帶有一個目錄信息或文件,而許多安卓手機或者iPhone手機瀏覽器緩存的電影格式都為M3U8,需要進行轉碼才可以播放。

  M3U8文件是指UTF-8編碼格式的M3U文件。M3U文件是記錄了一個索引純文本文件,打開它時播放軟件並不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。而M3U8有啥好處呢?主要是可以做多碼率的適配,根據網絡帶寬,客戶端會自動選擇一個適合自己碼率的文件進行播放,保證視頻流的流暢。

m3u8 文件其實是 HTTP Live Streaming(縮寫為 HLS) 協議的部分內容,而 HLS 是一個由蘋果公司提出的基於 HTTP 的流媒體網絡傳輸協議。

HLS 的工作原理是把整個流分成一個個小的基於 HTTP 的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。在開始一個流媒體會話時,客戶端會下載一個包含元數據的 extended M3U (m3u8) playlist文件,用於尋找可用的媒體流。HLS 只請求基本的 HTTP 報文,與實時傳輸協議(RTP)不同,HLS 可以穿過任何允許 HTTP 數據通過的防火牆或者代理服務器。它也很容易使用內容分發網絡來傳輸媒體流。

m3u8 文件實質是一個播放列表(playlist),其可能是一個媒體播放列表(Media Playlist),或者是一個主列表(Master Playlist)。但無論是哪種播放列表,其內部文字使用的都是 utf-8 編碼。

當 m3u8 文件作為媒體播放列表(Meida Playlist)時,其內部信息記錄的是一系列媒體片段資源,順序播放該片段資源,即可完整展示多媒體資源。其格式如下所示:

對於點播來說,客戶端只需按順序下載上述片段資源,依次進行播放即可。而對於直播來說,客戶端需要定時重新請求該 m3u8 文件,看下是否有新的片段數據需要進行下載並播放。

當 m3u8 作為主播放列表(Master Playlist)時,其內部提供的是同一份媒體資源的多份流列表資源(Variant Strean)。其格式如下所示:

該備用流資源指定了多種不同碼率,不同格式的媒體播放列表,並且,該備用流資源也可同時提供不同版本的資源內容,比如不同語言的音頻文件,不同角度拍攝的視屏文件等等。

如果你喜歡我的解答,歡迎評論。


編程小鑫


感謝您的閱讀!

其實這種格式的“罪魁禍首”是iPhone,這是蘋果推出的一種視頻播放標準。實際上,它的本質是一種索引文件,如果你打開後你會發現,它似乎就像一個目錄,裡面全是一些路徑,你如果想找到裡面的視頻,你得通過文本文件給打開,找到裡面的路徑。

因為這是iPhone推出的視頻播放標準,因此你可以使用iTunes自帶的播放器進行播放。一般來說,只要通過尋找它的路徑,你電腦中播放器m3u8文件,那麼就可以直接通過播放列表播放網絡在線音視頻。

我們現在來說一說,到底這種格式,如果想變成MP4格式,怎麼做呢?

  1. 我們首先得m3u8格式文件的存儲位置,因為我們知道它其實是索引文件,在通過“HTML查看器”或者將它的後綴改為txt,用文本格式打開就可以。
  2. 我們可以通過裡面的路徑找到緩存的視頻文件,把這些緩存的視頻文件複製到電腦。
  3. 在電腦通過先建一個文本文檔,內容輸入“copy /b D:\\合成視頻\\0.ts+1.ts+2.ts my視頻.ts”並保存。並且重命名後綴,改成“.bat”。

  4. 打開bat命令文件,進行視頻合成,使用格式轉換軟件把合成的視頻文件轉換成mp4的格式。(注意我們先建的文件,都是在你剛才保存視頻的文件夾中)

LeoGo科技


存在不同視頻格式的原因

視頻格式實質上是視頻編碼格式,以不同的方式對視頻進行編碼最終會呈現出我們現在看到的各種各樣的視頻格式。

為什麼我們需要對視頻進行編碼呢?因為數字視頻是對模擬視頻信號數字化的結果,而直接數字化而未經壓縮的視頻數據量是十分驚人的,1G容量的存儲器也只能存儲不到10秒的視頻圖像,巨大的視頻文件嚴重阻礙視頻的傳播擴散。


為了解決這個問題,我們需要尋找到一種既能對視頻大小進行壓縮,又能儘量保證畫面清晰度的方法。於是,各個組織機構開始研究視頻的壓縮技術,研究過程中科學家們發現,視頻圖像數據中其實包含大量的冗餘信息,通過特定的編碼技術,可以改變一些不太重要的像素值,這樣就可以大大減小視頻文件的存儲空間。

另外,要注意的是,視頻經過編碼後還不能直接到用戶手上,還需要經過封裝(經過編碼的數據以一定的方式放到文件中),所以更準確地來說,用戶平時看到的其實是視頻封裝格式,有時候視頻編碼格式名稱和封裝格式名稱一致,有時候不一致。

視頻格式沒有統一的原因

基於這個思想,相關領域的大公司開發出了自己的視頻編碼格式。之所以市面上出現各種各樣視頻格式並存的局面而不是進行統一:

一方面,因為實際有關公司的專利和利益問題,尤其是對於那些有自己產品完整生態的企業來說,擁有自己的視頻格式更方便連帶銷售,提高利潤。

另一方面,受硬件環境所限,視頻格式需要根據環境的不同進行優化調整,以達到更佳的視頻體驗,視頻環境差異大是導致視頻格式沒辦法統一的重要原因。這就好比人類其實只是需要一塊禦寒的布,但是會有不同款式的衣服產生一樣。



常見的視頻格式及M3U8格式的好處

由於相關國際組織制定的系列編碼標準的存在及大公司的壟斷,雖然市面上的視頻格式沒有統一,但是真正流行的其實也就那麼幾種。常見的視頻格式分類有:

MPEG格式:優點是儲存方式多樣,可以適應不同的應用環境。

AVI格式:優點是圖像質量好,可以跨多個平臺使用。

MOV格式:優點是可儲存的內容豐富,支持視頻、音頻、圖片、文字等。

WMV格式:優點可擴展性強,體積小,非常適合在網絡上傳播。

RM格式:優點是既可以保證靜止畫面的質量又能大幅地提高了運動圖像的畫面質量。

FLV格式:優點是文件體積小,加載速度很快,使得網絡觀看視頻文件非常流暢,是典型的視頻流媒體格式。


而問題中所提到的M3U8格式其實是蘋果公司推出的視頻播放標準,準確來說是一種索引文件,我們可以用M3U8格式文件來解析對應的視頻網絡地址,從而實現在線播放。它主要的好處是可以做多碼率適配,視頻網站能夠根據用戶的網絡帶寬情況,自動為客戶端匹配一個合適的碼率文件進行播放,從而保證視頻的流暢度。

其實現在很多視頻播放器都可以支持不同的視頻格式,實在不行的話可以下載格式轉化器將文件格式轉換一下。



趙廣亞


在 hls 出來之前,你想要在網頁上播放視頻,基本就要用 flash player 播放 flv 格式的視頻。但是 flash 性能不太好, 安全性也不好。所以才誕生了 hls, 並且 *.m3u8 採用的拉取視頻片段的方式 讓無狀態的 http 協議下也可以做流媒體


安石LY


M3U8是一個文本文件,使用記事本就可以打開查看裡面的內容。

M3U8俗稱播放列表文件,裡面的內容就是被播放的音視頻文件路徑或網址。只有這個才是音視頻文件真實的路徑。

如果裡面路徑是本地路徑,那麼導到別的設備上觀看,就需要把本地中對應的音視頻文件一起拷貝過去。單獨一個M3U8播放列表文件是沒用的。

如果裡面包含的路徑是網絡路徑(網址),那麼只要設備保持聯網,播放器支持m3u8文件,那麼就可以直接通過播放列表播放網絡在線音視頻。

但如果要想轉換視頻,那麼就只能把列表中對應的音視頻文件(在線的下載下來,本地的定位到本地對應路徑中去)導入轉換工具中。


弱電人


一個是playlist的格式,一個是視頻的壓縮格式,倆就不是一會事兒


TonyGao2k


M3U8有啥好處 ?網上搜索了一下,大家眾說紛紜,個人理解主要是可以做多碼率的適配,根據網絡帶寬,客戶端會選擇一個適合自己碼率的文件進行播放,保證視頻流的流暢。

在IOS device和mac上可以用http的方式進行分發,其中playlist標準為由m3u擴展而來的m3u8文件,媒體文件為MPEG2-TS或者AAC文件(audio only)。

m3u8文件有兩種應用場景:

多碼率適配流,

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000

http://example.com/low.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000

http://example.com/mid.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000

http://example.com/hi.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5"

http://example.com/audio-only.m3u8

單碼率適配流

#EXTM3U

#EXT-X-TARGETDURATION:5220

#EXTINF:5220,

http://media.example.com/entire.ts

#EXT-X-ENDLIST

國際標準組織對此的定義 rfc doc:http://tools.ietf.org/html/draft-pantos-http-live-streaming-06m3u8 文件是m3u文件的擴展。在該rfc中定義了擴展的關鍵字:其中:

#EXT-X-TARGETDURATION定義每個TS的最大的duration。#EXT-X-MEDIA-SEQUENCE定義當前m3u8文件中第一個文件的序列號,每個ts文件在m3u8文件中都有固定唯一的序列號,該序列號用於在MBR時切換碼率進行對齊。

#EXT-X-KEY

定義加密方式和key文件的url,用於取得16bytes的key文件解碼ts文件。

屬性:METHODURL#EXT-X-PROGRAM-DATE-TIME

第一個文件的絕對時間

#EXT-X-ALLOW-CACHE

是否允許cache。#EXT-X-ENDLIST表明m3u8文件的結束。live m3u8沒有該tag。#EXT-X-STREAM-INF屬性:BANDWIDTH 指定碼率PROGRAM-ID 唯一IDCODECS 指定流的編碼類型#EXT-X-DISCONTINUITY當遇到該tag的時候說明以下屬性發生了變化:file format number and type of tracksencoding parametersencoding sequence

timestamp sequence

#EXT-X-VERSION 該屬性用不用都可以,可以沒有

M3U8分頂級M3U8和二級M3U8, 頂級M3U8主要是做多碼率適配的, 二級M3U8才是真正的切片文件,

客戶端默認會首先選擇碼率最高的請求,如果發現碼率達不到,會請求郊低碼率的流

一個實際使用中的頂級M3U8文件如下 :

#EXTM3U#EXT-X-STREAM-INF:PROGRAM-ID=201273221265,BANDWIDTH=35840011.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=201273221265,BANDWIDTH=97280022.m3u8

上面頂級M3U8文件中又定義了 11.m3u8 和 22.m3u8 兩個二級文件,客戶端會選擇其中一個獲取其內容。

二級M3U8文件內容如下:

#EXTM3U#EXT-X-VERSION:1#EXT-X-TARGETDURATION:10#EXT-X-MEDIA-SEQUENCE:0#EXTINF:3,1-4.ts#EXTINF:8,1-6.ts#EXTINF:8,1-8.ts#EXTINF:8,1-10.ts#EXTINF:8,1-12.ts#EXTINF:8,1-14.ts#EXTINF:8,1-16.ts#EXTINF:9,1-18.ts#EXTINF:6,1-20.ts#EXTINF:8,1-22.ts#EXTINF:9,1-24.ts#EXTINF:3,1-26.ts#EXT-X-ENDLIST

客戶端拿到上面的二級M3U8文件後,會繼續請求裡面的文件,這時就可進行播放了。

上面講解的是點播的情況,直播的情況,M3U8文件裡面會有屬性告訴是直播,客戶端會定時來請求新的M3U8文件。


關於你的足記


M3U8是一個文本文件,使用記事本就可以打開查看裡面的內容。

M3U8俗稱播放列表文件,裡面的內容就是被播放的音視頻文件路徑或網址。只有這個才是音視頻文件真實的路徑。

如果裡面路徑是本地路徑,那麼導到別的設備上觀看,就需要把本地中對應的音視頻文件一起拷貝過去。單獨一個M3U8播放列表文件是沒用的。

如果裡面包含的路徑是網絡路徑(網址),那麼只要設備保持聯網,播放器支持m3u8文件,那麼就可以直接通過播放列表播放網絡在線音視頻。

但如果要想轉換視頻,那麼就只能把列表中對應的音視頻文件(在線的下載下來,本地的定位到本地對應路徑中去)導入轉換工具中。


中介網


片段流媒體,封裝內的格式很多


分享到:


相關文章: