免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      直播背后的原理是?初識視頻流協(xié)議 HLS 和 RTMP

      直播背后的原理是?初識視頻流協(xié)議 HLS 和 RTMP

      HTTP Live Streaming (HLS)

      HTTP Live Streaming 簡稱為 HLS, 是一個基于 HTTP 的視頻協(xié)議,由 APPLE 公司提出和實現(xiàn)。蘋果公司的很多產(chǎn)品都支持 HLS 協(xié)議,譬如 Mac OS 上的 QuickTime、Safari 以及 iOS 上的 Safari。蘋果 2009 年提出該協(xié)議,HLS 是 iOS 設(shè)備默認(rèn)要求的視頻流標(biāo)準(zhǔn)。安卓也支持HLS,見文章Guide to Mobile Video Streaming with HLS | Mux blog

      Since then, Android has added support, as have most other platforms.

      HLS 因為以下幾個原因比較受歡迎。

      • HLS 幾乎可隨處播放。 幾個大平臺 web、mobile、tv 基本都有免費的HLS 播放器支持。
      • 蘋果 要求 HLS。 如果你想在 iOS 設(shè)備直播,逃不了的。
      • HLS 相對簡單。 它使用了普遍且已經(jīng)存儲的視頻格式(MP4 或 TS,伴隨著 H.264 和 AAC 等編解碼器), 另外附加了一個丑陋但人類可讀的文本格式(m3u8).
      • 它通過 HTTP 工作。 不需要跑特殊的服務(wù)(不像老舊校風(fēng)派的 RTMP 協(xié)議或者新潮的 WebRTC 協(xié)議). HLS 可以方便的透過防火墻或者代理服務(wù)器,而且可以很方便的利用 CDN 進(jìn)行分發(fā)加速,并且客戶端實現(xiàn)起來也很方便。

      原理

      HLS 協(xié)議基于 HTTP,而一個提供 HLS 的服務(wù)器需要做兩件事:

      • 編碼: 以 H.264 格式對圖像進(jìn)行編碼,以 MP3 或者 HE-AAC 對聲音進(jìn)行編碼,最終打包到 MPEG-2 TS(Transport Stream)容器之中;
      • 分割: 把編碼好的 TS 文件等長切分成后綴為 ts 的小文件,并生成一個 .m3u8 的純文本索引文件

      HLS 把整個流分成一個個小的基于 HTTP 的文件來下載,每次只下載一些。HLS 協(xié)議由三部分組成:HTTP、M3U8、TS。這三部分中,HTTP 是傳輸協(xié)議,M3U8 是索引文件,TS 是音視頻的媒體信息。

      瀏覽器使用的是 m3u8 文件。在 HTML5 頁面上使用 HLS 非常簡單,直接

      或者

      HLS的index文件就是m3u8的文件,先下載一級index file(master_playlist.m3u8),它里面記錄了二級索引文件的地址(Alternate-A、Alternate-B、Alternate-C)的地址,然后客戶端再去下載二級索引文件,二級索引文件中又記錄了TS文件的下載地址,這樣客戶端就可以按順序下載TS視頻文件并連續(xù)播放。

      一個典型的一級索引 m3u8 文件格式如下:

      #EXTM3U#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2000000,CODECS=”mp4a.40.2, avc1.4d401f”skiing-720p.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=375000,CODECS=”mp4a.40.2, avc1.4d4015″skiing-360p.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=750000,CODECS=”mp4a.40.2, avc1.4d401e”skiing-480p.m3u8#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3500000,CODECS=”mp4a.40.2, avc1.4d401e”skiing-1080p.m3u8

      [免費分享]007,資料包括《Andoird音視頻開發(fā)必備手冊+音視頻學(xué)習(xí)視頻+學(xué)習(xí)文檔資料包+大廠面試真題+2022最新學(xué)習(xí)路線圖》等,點擊下方鏈接加衛(wèi)星獲取

      FFmpegWebRTCRTMPRTSPHLSRTP播放器-音視頻流媒體高級開發(fā)

      詳細(xì)介紹如下:

      • bandwidth指定視頻流的比特率
      • PROGRAM-ID無用無需關(guān)注,
      • 每一個#EXT-X-STREAM-INF的下一行是二級index文件的路徑,可以用相對路徑也可以用絕對路徑。例子中用的是相對路徑。

      一級索引 m3u8 文件中記錄了不同比特率視頻流的二級index文件路徑,客戶端可以自己判斷自己的現(xiàn)行網(wǎng)絡(luò)帶寬,來決定播放哪一個視頻流。也可以在網(wǎng)絡(luò)帶寬變化的時候平滑切換到和帶寬匹配的視頻流。

      一個二級索引文件格式內(nèi)容如下 (skiing-480p.m3u8):

      #EXTM3U#EXT-X-TARGETDURATION:10#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:0#EXT-X-PLAYLIST-TYPE:VOD#EXTINF:9.97667,file000.ts#EXTINF:9.97667,file001.ts#EXTINF:9.97667,file002.ts#EXTINF:9.97667,file003.ts#EXTINF:9.97667,file004.ts

      可以簡單的認(rèn)為二級 m3u8 就是包含多個 ts 文件的播放列表。播放器按順序逐個播放,全部放完再請求一下 m3u8 文件,獲得包含最新 ts 文件的播放列表繼續(xù)播,周而復(fù)始。整個直播過程就是依靠一個不斷更新的 m3u8 和一堆小的 ts 文件組成,m3u8 必須動態(tài)更新,ts 可以走 CDN。

      整體架構(gòu)

      HLS的架構(gòu)分為三部分:Server,CDN,Client 。即服務(wù)器、分發(fā)組件和客戶端。架構(gòu)圖如下:

      HLS 缺點

      HLS 不是萬能的,它也有一個致命的弱點:延遲現(xiàn)象非常明顯。如果每個 ts 按照 5 秒來切分,一個 m3u8 放 6 個 ts 索引,那么至少就會帶來 30 秒的延遲。如果減少每個 ts 的長度,減少 m3u8 中的索引數(shù),延時確實會減少,但會帶來更頻繁的緩沖,對服務(wù)端的請求壓力也會成倍增加。所以只能根據(jù)實際情況找到一個折中的點。

      另外一點, HLS 基于短連接 HTTP,HTTP 是基于 TCP 的,這就意味著 HLS 需要不斷地與服務(wù)器建立連接,TCP 每次建立連接時的三次握手、慢啟動過程、斷開連接時的四次揮手都會產(chǎn)生消耗。

      Real Time Messaging Protocol (RTMP)

      Real Time Messaging Protocol(簡稱 RTMP)是 Macromedia 開發(fā)的一套視頻直播協(xié)議,現(xiàn)在屬于 Adobe。

      協(xié)議基于 TCP,是一個協(xié)議族,包括 RTMP 基本協(xié)議及 RTMPT/RTMPS/RTMPE 等多種變種。RTMP 是一種設(shè)計用來進(jìn)行實時數(shù)據(jù)通信的網(wǎng)絡(luò)協(xié)議,主要用來在 Flash/AIR 平臺和支持RTMP協(xié)議的流媒體/交互服務(wù)器之間進(jìn)行音視頻和數(shù)據(jù)通信。

      無法支持移動端 WEB 播放是它的硬傷。雖然無法在iOS的H5頁面播放,但是iOS原生應(yīng)用可以寫解碼去解析的。瀏覽器端,HTML5 video標(biāo)簽無法播放 RTMP 協(xié)議的視頻,可以通過 video.js 來實現(xiàn)。

      其主要優(yōu)點:

      • 實時性非常好,延時較小,通常為 1-3s
      • 基于 TCP 長連接,不需要多次建連。

      HLS 和 RTMP 對比

      整體直播方案

      如上所見,兩個協(xié)議各有所長,所以實際項目中需要自己抉擇到底采用哪種方案。直播整體架構(gòu)如下。

      【學(xué)習(xí)更多-進(jìn)入鏈接點擊免費報名,即可開始學(xué)習(xí)~】

      【免費】FFmpeg/WebRTC/RTMP/NDK/Android音視頻流媒體高級開發(fā)-學(xué)習(xí)視頻教程-騰訊課堂

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
      (0)
      用戶投稿
      上一篇 2022年6月25日 06:23
      下一篇 2022年6月25日 06:23

      相關(guān)推薦

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時間:周一至周五,10:30-18:30,節(jié)假日休息