文/賈嶠 唐靖寅 劉百祥
復旦大學:高清視頻多級分發轉播之道
文/賈嶠 唐靖寅 劉百祥
隨著網絡多媒體技術的發展,高校校園網用戶對高清視頻實時轉播的需求急劇增加,但復雜的校園網絡環境給高清視頻轉播帶來很大的難度。復旦大學使用多級PC服務器構建高清視頻轉播方案,取得了較好的效果。
近年來,校園內師生個人計算機普及程度已經很高,用戶已經習慣并樂于通過網絡流式媒體來訪問各類音視頻服務,而且會優先選擇清晰度更高的服務。
伴隨著網絡視頻技術和業務的發展,各類重大體育賽事也開始使用高清晰流媒體進行網絡直播,而校內的各類活動也存在向全校師生轉播的需求。
目前,復旦大學校園網絡已經覆蓋到校園中絕大多數的辦公、教室、宿舍區域。校園網絡出口帶寬有限,無法滿足大量用戶使用公眾網絡媒體服務商的并發需求。由于網絡結構復雜,VLAN繁多,各接入樓宇的網絡管理水平不一,校園網絡出口眾多,設備間差異化較大,組播方式難以實現。
復旦大學的校園網絡中常見的視頻分發通常為非實時方案,在活動開展中進行錄制,延后發布供師生下載。
此外,復旦大學校園網還提供常規清晰度的電視轉播,但受服務器自身性能以及帶寬限制影響,也無法滿足大量用戶的更高需求。
本文提出了一個面向校園網絡現狀的高清視頻多級分發轉播方案,解決上述問題。其主要思想是對視頻源進行編碼壓縮,基于主控服務器和多級分發服務器相互配合實現復雜校園網絡的高清級視頻轉播,基于用戶來源的負載均衡、自動故障恢復等功能。本方案在實際應用中取得了良好的效果。

圖1系統框架

圖2 工作流程
為了滿足集中控制服務器和優化網絡傳輸等目標,整個解決方案的設計如圖1所示。整個方案由4個主要功能模塊組成,分別為視頻編碼服務器、中心控制服務器、主轉發服務器、次級轉發服務器。用戶在個人計算機需安裝兼容的視頻播放器。
主要功能模塊
1. 音視頻編碼服務器
音視頻編碼服務器配置音視頻采集卡,運行編碼器實時采集并壓制音頻視頻流,其對CPU有一定的要求,對內存、網絡需求較低。我們通過配置同時輸出多級碼率的音頻視頻流,以提供多樣化的選擇。
2. 中心控制服務器
提供用戶訪問界面,匯總各級轉發服務器信息,提供用戶身份認證,引導和控制用戶訪問。
中心控制服務器向分發服務器發布轉播指令與網絡規則,接受分發服務器運行狀態,實時統計并提供顯示界面,引導用戶訪問最合適的分發點。
3. 主轉發服務器
主轉發服務器將編碼服務器輸出的原始音視頻流分發給各次級分發服務器。為保障服務質量,此服務器的輸出用戶不可見。
4. 次級轉發服務器
次級轉發服務器部署于各網絡分區,直接從中心控制服務器獲取操作指令,對主轉發服務器或者上級轉發服務器提供的音視頻流進行轉發,用戶直接訪問此類服務器。
此類服務器對CPU有一定的要求,對網絡要求較高,通常使用雙路千兆網卡以至更多配置為端口綁定,以盡量提供高帶寬支持更多用戶訪問。
轉發服務器運行守護進程來接受指令和網絡規則,匯報自身運行狀態,實際的工作流程如圖2所示。
轉發服務器同時接收主控服務器下發的iptables策略,控制訪問來源。
技術要點
1. 端口綁定
在交換機或服務器進行配置,通過多組網絡接口綁定整合為一組更高帶寬和可用性的鏈路。在此方案中采用Linux服務器安裝ifenslave包進行配置,具體配置舉例如下:


表1 視頻特征和編碼技術要點

表2 視頻/音頻編碼方案

圖3 結構未優化前出現的鏈路帶寬瓶頸
2. 編碼規則
校區內直播的需求根據視頻內容的不同,主要分為以下3個類型:(1)會議、講座、訪談;(2)體育賽事;(3)文藝演出。這三類視頻具有不同的特征,用戶需求具有一定的差別,因此在編碼時技術要點不盡相同(見表1)。同時,視頻編碼必須考慮到編碼的實時性和客戶端顯卡硬件解碼的要求,兼顧編碼器的編碼速率和性能較差的計算機實時解碼。
對于會議、講座、訪談類節目,視頻主要關注對象為主講人,場景通常穩定于明亮的室內,因此視頻編碼的主要目標為保留人物細節。而由于此類節目中以人聲為主,因此可以采用較低采樣率和較低碼率,保留人聲音質即可。
對于體育類節目,由于此類節目中存在大范圍的運動和大幅度的鏡頭變化,因此需要較強的運動向量預測算法以滿足視頻編碼的需求。同時,由于體育比賽的實時性很強,所以在編碼時需要設置預先緩沖大小,使得客戶端只要經過短暫的緩沖即可獲得關鍵幀。而音頻編碼的質量要求相對降低,保留解說的人聲音質和現場音效即可。
對于文藝演出類節目,此類節目具有背景亮度灰暗,前臺亮度明顯的特征。文藝演出類的視頻效果對顏色的鮮艷程度和演出的音質音色都具有比較強的依賴,因此編碼時需要考慮到對灰暗部分細節和色彩效果的保留,降低色度的量化方案,并且強化碼率重分配以達到保留暗部細節的要求。
復旦大學最初嘗試使用單臺服務器進行轉播,所轉播的內容未經編碼處理,即導致單個連接碼率過高,單臺服務器網絡帶寬成為瓶頸,無法支持多用戶并發訪問。
各校區間核心網絡設備帶寬有限,當轉播服務器集中于主校區且轉播集中時,達到鏈路瓶頸,導致所有用戶無法正常訪問轉播服務,出現延遲或者中斷。
圖3即為結構未優化前出現的鏈路帶寬瓶頸,跨區域訪問造成了不必要的帶寬占用,以致影響到正常的網絡服務。
基礎設備
中心控制服務器:需求相對較低,與主轉發器并用單臺設備。
視頻編碼服務器:CPU較強的服務器進行視頻編碼。
主轉發服務器:由于轉播數量并不同,使用編碼服務器同時承擔主轉發服務器功能。考慮到網絡帶寬壓力,我們使用千兆網絡。由于會對2路以上的高清視頻進行多碼率實時壓制,我們采用了一臺DELL R905服務器,配置4×4核AMD Opteron 8380,16G內存,內置4×1000M網卡。
分發服務器:多臺單CPU或者雙CPU服務器,分散部署于各校區,根據校區情況配置為雙千兆網絡接口或者4千兆網絡接口綁定,以避免出現網絡帶寬瓶頸。這里多采用1U的服務器,依照校區差別選擇CPU個數,這里多采用DELL R410和DELL R610服務器。
編碼規則
綜合評定各種編碼方案后,本方案決定采用H.264 AVC作為視頻編碼方案,使用x264作為編碼器,采用AAC作為音頻編碼方案,使用faac作為音頻編碼器,使用MPEG2-TS作為封裝格式,以HTTP協議作為傳輸協議。通過一定的實驗和探索,實際部署時針對此三類視頻應用的不同編碼方案(見表2),在保證質量的前提下能夠盡量節約帶寬。
實際使用的客戶端程序
由于視頻流采用H.264標準編碼,因此所有兼容H.264解碼標準的視頻播放器均可以播放。經測試證明,Windows自帶的Windows Media Player系列、開源且跨平臺的VLC、MPlayer播放器、基于iOS的OPlayer等多款播放器可以流暢播放高清視頻流。
性能調優
服務內容規劃:用戶會優先嘗試訪問高清晰度的轉播,但仍有部分老設備無法播放高清視頻流,因此提供高碼率流的同時仍須提供少量低碼率流,根據實際經驗,比例大約在10∶1。
基于用戶來源的負載分配:由于用戶來源位置信息可獲取,可以依照校園網絡結構對不同來源用戶進行分發,在主控服務器端進行條件限制,可以有效地避免出現跨校區數據傳輸所帶來的不必要網絡壓力。
RRD日志分析:使用RRDtool生成持續連接狀態圖,輔助分析各服務器在線流量,有利于協助規劃分發服務器數量。效果參見圖4。

2010世界杯期間,為了滿足校內用戶在線觀看的需要,復旦大學提供7臺分發服務器為6個分校區的用戶進行服務。

圖4 RRDtool生成的持續連接狀態
2010世界杯期間,為了滿足校內用戶在線觀看的需要,我們提供7臺分發服務器為6個分校區的用戶進行服務,提供720p(碼率4Mbps)和480p(碼率1Mbps)的多種分辨率供選擇,在不影響正常網絡服務的情況下提供2000人同時在線的峰值。
在多校區的視頻會議工作中,我們使用相同的結構,通過現場服務器直接采集攝像設備輸出,也滿足了工作會議等進行多校區直播的需求。
在極端情況下,還可以采取P2P模式,將用戶也作為轉發節點,在小范圍內為其他用戶轉發數據。同時,也可以讓用戶在同一交換機內進行組播,這樣能更好地應對重大會議活動、體育賽事轉播時的大量密集請求。
本文介紹的轉播方案基于信息化部門常規硬件,面向多校區分布的校園實際網絡環境,服務容量可以靈活地伸縮擴展,無需特殊的客戶端軟件,用戶體驗較好。我們將進一步擴展該方案,整合用戶授權,進行更細致的服務劃分。
(作者單位為復旦大學信息化辦公室)