關於對html5播放實時視頻流的預研

HTML5不能用來直播視頻節目

對於一般的視頻文件,HTML5都能很好的處理,但是據研究發現,HTML5還無法用於在線直播視頻節目。不過蘋果已經通過HTTP Live Streaming對HTML5的這一不足之處進行了彌補,它可以通過HTTP傳輸H.264的文件塊,但目前這項技術只能用於Safari瀏覽器上。

蘋果平臺上的媒體流播放技術HLS


一如蘋果的強勢作風,蘋果對其旗下的iPhone、iPod、iPad、Apple TV各種設備上的視頻數據播放有強制的技術限制。首先,說說音視頻數據的數據壓縮格式要求。

1.必須使用H.264的編碼壓縮格式。iPhone 3G或者更新版本、iPod touch 第二代或者更新的版本可以選擇支持H.264 Baseline 3.1 ,爲了兼容這些設備的舊版本,則需要支持H.264 Baseline 3.0。對iPad,Apple TV 2 或者更新的版本,可以選擇使用Baseline profile 3.0,Baseline profile 3.1或者是Main profile 3.1。其選擇原則可以總結爲:大屏幕的視頻數據使用Main Profile3.1;小屏幕的視頻數據使用Baseline profile 3.1,爲了兼容舊版本的平臺,需要同時支持Baseline Profile的3.0版本。

2.音頻編碼壓縮格式

HE-AAC/AAC-LC,stereo或者是MP3(MPEG-1 Audio Layer 3),stereo。

其次,說說視頻流播放技術要求

1.視頻流時長超過十分鐘或者視頻流五分鐘內數據流量超過5MB需要強制使用Http Live Stream技術方案。

2.如果應用在無線蜂窩網絡(2g/3g等網絡)中使用Http Live Stream,至少需要提供一個在64kbps或者更低帶寬下的視頻數據流(例如,提供一個版本只保留聲音與靜態圖片)。

3.不滿足要求的軟件將被下架。

可以說,Http Live Stream技術(下文簡稱爲HLS)是蘋果視頻播放方案的核心。

什麼是HLS

維基百科把HLS定義爲蘋果公司實現的一種完全基於HTTP的媒體流協議。要理解HLS,先看看HLS的典型組網結構。在蘋果公司的技術文檔描述中HLS組網由三部分組成,後臺服務器端Server 、分發模塊Distribution 、以及客戶端Client。


後端Server生成用於最終用於傳輸的媒體數據,原始的語音視頻數據(例如H.264的視頻和AAC的音頻)被打包成MPEG-2的傳輸數據流(MPEG transport stream,由於定義在MPEG-2規範的第一部分,又叫做MPEG-2 transport stream)。MPEG-2的傳輸數據流被分割成一塊一塊,例如,每一塊存儲在一個後綴爲ts的媒體文件中。

與此同時,生成一個對應的文件後綴爲m3u8的索引文件。


媒體流索引文件與對應的一系列媒體文件存放在分發模塊Distribution 中,分發模塊Distribution是一個標準的Web 服務器,通過標準的HTTP訪問,客戶端Client可以獲取到媒體流的索引文件,並通過索引文件逐個獲取媒體流的分塊ts文件。客戶端Client據此可以拼接出完整的視頻流,顯示給最終的用戶。相對於其他移動平臺上使用的基於UDP協議的RTSP媒體數據流播放方案,分發模塊Distribution僅僅使用HTTP連接傳輸所有的數據,使其多媒體數據流能夠最廣泛的穿越各種邊緣網絡的網關、路由器、網絡代理設備。此外,分發模塊Distribution可以和各種數字內容分發的前端機器合作,提供緩存、媒體數據的分佈式存儲等。

索引文件的一個典型例子:


這裏總結一下支持HLS的非PC客戶端,蘋果公司所出的所有設備,包括iPhone、iPad、iPod、Apple TV均內置支持HLS,並且只支持HLS(不支持其他平臺使用的RTSP媒體數據流)。Google的Android 3.0以後的版本也支持HLS。

在網頁中訪問HLS視頻數據流代碼如下:


視頻數據的“實時”轉碼功能

移動互聯網上的終端只具有有限的多媒體編解碼能力,其原因分析起來,一來受限於平臺的多媒體能力支持,二來受限於版權授權的限制,像PC電腦特別是國內的PC電腦上,幾乎無限制的在系統上安裝了各種編解碼器,具有幾乎是無限的視頻編解碼能力。於是,蘋果平臺上有一類軟件能完成下面的功能,PC電腦上安裝一個服務器,客戶端運行在iPad/iPhone等移動互聯網終端上,運行在PC電腦上的模塊負責把多媒體數據流“實時”轉換成

移動互聯網終端能支持的碼流,Air Vedio/Air Play it就是這類應用。這類應用受限與蘋果平臺只支持HLS,勢必也只能使用HLS方案。

下面的抓包在Air Vedio的服務器端PC側進行抓包。下面這個HTTP請求是獲取HLS多媒體流的索引文件。


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