HTTP 媒體流架構 http://www.apple.com.cn/developer/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/HTTPStreamingArchitecture/HTTPStreamingArchitecture.html#//apple_ref/doc/uid/TP40008332-CH101-SW2
HTTP Live媒體流允許您通過普通的Web伺服器將即時的或者預先錄製的視頻和音頻發送到運行iOS 3.0及以上版本的裝置或者安裝了QuickTime X及以後版本的案頭電腦上,並支援加密和使用者驗證。 概述
HTTP Live媒體流由三部分組成:伺服器組件,分發組件和用戶端。
伺服器組件負責將輸入的媒體流進行數字編碼,並且以適合發布的格式進行封裝,然後準備發布。
分發組件由標準的Web伺服器組成,負責接受用戶端的請求並將準備好的媒體內容和相關資源發送到用戶端。對於大規模部署,Edge網路或者其他內容分髮網絡可能會被使用。
用戶端負責請求合適的媒體內容,下載媒體資源,並將媒體內容重新組裝,以連續的媒體流形式展現給使用者。在iOS 3.0及以後版本的裝置,安裝了QuickTime X及以後版本的案頭電腦中已經內建了用戶端。
在一個典型的配置中,硬體編碼器接受音頻–視頻輸入,並使用MPEG-4編碼,輸出MPEG-2 TS流,然後被分段軟體劃分為一系列簡短的時間段並儲存為媒體檔案。這些媒體檔案部署在Web伺服器上。分段軟體同時還建立並維護包含這些媒體檔案引用的索引檔案。索引檔案的URL在Web伺服器上發布。用戶端讀取索引檔案,然後按順序向伺服器請求媒體檔案並無停頓的顯示它們。
一個簡單的HTTP Live媒體流配置樣本如圖1-1所示。 圖 1-1 基本配置
輸入可以是即時的或者預先錄製的內容,通常會被現有的硬體編碼成MPEG-2 TS流。MPEG2 TS流然後被劃分成一系列時間段,並儲存為.ts媒體檔案。這一步通常由軟體工具完成,如Apple的媒體流分段器。
僅有音訊媒體流可以是一系列簡單的MPEG檔案,編碼格式或者是MP3,或者是帶有ADTS頭部的AAC。
分段器同時會建立索引檔案,其包含媒體檔案的列表以及一些中繼資料。索引檔案的格式是.M3U8。用戶端會訪問索引檔案的URL,然後按順序向伺服器請求索引裡面的媒體檔案。 伺服器組件
伺服器要求一個媒體編碼器,這可以是現有的硬體,然後還需要一個將編碼好的媒體內容分段並儲存成檔案的方法,這可以是軟體如Apple提供的媒體流分段器。 媒體編碼器
媒體編碼器從音頻視頻裝置接收即時資訊,進行編碼和封裝。編碼應該是用戶端裝置支援的編碼集合之一,例如視頻的H.264和音訊HE-AAC。目前,支援的發布格式是音頻和視頻的MPEG-2 TS流,或者只有音訊MPEG基本流。
編碼器在本網上將MPEG-2 TS流發布到媒體流分段器。
注意:不要將MPEG-2 TS流和MPEG-2視頻壓縮混淆。TS流是一種打包格式,可以使用多種壓縮技術。目前只可使用視訊H.264和音頻AAC的MPEG-2 TS流。只有音訊媒體內容可以是MPEG-2 TS流,也可以是MPEG-2基本流,要麼是帶ADTS頭的AAC格式,要麼是MP3格式。
重要:視頻編碼器在編碼過程中不應該更改媒體流的設定,如尺寸或轉碼器類型。
媒體流分段器
媒體流分段器通常是一個軟體,從本網讀入TS流並將它分成一系列相等時間的媒體檔案。即使每段都是一個單獨的檔案,從連續媒體流中產生的視頻檔案仍然可以被無縫的重構。
分段器同時會建立一個包含各媒體檔案引用的索引檔案。每當分段器完成一個新的媒體檔案,索引檔案就會被更新。索引檔案被用來確認媒體檔案的可用性和位置。分段器也可以加密每個媒體段並建立一個密鑰檔案。
媒體分段被儲存為.ts檔案(MPEG-2媒體流),索引檔案被儲存為.M3U8檔案,這是儲存MP3播放清單的.m3u格式的一種擴充。
注意:因為索引檔案格式是.m3u格式的擴充,並且系統也支援.mp3的音頻檔案,所以用戶端也相容傳統的MP3播放清單。
下面是一個非常簡單的.M3U8檔案樣本,該樣本包含三個未加密10秒鐘媒體檔案:
#EXTM3U |
#EXT-X-MEDIA-SEQUENCE:0 |
#EXT-X-TARGETDURATION:10 |
#EXTINF:10, |
http://media.example.com/segment1.ts |
#EXTINF:10, |
http://media.example.com/segment2.ts |
#EXTINF:10, |
http://media.example.com/segment3.ts |
#EXT-X-ENDLIST |
索引檔案可能會包含密鑰檔案的URL和可切換的索引檔案以支援不同的頻寬。關於索引檔案格式的更多細節,請參考HTTP Live媒體流規範的IETF互連網草案。 檔案分段器
如果您已經有媒體檔案,且該媒體檔案使用了支援的轉碼器編碼,您可以使用檔案分段器來將它封裝成MPEG媒體流並劃分成相等長度的時間段(如果檔案已經封裝在MPEG-2 TS流中,檔案分段器將會略過這步)。檔案分段器允許您使用利用現有的視頻和音頻通過HTTP Live媒體流來提供ApsaraVideo for VOD。檔案分段器完成媒體流分段器同樣的任務,但是是以檔案而不是媒體流為輸入。 媒體分段檔案
媒體分段檔案通常由媒體流分段器基於編碼器的輸出產生,由一系列視頻編碼是H.264以及音頻編碼是AAC的MPEG-2 TS流的.ts 檔案組成。對於只有音訊廣播來說,分段器可以輸出MPEG基本語音流,語音編碼可以是帶有ADTS頭部的AAC,也可以是MP3。
或者,單獨的建立.M3U8檔案和媒體分段檔案並遵守發布的規範也是可以的。例如,對於只有音訊廣播來說,您可以建立使用文字編輯器建立.M38U檔案,並列出一系列現有的.MP3檔案。 分發組件
分發系統可以是一個Web伺服器或者Web緩衝系統,基於HTTP協議發布媒體檔案和索引檔案。不需要定製的伺服器模組,只需要對Web伺服器進行很少的配置。
推薦的配置通常只限於指定.M3U8檔案和.ts檔案的MIME類型關聯。
副檔名 |
MIME類型 |
.M3U8 |
application/x-mpegURL或者vnd.apple.mpegURL |
.ts |
video/MP2T |
調整.M3U8檔案的存活時間屬性(Time-to-Live)對於下載流的Web緩衝機制來說可能是必須的,因為這些檔案會被頻繁的覆蓋,每個請求下載的應該是最新版本。 用戶端
用戶端從擷取索引檔案開始,並基於URL來標識一個媒體流。索引檔案指定了可用媒體檔案的位置,解密的密鑰,以及可切換的媒體流。對於選定的媒體流,用戶端按順序下載每個可用的媒體檔案。每個檔案包含媒體流的一個連續的段。一旦足夠的資料下載完畢,用戶端開始向使用者播放重新組合的媒體流。
用戶端負責擷取解密密鑰,驗證使用者,或者按需要顯示使用者驗證和解密媒體檔案的使用者介面。
這個過程將一直重複直到遇到索引檔案中的#EXT-X-ENDLIST標籤。如果沒有遇到#EXT-X-ENDLIST 標籤,則認為該索引檔案是進行中的廣播的一部分,用戶端會周期性的重新載入新的索引檔案。用戶端會在更新後的索引檔案中尋找新的媒體檔案以及加密金鑰並將這些URL加到播放清單中。