Hulu 是 2007 年在美國上市的在線視頻公司,提供會員制付費視頻服務,商業模式與國內的愛奇藝、優酷相似。Hulu 今年 5 月發佈了最新的 OTT 電視直播應用——Hulu Live TV,目標是替代傳統的有線電視服務,和國內最近興起的直播應用,好比 YY,映客等。算法
本文主要分享 Hulu 現有視頻系統、Hulu OTT 直播應用和基於 DASH 的直播系統這三方面,會涉及基於點播構建直播過程當中的一些難點與經驗。數據庫
Hulu 終端與視頻內容安全
Hulu 應用在電視、電腦、各類移動設備、甚至遊戲機上均可以訪問,以下圖:服務器
Hulu 最初也是從網站形式作起,隨着時間的推移,特別是美國家庭的客廳是用戶常常觀看視頻的場所,因此 Hulu 不斷地研發,適配能播放視頻的硬件。點播的內容主要是電視、電影、自制劇、兒童節目等比較專業的製做內容。網絡
Hulu 商業模式架構
Hulu 主要有兩種商業模式,一種是經過視頻廣告獲取利潤,一種是經過註冊會員獲取利潤。負載均衡
下圖是一個電影廣告的例子。不只有常見的視頻廣告,還有能夠和用戶直接互動的部分,提示用戶點擊購買電影票。多年來,Hulu在廣告模式上有不少嘗試,包括客廳設備上也有不少互動形式。框架
除廣告外,會員制也是 Hulu 盈利的主要方式。經過註冊會員,繳納會員費,用戶能夠享受到最新,最全的電視節目。運維
數字視頻供應鏈分佈式
視頻供應鏈部分,用戶雖然不可以直接看到,可是會給用戶產生直接的影響。Hulu 在美國市場較大的賣點是電視臺播放的節目,次日就能夠同步上線。
這看似簡單的需求背後,卻對前面整個的處理週期要求很高,如上線速度、管理用戶的觀看時間等等,每一個環節都要作好。面對供應鏈帶來的挑戰,Hulu 創建了整套視頻轉碼系統,由這個分佈式集羣來應對。
多平臺視頻服務
面對多平臺播放的挑戰,Hulu 建設了多平臺視頻服務,自制播放器,保證在各個平臺正常播放,用一套統一視頻流就能夠支撐全部平臺。
還有基於 DASH 統一視頻格式,它的可擴展性、封裝效率等方面也表現優秀。
內容保護
Hulu 基於 DASH 及 CENC 建設了多 DRM 視頻系統,保障不一樣平臺,即便用不一樣的 DRM 系統也可使用統一的加密視頻源。
廣告插入
網絡很差的狀況下,插入廣告可能致使視頻從新緩衝,給用戶帶來很差的影響。Hulu 的作法是基於 DASH XLINK 的動態廣告插入機制,能夠在流上進行二者合併,播放器實時進行預加載,而不須要切換播放器、流等操做。
視頻播放質量保證
爲了保證視頻播放的質量,Hulu 創建了視頻播放質量保證體系,包含客戶端能夠作自適應動態碼流的切換、多 CDN 自動切換、實時視頻 QOS 監控及響應系統等。
以下圖,是圍繞點播產品的系統架構:
目前不少在線視頻的架構基本類同,可是 Hulu 比較特殊的地方是:
美國內容生產廠商對內容安全性要求高,要求全部內容必須有 DRM 加密模式,因此這裏構建了比較完善的 DRM license,來保證全部內容均可以安全播放。
在重要的廣告部分,單獨佈設廣告服務器,保證用戶有好的廣告體驗,杜絕很長、重複的廣告。
OTT 是 Hulu 新的直播應用,直播是在點播的基礎上增長不少模塊,但也有不少難點須要克服。
以下,是直播系統的需求:
高清、高幀率直播。
儘可能接近 IPTV 體驗:低延時、快啓動及切換。
24x7 不間斷直播服務。
與點播體驗接近的直播內容。
爲了知足 OTT 直播應用的需求,Hulu 研發了一套基於 DASH 的直播系統。
以下,是簡單的架構圖:
CP 接入流經過 TS Over RTP 的方式,把內容發送到多碼率直播編碼器,編碼器輸出 6 到 8 個不一樣的碼率,最低 128K,知足低帶寬強度下用戶的使用。
以後,進入封裝和加密環節,封裝成蘋果和 DASH 格式。一方面,時間信息及元數據存到實時數據庫,進行 MPD 生成。另外一方面,實際數據的文件封裝後,按時間切成小塊,上傳到源站,再到 CDN。
當客戶端播放器準備開始播放時,從 MDP 服務器瞭解哪些視頻能夠播放,同時經過 CDN 拿到實際視頻的文件。
構建直播系統面臨的挑戰
構建直播系統的過程當中,Hulu 克服了來自各方面的難點。下面主要分享「點播」式直播、瞬時用戶暴增和用戶觀看質量三方面的挑戰。
「點播」式直播
Hulu 但願在直播過程當中,實現點播的效果。在直播的同時,能夠隨心看以前的視頻,以下圖:
爲了實現這樣點播的使用模式,Hulu 採用 DASH 視頻格式來應對。
主要作了如下的事情:
時間及時間信息存於 Manifest。MPD 不只要描述視頻自己,同時還要描述發生的事情,如如今是否在播放廣告等,這些都用 Manifest 方式存儲。
採用視頻分流,短分片傳輸,把音頻拆分出來。這樣能夠實現多個碼率之間切換的同時調到任何播放位置。
全平臺覆蓋。可支持網頁、客廳設備、移動設備等幾乎全部客戶端設備。
以下圖,是 DASH 格式:
瞬時用戶暴增
應對瞬時用戶直播暴增是大多直播平臺都會遇到的事情,Hulu 也不例外,在線上這樣的事情很常見,一個熱門節目上映,好比 HBO 新出的 Game of Thrones,流量便會呈現十幾倍的增加。
應對這樣狀況最有效的方法就是提升系統彈性、可擴展性。解決方案有構建微服務架構,主要方式以下:
負載均衡。在全球創建三個數據中心節點,個個節點之間能夠進行負載均衡。
微服務框架。基於 Docker 的可擴展微服務框架,以下是簡單示意圖:
還有多 CDN 自動流量分配機制,最高層是人工規則,根據目前國內的使用狀況調整比例。當發生實際 CDN 訪問失敗的狀況下,便會用 Fallback 到另一個 CDN,另外的客戶端也有自動的流量分配算法調節。
用戶觀看質量
咱們要如何來保證用戶觀看視頻的質量呢?好比如何保證不會黑屏?Hulu 創建了一套實時視頻質量監控系統,在每一個客戶端都埋了相關模塊,模塊會蒐集關鍵指標的狀況。
以下圖,是實時視頻質量監控流程圖:
一部分用 SBAK 實時事件處理的方式,進入 QOS 進行下一步的處理。另外實時處理的模塊會最終加入 Elastic Search。
這樣一來,就可觀測緩衝率、平均碼率,直播延遲等等狀況。如上圖,不一樣顏色其實是不一樣團隊負責的事情。
以下圖,是對整個環節中全部 SLA 的監控,某服務的監控,綠色表示情況比較好,紅色表示有問題,數字變大就要引發注意。這裏有各類各樣的指標,基本上全部的系統都有這樣一套對應的監控系統,每一個團隊裏均可以看到本身團隊的總體情況。
以上內容根據李彬老師在 WOTA2017 「高性能直播系統架構」專場的演講內容整理。關注架構、算法,運維等技術領域,有投稿、尋求報道意向技術人請聯絡 wangxy@51cto.com
主導 Hulu 核心視頻技術的研發,參與及主導了 Hulu 多平臺 DASH 播放器,視頻播放質量監控及分析系統,OTT MVPD 系統。從清華大學博士期間就一直從事互聯網視頻相關領域的研究和開發。曾任北京閃動科技有限公司技術總監,該公司出品的「Dopool手機電視」客戶端累計激活下載量過億。