1. 程式人生 > >十年磨一劍,美國巨頭視頻網站 Hulu 的直播系統架構實踐

十年磨一劍,美國巨頭視頻網站 Hulu 的直播系統架構實踐

美國 視頻網站 直播系統架構

Hulu 是 2007 年在美國上市的在線視頻公司,提供會員制付費視頻服務,商業模式與國內的愛奇藝、優酷類似。Hulu 今年 5 月發布了最新的 OTT 電視直播應用——Hulu Live TV,目標是替代傳統的有線電視服務,和國內最近興起的直播應用,比如 YY,映客等。

本文主要分享 Hulu 現有視頻系統、Hulu OTT 直播應用和基於 DASH 的直播系統這三方面,會涉及基於點播構建直播過程中的一些難點與經驗。

Hulu 現有視頻系統

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,來保證所有內容都可以安全播放。

在重要的廣告部分,單獨布設廣告服務器,保證用戶有好的廣告體驗,杜絕很長、重復的廣告。

Hulu OTT 直播應用

OTT 是 Hulu 新的直播應用,直播是在點播的基礎上增加很多模塊,但也有很多難點需要克服。

如下,是直播系統的需求:

  • 高清、高幀率直播。

  • 盡量接近 IPTV 體驗:低延時、快啟動及切換。

  • 24x7 不間斷直播服務。

  • 與點播體驗接近的直播內容。

基於 DASH 的直播系統

為了滿足 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 的可擴展微服務框架,如下是簡單示意圖:

技術分享

利用公有雲抗負載。當發現數據中心負載承受不住時,會溢出到公有雲。 全方位服務狀況監控報警系統。當任何一個服務發現 RPS 等發生變化,都會發出警報,運維人員會第一時間處理。

還有多 CDN 自動流量分配機制,最高層是人工規則,根據目前國內的使用情況調整比例。當發生實際 CDN 訪問失敗的情況下,便會用 Fallback 到另外一個 CDN,另外的客戶端也有自動的流量分配算法調節。

用戶觀看質量

我們要如何來保證用戶觀看視頻的質量呢?比如如何保證不會黑屏?Hulu 建立了一套實時視頻質量監控系統,在每個客戶端都埋了相關模塊,模塊會搜集關鍵指標的情況。

如下圖,是實時視頻質量監控流程圖

技術分享

一部分用 SBAK 實時事件處理的方式,進入 QOS 進行下一步的處理。另外實時處理的模塊會最終加入 Elastic Search。

這樣一來,就可觀測緩沖率、平均碼率,直播延遲等等情況。如上圖,不同顏色實際上是不同團隊負責的事情。

如下圖,是對整個環節中所有 SLA 的監控,某服務的監控,綠色表示狀況比較好,紅色表示有問題,數字變大就要引起註意。這裏有各種各樣的指標,基本上所有的系統都有這樣一套對應的監控系統,每個團隊裏都可以看到自己團隊的整體狀況。

技術分享

以上內容根據李彬老師在 WOTA2017 “高性能直播系統架構”專場的演講內容整理。關註架構、算法,運維等技術領域,有投稿、尋求報道意向技術人請聯絡 [email protected]

技術分享

主導 Hulu 核心視頻技術的研發,參與及主導了 Hulu 多平臺 DASH 播放器,視頻播放質量監控及分析系統,OTT MVPD 系統。從清華大學博士期間就一直從事互聯網視頻相關領域的研究和開發。曾任北京閃動科技有限公司技術總監,該公司出品的“Dopool手機電視”客戶端累計激活下載量過億。

技術分享

本文出自 “12562290” 博客,請務必保留此出處http://12572290.blog.51cto.com/12562290/1954165

十年磨一劍,美國巨頭視頻網站 Hulu 的直播系統架構實踐