HTTP Live Streaming (HLS) 視頻直播技術

常用的流媒體協議主要有 HTTP 漸進下載和基於 RTSP/RTP 的實時流媒體協議,這二種基本是完全不同的東西,目前比較方便又好用的我建議使用 HTTP 漸進下載的方法。在這個中 apple 公司的 HTTP Live Streaming 是這個方面的代表。它最初是蘋果公司針對iPhone、iPod、iTouch和iPad等移動設備而開發的流.現在見到在桌面也有很多應用了, HTML5 是直接支持這個。

我們可以看看 HTTP Live Streaming 是怎麼樣工作的。平時的直播技術中,播放模式中必須等待整個文件下載完才行,在 HLS 技術中 Web 服務器向客戶端提供接近實時的音視頻流。但在使用的過程中是使用的標準的 HTTP 協議,所以這時,只要使用 HLS 的技術,就能在普通的 HTTP 的應用上直接提供點播和直播。
要詳細瞭解原理,我們先看看這個所需要的步驟。

視頻採集 ->編碼器 -> 流分割 -> 普通 web 服務(索引文件和視頻文件) -> 客戶端

內容準備的過程大約二種,一是視頻採集,編碼器首先將攝像機實時採集的音視頻數據壓縮編碼爲符合特定標準的音視頻基本流,也可以拿編碼完了的文件,有一點必須保證,就是一定要使用H.264視頻和AAC音頻,因爲發明這個的是蘋果公司,只支持這個。然後給這些封裝成成爲符合MPEG-2(MPEG 2 TS、MPEG2 PS之所以使用這個,主要是因爲聲音和視頻會交織在一起,也會有關鍵幀來讓視頻可以直接播放).

流分割部分在這個中,比起 RTSP 之類和普通點播的最大不同,就是他會給 MPEG-2 分割成很多個 ts 的文件。分割過程大多是按時間來切,根據國外的資料,建議切 10s 一個的文件,如果碼流高可以 5 秒一次。在分割還有一點不同,就是這時流分割器會生成一個含有指向這些小TS文件指針的索引文件

所以這個文件也必須在 web 服務器上,不能少。每多 10s 時,就會多一個 ts 文件,所以索引也會根着修改成最新的幾段視頻。

最後,這些切分了的小的一系列的 ts 文件,放到普通的 web 服務器中就行了。這時在 CDN 中也是一樣,因爲請求這些文件會使用標準的 HTTP 協議。索引文件後綴是.m3u8 ,索引文件採用擴展的M3U播放列表格式,其實就一文本。
內部的視頻的地址會是如下

  1. http://media.example.com/s_96ksegment1.ts 
  2. http://media.example.com/s_96ksegment2.ts 
  3. http://media.example.com/s_96ksegment3.ts 

所以這時可以直接做 Cache 和直接放到 Web 服務器中,簡單方便。
如果 MIME 的信息輸出不對的話,記的要修改這加入 ts 和 m3u8 的後綴支持

  1. .m3u8 application/x-mpegURL 
  2. .ts video/MP2T 

最後就是客戶端,如果是 HTML 直接在 HTML5 中直接支持這種視頻可以使用如下標籤

  1. <video tabindex="0" height="480" width="640"> 
  2.  <source src="/content1/content1.m3u8"> 
  3. </video> 

如果是應用客戶端(Safari QuickTime之類),就得裝軟件來支持,客戶端會根據選擇的流的索引來下載文件,當下載了最少二段後開始播放。直接 m3u8 的索引結束。另外,HTTP可以設計成的自適應比特率流,在不同網絡環境,選擇下載不同碼流的視頻。

所以整個 HTTP Live Streaming 無論是直播還是點播,都能做到近似實時的方式來進行流播放。理論的最小時延是每個切片的長.

目前本協議加入了 IETF 的草案建議 

http://tools.ietf.org/html/draft-pantos-http-live-streaming

如果網站也想使用這種來做視頻請看 iPhone HTTP 流與 FFMpeg 和開放的源 Segmenter
http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/

Akamai http://iphone.akamai.com/

白皮書 (http://bbs.rosoo.net/thread-9764-1-1.html)

轉載自

http://www.rosoo.net/a/201112/15444.html

發佈了27 篇原創文章 · 獲贊 7 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章