李英壯,吳志偉,李先毅
(大連理工大學 網絡與信息化中心,遼寧 大連116024)
隨著GPRS和WiFi無線網絡的迅速發展,智能終端在線點播直播視頻業務越來越多。面對復雜的用戶和移動環境,對于視頻點播而言,需要一定的服務質量保證策略,以保證不穩定無線網絡環境下用戶的友好體驗。
本文通過終端網絡狀況反饋、分布式實時轉碼技術和動態碼率自適應技術,解決終端所處無線網絡環境發生變化時,終端視頻收看體驗下降的問題。當無線網絡狀況發生變化時,終端將網絡狀況參數反饋給流媒體服務器,服務器根據反饋進行處理,動態調整流視頻碼率。
實時傳輸協議 RTP(Real-time Transport Protocol)[1]用于傳輸數字音頻和數字視頻等多媒體數據,本身并不提供任何保證數據傳輸的可靠、有序和實時,也不提供其他途徑保證服務質量,這些工作都依賴于RTCP(Realtime Transport Control Protocol)協議來完成。
RTCP[2]協議為RTP提供關于媒體傳輸以及媒體源的信息,如數據傳輸延遲、丟包率、抖動等相關信息,以用于RTP協議的交互控制。RTCP控制包分為SR、RR、SDFS、BYE 等。
RR包中包含了接收的包數、上個報文間隔期間接收的包數、丟失包的總數、包丟失率、平均延遲、延遲抖動等消息;SR包中包含了包發出時的時間標簽、發送的總包數、發送的總字節數等信息。這些信息構成了制定控制策略的依據。
所以,終端使用RTCP協議反饋RTP數據包的丟失率、傳輸抖動等消息,服務器根據收到的RTCP RR包,進行分析處理后動態地切換視頻碼率。
流媒體視頻碼率自適應[3]調整是一種反饋控制技術。它在服務器端和接收端之間建立一條反饋通道,通過實時監測終端網絡帶寬和丟包率來實時監測終端網絡狀況,根據當前可用網絡帶寬和丟包率大小來估計終端網絡的實際狀況,并據此動態調整服務器端發送視頻碼率的大小。
流視頻文件切換的代價是巨大的,不僅消耗網絡資源,而且占用移動終端的處理能力,所以選擇一個合適的首次接入碼率傳輸非常重要。根據首次接入終端的網絡類型、當前無線網絡帶寬、當前接入用戶數量、終端的處理能力等,選擇合適的碼率視頻文件,減少傳輸過程中碼率切換的次數。
考慮到高校學生接入無線網具有階段集中的特性,根據校園無線網絡接入終端的數量或無線網流量的大小,設置合適的首次接入碼率,然后結合剛接入無線網絡狀況預測進行上下微調整,從而減少碼率切換次數,保證終端視頻播放的流暢度。
流媒體服務器可以根據自適應碼率控制算法[4]選擇不同的流視頻傳輸碼率[5]。例如,在實現中對包丟失率定義若干閾值,a:4%,b:8%,c:10%,d:12%;當包丟失率處于(a,b](某個數值范圍)時,切換選擇文件庫中相應碼率的流視頻。這樣需要同一視頻文件,有不同碼率等級的版本,對于電視直播流,也有不同碼率等級的文件。
本方案通過分布式實時轉碼系統,保證了點播和直播流視頻文件的實時提供,實現了從50 kb/s~300 kb/s的6個遞增的碼率等級。
2.2.1 分布式實時轉碼系統
針對滿足各終端環境對視頻轉碼工作的高要求,提出了基于Hadoop的使用實時調度策略的分布式轉碼方案,使用mapreduce編程框架和mencoder進行分布式轉碼,達到嚴格控制轉碼完成時間的目的。
(1)文件切割接口:cut fileName fileTime playTime
Cut是流視頻文件切割腳本,fileName表示要處理的流視頻文件,fileTime表示要處理的流視頻文件的總播放時間,playTime表示要切割成的每段流視頻的播放時間。
(2)文件轉碼接口:transcode fileName參數 1,參數 2,…,參數 n
Transcode表示本地轉碼腳本,fileName表示要轉碼的文件名,參數表示對流視頻文件碼率等轉碼參數的設置。
當流視頻文件切割處理結束后,系統主節點就會將各流視頻段分發到各子節點,各子節點根據設定的參數調用轉碼腳本進行轉碼,最后存儲到流媒體服務器。
2.2.2 轉碼方案
源視頻分為點播流視頻和電視直播流視頻。
(1)點播流視頻轉碼:在離線狀態下,通過轉碼系統預先壓縮一系列碼率(50 kb/s~300 kb/s)不等的流視頻文件存儲在服務器端。
(2)電視直播流視頻轉碼:因為電視直播流視頻需要實時傳輸,這就需要轉碼系統進行實時轉碼。系統實時地從視頻源獲得一定播放長度的直播流視頻段,調用轉碼服務器系統轉成一系列碼率不等的流視頻文件,暫時存放在流媒體服務器。服務器根據碼率切換方案進行調整。
2.2.3 碼率調節策略
當估計到終端網絡丟包率突然上升、網絡出現擁塞時,降低服務器端發送視頻文件的碼率,保證用戶收看視頻的流暢度。在實現中,當丟包率突然上升時,將發送的視頻文件降低2個碼率級別,因為丟包率突然上升表明網絡環境惡化,很大程度上影響終端的正常播放。
當丟包率下降時,延遲調整碼率,待丟包率趨于平穩后,再調高碼率級別,以消去短時間內丟包波動的情況。
根據實現的功能不同,整個系統可以劃分為分布式實時轉碼服務器、流媒體服務器和移動終端三個部分,如圖1所示。

分布式實時調度轉碼系統主要將點播文件和電視直播源信號轉換成列碼一系列碼率不等的流視頻文件存儲在流媒體服務器。
流媒體服務器主要由以下4個模塊組成:
(1)首次接入碼率選擇模塊:根據首次接入終端的網絡類型、當前無線網絡帶寬、當前接入用戶數量、終端的處理能力等,選擇合適的碼率流視頻文件,生成相應的RTSP點播或者直播URL路徑,提供給終端。
(2)終端網絡狀況反饋處理模塊:主要是根據終端反饋回來的RTCP RR數據包,獲取丟包率、網絡帶寬等信息來估計當前的網絡狀況,作為碼率切換模塊調整的依據。
(3)碼率切換模塊:通過預測得到的下一時刻丟包率、網絡帶寬等超過了切換門限值,就結束當前碼率的視頻傳輸,切換到文件庫中合適碼率的視頻文件。
(4)RTSP傳輸模塊:該模塊主要將封裝好的RTP數據包發送給客戶端。
移動終端主要由RTSP接收模塊、RTCP網絡狀況反饋模塊和視頻顯示模塊三部分組成。
(1)RTSP接收模塊:該模塊通過RTSP協議接收服務器端發送的RTP數據包,送給終端解碼器進行解碼。
(2)RTCP網絡狀況反饋模塊:移動終端通過RTCP RR包將丟失包的總數、包丟失率、平均延遲、延遲抖動等消息發送給流媒體服務器,用來描述當前終端的網絡狀況。
(3)視頻顯示[6]模塊:移動終端通過解碼器解碼,播放視頻。
分布式實時轉碼系統環境:分割服務器、Hadoop集群;流媒體服務器環境:ubuntu系統,dss達爾文開源流媒體服務器軟件;測試終端:1臺小米1s手機、1臺聯想筆記本電腦;電視直播源:機頂盒設備。
測試環境架構如圖2所示。

(1)視頻源:點播文件手動上傳到服務器,直播源由機房內機頂盒實時提供。
(2)分布式轉碼服務器:由一個主節點和6個子節點組成,主要是將流視頻文件轉成一系列碼率不等的視頻文件,提交給流媒體服務器。
(3)流媒體服務器:在ubuntu linux系統中安裝dss達爾文流媒體服務器軟件,通過RTSP實時響應用戶請求,提供流視頻調度和傳輸的功能。
(4)智能終端:分別使用小米1s手機和聯想筆記本電腦進行測試,通過RTSP協議點播視頻,測試播放效果。
圖3和圖4表示分別使用智能手機和筆記本電腦播放一段大約0.5 h的視頻時,網絡實際丟包率和流媒體服務器端相應的碼率切換情況。從圖中可以看出,流媒體服務器根據終端反饋的網絡參數,很好地實現了碼率切換功能。整個測試播放過程中,視頻畫面清晰度會有多次的切換,尤其在丟包率變化很大時,畫面清晰度會有很大的差別,但都可以正常播放;當丟包率超過16%時,網絡狀況太差,導致視頻播放出現不流暢,甚至有可能出現播放中斷。

整個測試過程,系統運轉良好,分布式實時轉碼系統很好地保證了直播流視頻數據的實時提供,流媒體服務器監聽用戶終端請求,及時響應和提供視頻傳輸,并實時監測用戶終端網絡狀況反饋,動態調整視頻碼率,保證了用戶友好的收看體驗。

在無線網絡不穩定、易受到干擾的情況下,研究了碼率自適應技術以提高用戶的收看體驗。通過首次接入碼率選擇方案,減少了觀看過程中碼率切換的次數,有效地節省了資源。分布式實時轉碼系統解決了轉碼的需求,并保證了電視直播視頻轉碼的實時性。在視頻碼率切換模塊中,服務器使用閾值比較方案選擇下一時刻傳輸的視頻碼率。這種方案考慮因素比較單一,精度不準確,下一步工作會改進選擇方案,增加計算網絡狀況的因子,以使碼率切換方案更加準確,使終端觀看體驗更加友好。
[1]孫松源,吳建國.基于 RTP和Android的視頻傳輸的研究實現方法[J].電腦知識與技術,2012,8(4):903-905,914.
[2]李校林,劉海波.RTP/RTCP、RTSP在無線視頻監控系統中設計與實現[C].2011年第十三屆全國消費電子技術年會,2011.
[3]楊琛,白波.實時視頻流自適應碼流控制研究[J].計算機技術與應用進展,2008(7):445-447.
[4]左東紅.面向TCP的流媒體傳輸編碼碼率自適應算法[J].中國圖象圖形學報,2011,16(4):510-515.
[5]王瑞,劉寶成.一種適用于H.264/AVC的自適應碼率控制算法[J].電子技術研發,2011,38(6):15-18.
[6]VUN N,OOI Y H.Implementation of an Android phone based video streamer[C].2010 IEEE/ACM International Conference on Green Computing and Communications,2010.