操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    一、前言

    在最近工作中接觸到了視頻點播和直播業務,也了解到了一些流媒體的后端技術,這段時間希望將了解到的一些知識總結下來,這篇文章主要介紹 HLS 流媒體協議 的基礎知識。

    二、常見流媒體協議

    常用的流媒體協議主要有 HTTP 漸進下載和基于 RTSP/RTP 的實時流媒體協議,這兩種協議是完全不同的實現方式。主要區別如下:

    三、HLS 協議介紹

    HLS 協議是由 Apple 公司提出并推廣開來的,以下是來一段維基百科的定義:

    HTTP Live (縮寫是HLS)是一個由蘋果公司提出的基于HTTP的流媒體網絡傳輸協議。是蘋果公司 X和軟件系統的一部分。它的工作原理是把整個流分成一個個小的基于HTTP的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。在開始一個流媒體會話時,客戶端會下載一個包含元數據的 M3U (m3u8)文件,用于尋找可用的媒體流。HLS只請求基本的 HTTP 報文,與實時傳輸協議(RTP)不同,HLS可以穿過任何允許HTTP數據通過的防火墻或者代理服務器。它也很容易使用內容分發網絡來傳輸媒體流。蘋果公司把HLS協議作為一個互聯網草案(逐步提交),在第一階段中已作為一個非正式的標準提交到IETF。但是,即使蘋果偶爾地提交一些小的更新,IETF卻沒有關于制定此標準的有關進一步的動作。[1]

    ts流媒體格式播放器_ts流播放器_es流 ts流 哪個好

    在網上已經有很多關于 HLS 的資料,本文主要按照我的理解整理下 HLS 流媒體協議基礎知識。

    HLS 協議格式要求:

    HLS 協議優勢:

    HLS 協議劣勢:

    四、HlS 系統架構

    下圖來自 Apple 官網:

    HlS 系統架構

    ts流播放器_es流 ts流 哪個好_ts流媒體格式播放器

    HLS 支持直播或者點播,同時支持加密和認證。從概念上來說,HTTP通常包括三部分:服務器端、發布端、客戶端。

    1、HLS 服務器端

    服務器端主要負責將輸入的媒體數據進行編碼、封裝,并將封裝之后的文件切片,以滿足發布端的要求。其輸出可以是音視頻原始數據,也可以是編碼之后的數據,也可以是封裝好的 TS 數據。這也輸入最終會通過分片工具切分成發布端需要的格式。這里涉及三部分:

    2、HLS 分發端

    HLS 分發端較為簡單,只要使用標準的網絡服務器即可。它們負責接受客戶端請求,并將處理好的多媒體文件和資源發送給客戶端。如果并發量較大,可能需要邊緣網絡或其他內容分發網絡。分發系統是一個 web 服務器或者 web 緩存系統,它們能夠通過 HTTP 向客戶端發送媒體文件及索引文件。多數情況下,分發內容之前無需額外配置服務器、模塊,僅需很少的配置就在 web 服務器上正常工作。

    3、HLS 客戶端

    客戶端負責選擇合適的請求資源,下載器資源,然后解碼顯示(整成播放器的功能)。客戶端從獲取索引文件開始,通常使用給定的 URL 來識別該流的信息。這個索引文件一般給出了可用媒體文件、解密密鑰和其他可選流的位置。客戶端選定流之后,就開始順序下載每個可用的媒體文件。每個文件中包含特定流的連續分片。只要客戶端下載到足夠的數據,就可以開始解碼數據并顯示了。如果需要,客戶端負責讀取所有解密密鑰、認證或為用戶提供用于認證或解密的接口。客戶端可以一直持續這個過程,直到它遇到索引文件中的 #EXT-X- 標簽;若不存在該標簽,則表示該索引文件是一個直播源,客戶端需要定期更新索引文件,重復上述過程。

    較為常用的 HLS 系統中,使用硬編碼器將輸入的音頻編碼為 AAC、將輸入的視頻編碼為 h264,并將二者復用到 MPEG-TS 中,之后使用分片工具將其切分為一系列小的 TS 文件;這些文件將可以放到 web 服務器上。分片工具同時會創建并維護一個索引文件(HLS 中稱為 M3U8),其中包含可用媒體文件的列表。索引文件的URL會在 web 服務器上發布。客戶端可以讀取該索引文件,然后順序請求列出的媒體文件,這些分片可以無縫播放。

    es流 ts流 哪個好_ts流媒體格式播放器_ts流播放器

    4、小結

    左下方的 的視頻源是什么格式都無所謂,他與 之間的通信協議也可以任意(比如RTMP),總之只要把視頻數據傳輸到服務器上即可。這個視頻在 服務器上被轉換成 HLS 格式的視頻(TS 和 M3U8 文件)文件。細拆分來看 里面的 Media 的是一個轉碼模塊負責將視頻源中的視頻數據轉碼到目標編碼格式(H264)的視頻數據ts流媒體格式播放器,視頻源的編碼格式可以是任何的視頻編碼格式。轉碼成 H264 視頻數據之后,在 模塊將視頻切片,切片的結果就是 index file(m3u8)和 ts 文件了。圖中的 其實只是一個普通的 HTTP 文件服務器,然后客戶端只需要訪問一級 index 文件的路徑就會自動播放 HLS 視頻流了。

    下圖是一個簡單概括的流媒體播放實現時序圖:

    HLS播放實現時序圖

    簡單描述 HLS 的工作原理是將整個流分成一系列小的基于 HTTP 的文件下載,每個下載將加載整個潛在的無限制傳輸流中的一小部分。由于片段之間的分段間隔時間非常短,所以看起來是一條完整的播放流,實現的重點是對于視頻文件的分割。同時,HLS 還支持多碼率的切換,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。多清晰度就是這樣實現的。為了播放視頻,客戶端首先需要獲得播放列表文件,也就是根據 HLS 生成的片段列表,該列表中包含每個流媒體的文件,客戶端以類似輪詢的方式不斷重復加載播放列表文件并將片段追加實現流媒體的播放。

    五、示例分析

    對 .m3u8 的請求。這實際上是指向其他索引的指針,這些塊需要作為流媒體的一部分進行下載。m3u8 文件本質說其實是采用了編碼是 UTF-8 的 m3u 文件。它只是一個純索引文件,一個文件片段的列表,客戶單打開它并不是播放它,而是根據它里面的文件片段找到視頻文件的網路地址進行播放。

    ts流媒體格式播放器_es流 ts流 哪個好_ts流播放器

    這里請求一個 m3u8 文件打開看一下究竟是什么:

    curl?http://wowzaec2demo.streamlock.net/vod/_definst_/smil:streaming_tutorial/streaming_tutorial.smil/playlist.m3u8
    #EXTM3U
    #EXT-X-VERSION:5
    #EXT-X-STREAM-INF:BANDWIDTH=3128000,CODECS="avc1.4d001f,mp4a.40.2",RESOLUTION=1280x720
    chunklist_w1690990834_b3128000.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=1778000,CODECS="avc1.4d001e,mp4a.40.2",RESOLUTION=852x480
    chunklist_w1690990834_b1778000.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=1048000,CODECS="avc1.4d001e,mp4a.40.2",RESOLUTION=640x360
    chunklist_w1690990834_b1048000.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=738000,CODECS="avc1.4d0015,mp4a.40.2",RESOLUTION=428x240
    chunklist_w1690990834_b738000.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=528000,CODECS="avc1.4d000d,mp4a.40.2",RESOLUTION=312x176
    chunklist_w1690990834_b528000.m3u8

    我們分析該 m3u8 文件:

    第一個塊是 還是個 m3u8 文件,之后可以看到每個后續塊。每個塊都將顯示客戶端要下載的媒體 URI。同時可以觀察發現,這其實是不同清晰度的 m3u8 文件,客戶端根據網絡或者選項去選擇不同的清晰度的 m3u8 文件。上面的 m3u8 文件為一級 m3u8 文件,這兩個 m3u8 就稱為二級索引文件,那么我們就順著二級索引文件繼續查看:

    curl?http://wowzaec2demo.streamlock.net/vod/_definst_/smil:streaming_tutorial/streaming_tutorial.smil/chunklist_w570392994_b3128000.m3u8
    #EXTM3U
    #EXT-X-VERSION:5
    #EXT-X-TARGETDURATION:6
    #EXT-X-MEDIA-SEQUENCE:0
    #EXTINF:6.0,
    media_w570392994_b3128000_0.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_1.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_2.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_3.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_4.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_5.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_6.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_7.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_8.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_9.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_10.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_11.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_12.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_13.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_14.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_15.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_16.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_17.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_18.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_19.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_20.ts
    #EXTINF:6.0,
    media_w570392994_b3128000_21.ts
    #EXTINF:2.66,
    media_w570392994_b3128000_22.ts
    #EXT-X-ENDLIST

    我們分析該二級索引文件:

    這里我們看到了真正播放的流片段,即 ts 片,客戶端拿到的就是這個 ts 片,然后不斷下載請求到該片段并連續播放。有些人可能要問了,那 ts 文件又到底是個什么東西呢,那就下載來看看,拿著其中的一個 ts 文件瀏覽器打開保存到本地發現保存到本地的文件就可以直接打開,其實就是真正的流媒體文件,但是這個文件只是片段ts流媒體格式播放器,大概只有 6s 的時間。

    ts流媒體格式播放器_ts流播放器_es流 ts流 哪個好

    請求下該 “.ts”流片段:

    curl?-I?http://wowzaec2demo.streamlock.net/vod/_definst_/smil:streaming_tutorial/streaming_tutorial.smil/media_w570392994_b528000_0.ts
    HTTP/1.1?200?OK
    Accept-Ranges:?bytes
    Access-Control-Expose-Headers:?Date
    Server:?WowzaStreamingEngine/4.7.5.01
    Cache-Control:?no-cache
    Access-Control-Allow-Origin:?*
    Access-Control-Allow-Credentials:?true
    Access-Control-Allow-Methods:?HEAD,?GET,?POST
    Access-Control-Allow-Headers:?Overwrite,?Destination,?Content-Type,?Depth,?User-Agent,?X-File-Size,?X-Requested-With,?If-Modified-Since,?X-File-Name,?Cache-Control,?Range
    Date:?Sat,?05?Dec?2020?18:05:53?GMT
    Content-Type:?video/MP2T
    Content-Length:?426008

    六、總結

    HLS視頻流

    播放 HLS 視頻流的邏輯其實非常簡單,先下載一級 Index file,它里面記錄了二級索引文件(-A、-B、-C)的地址,然后客戶端再去下載二級索引文件,二級索引文件中又記錄了 TS 文件的下載地址,這樣客戶端就可以按順序下載 TS 流媒體文件并連續播放。

    活動推薦:

    參考資料:

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有