點播和直播原理

一、流媒體協議

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

  1. 一種是分段漸近下載,一種是基於實時流來實現播放
  2. 協議不同,HTTP 協議的漸近下載意味着你可以在一臺普通的 HTTP 的應用服務器上就可以直接提供點播和直播服務
  3. 延遲有差異,HTTP 漸近下載的方式的延遲理論上會略高於實時流媒體協議的播放
  4. 漸近下載會生成索引文件,所以需要考慮存儲,對 I/O 要求較高

二、HLS(分段漸進下載方式)

1、簡介

HLS (HTTP Live Streaming)是蘋果公司實現的基於 HTTP 的流媒體協議,可以實現流媒體的點播和直播播放。當然,起初是隻支持蘋果的設備,目前大多數的移動設備也都實現了該功能。HTML5 直接支持該協議。

2、原理

HLS 點播是常見的分段 HTTP 點播,就是將視頻流分成不同的片段,客戶端不斷的去下載該片段,由於片段之間的分段間隔時間非常短,所以看起來是一條完整的播放流,實現的重點是對於媒體文件的分割。同時,HLS 還支持多碼率的切換,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。多清晰度就是這樣實現的。
爲了播放媒體流,客戶端首先需要獲得播放列表文件,也就是根據 HLS 生成的片段列表,該列表中包含每個流媒體的文件,客戶端以類似輪詢的方式不斷重複加載播放列表文件並將片段追加實現流媒體的播放。
播放列表文件就是通常我們所說的 m3u8 文件,是以後綴 .m3u8 Content-Type是”application/vnd.apple.mpegurl” 的文件。

3、m3u8 介紹與分析

m3u8 文件本質說其實是採用了編碼是 UTF-8 的 m3u 文件。
它只是一個純索引文件,一個文件片段的列表,客戶單打開它並不是播放它,而是根據它裏面的文件片段找到視頻文件的網路地址進行播放

三、HLS 直播

HLS 直播原理上還是按點播的方式實現的,通過 http 協議傳輸,生成 ts 索引文件以及 m3u8 索引文件。直播的複雜在於先要採集視頻源和音頻源的數據,然後再進行 H264 編碼和音頻 ACC 編碼,並封裝成 ts 包,其中還要考慮 ts 的分段生成策略。

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