摘 要:隨著網絡的快速發(fā)展,對高質量視頻的實時傳輸提出了更高的要求,然而由于智能手機處理能力低、內存小等硬件配置因素,使得嵌入式媒體播放器中的視頻數據無法自適應網絡狀況,最終導致視頻數據在傳輸過程中大量丟失,降低接收到的視頻圖像質量。在此提出基于Android的視頻流自適應算法,該算法可動態(tài)探測網絡帶寬,自動適應網絡擁塞狀況,制定平滑的數據傳輸帶寬,緩解網絡擁塞,根據傳輸帶寬控制視頻編碼和視頻傳輸速率,提高視頻傳輸質量。
關鍵詞:網絡擁塞; 媒體播放器; Android; 視頻自適應; 網絡帶寬
中圖分類號:TN91934; TP301.6 文獻標識碼:A 文章編號:1004373X(2012)22004204
近年來隨著網絡的快速發(fā)展,對高質量視頻的實時傳輸也提出了更高的要求,然而由于IP網絡的體系結構就決定它只能提一種供盡力而為(Besteffort)的傳輸服務,并沒有服務質量的保障(QoS),因此很難保證視頻傳輸所需的穩(wěn)定帶寬,最終將導致網絡擁塞,并且在傳輸過程中丟失大量的視頻數據,引起接收到的視頻圖像質量急劇下降。目前,盡管在許多高端手機和PDA上都有多媒體播放器,但是因為手機處理器能力低、內存小等硬件配置因素的影響,和PC機上的播放器相比手機現有的這些播放器功能都非常不完善,嚴重影響著視頻流的解碼效率,并最終導致解碼出的視頻頻數據無法實時處理,極大地影響用戶的使用。這一現象產生的原因主要是由于媒體播放器是基于嵌入式系統的,而目前所用的大多數嵌入式處理器其工作頻率和運算能力都不能和同時期的PC機用的處理器相比,而播放高質量的視頻文件又需要處理器進行大量復雜的解碼工作,所以一旦CPU處理速度跟不上就會使導致圖像質量下降。
解決這一問題主要有2種方法,一種方法就是在硬件上使用更高性能的CPU或者硬件解碼芯片,加快視頻處理速度;另一種方法就是在軟件上使用好的視頻自適應算法,當產生網絡擁塞而導致丟包時可以及時糾正。一般來說,系統使用的硬件一旦確定就不會輕易改變,因為這涉及到硬件電路設計、成本等諸多因素,所以本文將從軟件角度改善視頻流的傳輸,提出基于Android的視頻流自適應算法,該算法可以動態(tài)探測網絡帶寬,自動適應網絡擁塞狀況,制定平滑的數據傳輸帶寬,從而緩解網絡擁塞,根據傳輸帶寬控制視頻編碼和視頻傳輸速率,相應地提高視頻傳輸質量。
1 系統分析
1.1 Android平臺簡介
Android系統是Google公司開發(fā)的基于Linux系統的開源手機操作平臺,采用軟件堆層(Software Stack)的架構,是首個為移動終端打造的真正開放和完整的移動軟件。
Android平臺框架共由5部分組成。底層核心是基于Linux 2.6內核開發(fā)的獨立操作系統,該層用來提供系統的底層服務,包括安全機制、內存管理、進程管理、網絡堆棧及一系列的驅動模塊。中間是Android執(zhí)行環(huán)境,包括系統運行庫、Dalvik虛擬機、核心庫和一些C/C++庫等支持Android使用的各個組件。應用層框架是開發(fā)人員使用這些API框架來開發(fā)自己的應用,簡化了應用程序開發(fā)的架構設計。應用層程序是用Java語言編寫的運行在虛擬機上的程序。
為確保視頻的高質量傳輸,以及方便針對嵌入式平臺運行的調整和優(yōu)化,在選擇編碼的時候選擇開源項目FFmpeg。FFmpeg是一個開源跨平臺多媒體數據解決方案,它包含非常先進的視頻編解碼庫Libavcodec,支持超過90種編解碼標準及RTSP,HTTP,MMS等多種網絡傳輸協議。FFmpeg通過C語言實現,常被移植到各種嵌入式系統中[1]。將FFmpeg移植到Android系統中,能夠增加Android系統對編解碼格式標準的支持,提高Android系統對多媒體信息處理能力,改善用戶體驗。
1.2 視頻傳輸協議RTP/RTCP
視頻傳輸的核心是視頻流(Streaming Video)的傳輸,視頻流通常是指一系列連續(xù)的、帶有時間戳的視頻包數據。視頻流技術則是研究視頻數據有效傳輸的技術,主要包括視頻數據的壓縮及視頻流的實時傳輸,以保證用戶能夠獲得良好的視頻質量。多媒體流的實時傳輸對帶寬和延遲比較敏感,因此視頻流的傳輸需要選擇合適的傳輸協議。
實時傳輸協議(Realtime Transport Protoco1,RTP)報文用來作實時傳輸時,可以靈活改變速率、防止亂序。但是,僅僅使用RTP時間戳是無法實現視頻的自適應傳輸。要實現視頻自適應傳輸,需要借助于RTP控制協議(Realtime Transport Control Protocol,RTCP)[2]。在流式傳輸的實現方案中,采用TCP/RTCP來傳輸控制信息,用RTP/UDP來傳輸視頻流數據。RTCP報文在傳輸過程中可以為RTP數據提供網絡狀況和服務質量的反饋。
2 基于Android的視頻流自適應算法設計
為解決網絡擁塞時視頻所面臨的問題,本文進行了基于Android的視頻自適應算法的研究。該算法可以動態(tài)探測網絡帶寬,使用網絡擁塞控制制定數據接收速率,在避免網絡擁塞的同時做到了與TCP的公平與友好。
2.1 視頻自適應算法框架
基于Android的視頻自適應算法的主要原理是在Android手機上實現視頻接收的自適應調節(jié)。首先,Android手機會發(fā)送網絡探測信息的數據包,包中帶有序列號、包丟失率、延時及環(huán)路時間等。然后,服務器會應答收到的數據包,在應答包中會包含有相應的序列號和網絡信息反饋等開銷,這樣,就提供了端到端的反饋。Android系統根據網絡開銷解碼數據包并分析網絡帶寬,當帶寬變窄時,能在用戶允許的范圍內丟棄某些次要信息,比如高碼率的視頻數據,而當帶寬變大時,則可以提高視頻傳輸碼率或增大幀速率,這樣就可以根據網絡的狀態(tài),自動適應網絡帶寬變化,動態(tài)接收視頻數據流,達到較好的傳輸效果。
本文提出的基于Android的視頻自適應算法是針對網絡環(huán)境中傳輸實時視頻數據而提出的。當在網絡上傳輸視頻數據時,網絡視頻自適應傳輸算法會在UDP協議的基礎上加入RTP和RTCP傳輸控制協議[3],然后通過發(fā)送網絡探測和有效反饋實現基于Android的網絡視頻自適應控制,視頻自適應技術框架如圖1所示。
TCP友好速率控制協議(TCP Friendly Rate Control,TFRC) 是一種應用于單播的基于速率的擁塞控制算法[4]。本文提出的基于Android的視頻自適應擁算法就借鑒了TFRC模型穩(wěn)態(tài)速率公式,在該公式中,關鍵技術主要包括TFRC穩(wěn)態(tài)速率公式中各參數的確定以及視頻數據接收速率控制。TFRC穩(wěn)態(tài)速率公式如下[5]:
B(p)=
s[tRTT2bp3+t0min(1,33bp8)p(1+32p2)]-1
式中:s表示TCP的報文大小,單位為B;p表示丟失事件率;t0表示數據報文超時時間;tRTT表示數據報文環(huán)路時間;b為一個應答所代表的接收到的報文數。通過TFRC穩(wěn)態(tài)速率公式可以計算出一個傳輸數據流的穩(wěn)態(tài)接收速率B(p)。
依據該TFRC穩(wěn)態(tài)速率公式得出速率值B(p)隨著丟失事件率等幾個參數的變化而變化,而其中最主要的是丟失事件率p的計算。丟失事件率的計算有3個主要步驟,即初始化參數列表,丟失事件(Loss Events)判斷,以及計算丟包事件率。
(1) 初始化參數列表。根據TFRC理論,丟失事件率以最近8個丟失事件作為計算依據[6],據此引入參數數組。
(2) 丟失事件(Loss Events)判斷。本文對丟失事件的判斷采用以下算法描述:
Android系統Qos監(jiān)控模塊監(jiān)測到有丟包情況發(fā)生{If 本次丟包與上一次丟包的時間間隔大于RTT,即該包不屬于上次丟失事件的發(fā)送窗口。
Then 新的丟失事件發(fā)生,計算丟失間隔。}
采用該算法可以判斷出當前的丟失事件,進而可用于計算丟失事件率p。
(3) 計算丟失事件率p。按照丟失事件率的算法,一個非連續(xù)的丟包并不會改變丟失事件率,因此當包丟失率上升時速率值的下降也是緩慢的,丟失事件率算法應用在TFRC穩(wěn)態(tài)速率公式中能夠較準確地描述網絡的實際擁塞狀況。
2.3 瓶頸帶寬的計算
在TFRC算法的基礎上控制視頻數據的接收速率,可以通過視頻自適應算法制定出平滑的帶寬輸出數據,從而避免TCP協議的AIMD算法所帶來的帶寬振蕩。此外,視頻自適應算法并不把TFRC速率計算公式的輸出作為源端的接收速率,而是以客戶端反饋的瓶頸帶寬做為上界,并且結合當前帶寬輸出值B(p)及最近帶寬,制定數據傳輸率來自動適應網絡狀態(tài)的變化。
發(fā)送端在tTimestamp時刻向接收端發(fā)送數據包,在接收端收到N個具有相同時間戳tTimestamp的數據包后,采用以下公式計算瓶頸帶寬:BnBw=∑Ni=1packet(i)[tRecv_ClientN-tRecv_Client1]-1式中:BnBw為網絡瓶頸帶寬;Packet(i)為第i個數據包大小,單位B;tTimestamp為數據包發(fā)送時間戳;tRecv_ClientN為接收到第N個數據包的時間;tRecv_Client1為接收到第1個數據包的時間。
通過瓶頸帶寬公式計算出的網絡瓶頸帶寬BnBw可以作為數據發(fā)送速率的上界,從而避免了TFRC算法的帶寬波動。
2.4 視頻流自適應算法描述
利用RTP/RTCP的反饋結果,設計合適的基于Android的視頻自適應算法。當監(jiān)測到網絡出現擁塞,導致帶寬下降后,Android系統會自動調整接收策略,從占用較多帶寬,質量較高的視頻流向占用帶寬較少,質量稍微差一點的視頻流上轉移。因此,假如出現持續(xù)的低帶寬情況,視頻自適應算法的結果就是在最初階段丟包率會較大,隨后就會逐漸適應低帶寬的環(huán)境,丟包率也會呈下降趨勢。因此,考慮到嵌入式設備的性能,提出的自適應算法不應過于復雜,可以將視頻自適應算法和視頻編碼算法相結合,動態(tài)地調整視頻的編碼和發(fā)送,從而達到較為流暢的媒體流。通過以上分析,得出自適應算法具體步驟如下:
(1) 初始化設置視頻編碼器,啟動網絡發(fā)送線程;
(2) 設定B為發(fā)送端當前的帶寬,Bmin和Bmax分別為網絡所能達到的最小帶寬和最大帶寬,且B∈[Bmin,Bmax];
(3) 根據給定網絡帶寬B,確定視頻壓縮碼率;
(4) 根據視頻壓縮碼率,壓縮視頻數據,加入網絡探測信息,以視頻幀為單位采用RTP方式打包后送入緩沖區(qū);
(5) 網絡發(fā)送模塊從緩沖區(qū)中取出視頻數據包,并將視頻數據包發(fā)送到網絡上;
(6) 網絡監(jiān)測模塊接收客戶反饋的網絡QoS信息,根據視頻流自適應算法確定當前的發(fā)送帶寬Bnew,調用視頻速率自適應模塊,按照控制策略調整視頻壓縮碼率,如果沒有用戶終止信息,則執(zhí)行步驟(4);
(7) 退出視頻發(fā)送線程,終止。
數據包丟失率是監(jiān)控器估計網絡信道狀況的指標,但不能直接利用丟失率判斷網絡信道狀況并據此調整視頻的接收,因為會使接收數據變動得過于頻繁,視頻產生波動,質量不穩(wěn)定,所以要先對其做平滑處理。根據平'滑后的數據包丟失率與事先確定的閾值的關系判斷網絡上的負載情況,依此將網絡狀態(tài)分為若干類:假定分為3類(輕載,滿載和阻塞),網絡狀態(tài)的分類算法:設定2個閾值kl、k2(測試給定值),平滑后RTP數據包的丟失率為t(n)。視頻編碼算法為A(i),其中i為調整編碼的系數,i越大,壓縮比越高,對應于3種狀態(tài)的i值分別為il (1) 當t(n)< kl時,視為輕載; (2) 當kl (3) 當t(n)> k2時,視為阻塞。 則自適應算法描述為: if(t(n) else if(kl A(i2);D; else A(i3);TFRC(D); 此算法可根據網絡的實際情況劃分為多種狀態(tài)進行調整。與TCP基于AIMD窗口控制算法相比,視頻自適應算法采用了緩和得多的速率變化策略,在TFRC公式的基礎上既做到了與TCP 流的友好,又平滑了數據傳輸速率,能夠為視頻數據提供良好的傳輸質量保證。 3 實驗結果 為驗證本文提出的視頻流自適應算法的應用效果,在Android系統中進行了模擬實驗。以下是采用視頻流自適應算法的視頻傳輸實驗結果,實驗結果分析如圖2所示。自適應視頻流解碼質量與傳統的聯播技術之間的實驗效果比較,采用的視頻序列是Coastguard CIF,其中網絡帶寬變動范圍為128~512 Kb/s。 圖2 視頻流自適應算法實驗結果分析從以上試驗結果可以看出,與目前主要的實時視頻傳輸技術相比,視頻流自適應算法具有一定的優(yōu)勢:從帶寬自適應能力上來說,視頻自適應算法能對網絡帶寬的變動做出及時的響應并能有效避免網絡擁塞,提供穩(wěn)定連續(xù)的視頻傳輸質量;視頻自適應算法對視頻編碼器的依賴較小,即不需要復雜的視頻自適應編碼算法,也不占用冗余的存儲空間,因此在對視頻流的實時性要求高的應用上具有較突出的優(yōu)勢。 4 結 語 本文針對Android平臺的特點提出基于Android的視頻流自適應算法,該算法可動態(tài)探測網絡帶寬,自動適應網絡擁塞狀況,制定平滑的數據傳輸帶寬,緩解網絡擁塞,根據傳輸帶寬控制視頻編碼和視頻傳輸速率,提高視頻傳輸質量,對網絡帶寬的波動有較好的適應性。該算法在Android 2.2軟件平臺上進行了系統測試,具有良好的效果,證明該算法可適應網絡擁塞狀況,提高視頻質量,改善用戶體驗,為其他移動終端嵌入式多媒體應用軟件的開發(fā)給出了一些參考。 參 考 文 獻 [1] 吳張順,張詢.基于FFmpeg的視頻編碼存儲研究與實現[J].杭州電子科技大學學報,2006,26(3):3034. [2] HAMANN T, WALRAND J. A new fair window algorithm for ECN capable TCP (NewECN) \[C\]// Proceedings of 2000 IEEE INFOCOM. Tel Aviv, Israel, CA: IEEE Computer Society, 2000: 200206. [3] HENGER U, BOLLIGER J, TH C. TCP Vegas revisited \[C\]// Proceedings of 2000 IEEE INFOCOM. Tel Aviv, Israel: IEEE Computer Society, 2000: 221227. [4] RICHARD J, ANANTHARAM V. A case study for TCP Vegas and deficit roundrobin gateways \[J/OL\]. \[19981220\].Http://www.path.berkeley. [5] HANDLEY M, PAHYE J, FLOYD S. TCP friendly rate control (TFRC): Protocol specification \[EB/OL\]. \[20100126\]. http:// www. glyustb.iteye.com/blog/580612. [6] DISALEM D, SCHULZRINNE H. The lossdelay based adjustment algorithm: a TCPfriendly adaptation scheme \[C\]// Workshop on NOSSDAV. \[S.l.\]: \[s.n.\], 1998: 227233. 作者簡介: 王 輝 女,1975年出生,陜西西安人,講師。主要研究方向為計算機網絡、網絡安全、網絡協議與分析。