謝文輝,鄭勝林,譚建斌
(廣東工業(yè)大學信息工程學院數(shù)字圖像技術研究所,廣州510006)
流媒體的傳輸是建立在四層的UDP協(xié)議之上的,所以在標準的內(nèi)核協(xié)議層上,所傳輸?shù)囊曨l流無法得到有效的擁塞控制,這樣在應用層就需要考慮采用一種有效的擁塞控制算法來增強視頻流對網(wǎng)絡環(huán)境的適應能力。RTCP(Real-time Transport Control Protocol)協(xié)議正是配合 RTP(Real-time Transport Protocol)協(xié)議共同完成對實時數(shù)據(jù)的傳輸與控制。對RTP/RTCP協(xié)議在擁塞控制領域的研究,有助于解決流媒體傳輸中的擁塞問題,提高流媒體的傳輸質(zhì)量[1-2]。
傳統(tǒng)反饋算法主要由服務器端和客戶端兩個部分的算法組合而成。文中用到的一些標記的含義如下:Ploss為服務器端發(fā)送到客戶端接收到之后的丟包率;InitialRate為服務器端的初始發(fā)送速率;MaxRate為服務器端所限制的最大發(fā)送速率;MinRate為服務器端的最小發(fā)送速率;α為線性增量因子;β為乘性減少因子;Pthreshold為丟包率門限。
服務器端:
·開始輸出碼率r = InitialRate;
·根據(jù)所收到的RTCP包中所包含的丟包率Ploss來動態(tài)調(diào)節(jié)輸出碼率r:
if(Ploss<=Pthreshold)
r=MIN{(r+α),MaxRate}
else
r=MAX{(β×r),MinRate}
客戶端:
·對到達的RTP 包頭的序列號進行跟蹤;
·當接收到Nr個包后或是一段時間后就發(fā)送一個包含了本次統(tǒng)計值Ploss的RTCP包。
上面的算法只是當丟包率較少時就使用一個固定的加性增長因子來適應網(wǎng)絡的帶寬,當丟包率較大時就使用乘性因子來減少碼流,以減少網(wǎng)絡的丟包率。但是由于丟包率沒有做任何的平滑功能,所以輸出的碼率也會有很大的抖動。而且由于網(wǎng)絡環(huán)境的不斷改變,預先設置的α、β兩個值也不會是最佳值,碼率和傳輸?shù)膸挷荒芎芸斓南噙m應。因此在傳統(tǒng)算法中存在的這些問題就有必要對其進行相應的修改。
從傳統(tǒng)控制算法的缺點可以看出Ploss值的不穩(wěn)定性是帶來輸出碼率抖動的一個原因,所以在客戶端首先需要對Ploss值進行平滑濾波:假設Pnew是最新的丟包率,ξ是一個待調(diào)整的參數(shù)。
Ploss=(1-ξ)×Ploss+Pnew×ξ
在上面對Ploss進行低通濾波之后,可以根據(jù)實時的Ploss來做如下處理:假設 Ploss_max和 Ploss_min分別是丟包率的上下門限值。
在網(wǎng)絡阻塞時如下:
r=MAX{(β×r),MinRate}
在網(wǎng)絡空閑時:
r=MIN{(r+α),MaxRate}
在網(wǎng)絡負載均衡時:
r=r
而在網(wǎng)絡阻塞和網(wǎng)絡空閑時對α、β分別進行如下處理:
假設α_vec是一個包含了5個值的向量,β_vec也是一個包含了5個值的向量,里面的5個值都是按照時間軸的先后來存放的,這5個值的權重因子如下[Wt]T={0.1,0.1,0.2,0.2,0.4};最終的 α、β值都是由時間軸上最近的5個值通過[Wt]這個權重因子加權得到的。對網(wǎng)絡阻塞(Ploss>Ploss_max):
此時的Ploss-Ploss_max反映了網(wǎng)絡的堵塞情況。假設m=Ploss-Ploss_max,而線性增量因子使用平穩(wěn)增長因子來代替,每次α、β的值由下式得出:
α =(1 -e-0.5×(1-m))(其中0.5 為修正因子)
β=β×(1-m)
網(wǎng)絡空閑(Ploss<Ploss_min):
同樣采用m=Ploss_min-Ploss來反映出網(wǎng)絡的空閑度,線性增長因子和乘性因子如下公式改變:
α =(1 -e-0.5×m)(其中0.5 為修正因子)
測試模型如圖1所示。
測試環(huán)境是在一個廣域網(wǎng)環(huán)境中,客戶端(C)負責實時統(tǒng)計RTP包,并在指定的Nr(100)個包之后發(fā)送一個包含Ploss的RTCP包給服務器端(S),測試的時間選擇在晚上8:00~10:00之間的網(wǎng)絡使用高峰期,每20分鐘記錄一次丟包率,經(jīng)過多次測試選擇的最小丟包閾值和最大丟包閾值分別為0.053及0.921,在此參數(shù)下測試的丟包率如圖2所示。
紅色點連線就是使用優(yōu)化算法后的丟包率,而藍色點連線就是傳統(tǒng)算法下的視頻丟包率。從實驗數(shù)據(jù)的統(tǒng)計結(jié)果表明,改進后的RTCP控制算法能夠更有效的對實時視頻流丟包情況進行控制。
RTCP協(xié)議是實時數(shù)據(jù)流在端到端傳輸過程中的重要控制協(xié)議,本算法針對傳統(tǒng)算法中存在的兩個重要缺陷進行優(yōu)化,實驗表明該算法能夠有效降低實時流端到端的抖動,從而提高視頻流傳輸過程中的QOS。
[1]Uyless Black.因特網(wǎng)高級技術[M].北京:電子工業(yè)出版社,2001.
[2]章程,李建華.實時視頻傳輸?shù)姆答亾砣刂撇呗裕跩].計算機工程,2002,28(2):56 -58.
[3]陳志軍,封筠,王滿順,等.流媒體技術及應用[J].河北工業(yè)科技,2003,20(4):48 -51.
[4]趙薇,高春,馬躍,吳文江.通用RTP算法的研究與設計[J].小型微型計算機系統(tǒng),2008,29(5):980 -984.
[5]尹洪,洪玫,曾明,冷江,王卓.基于RTCP的實時流式傳輸擁塞控制算法[J].云南大學學報(自然科學版),2008,30(S2):235 -240.
[6]張曉,胡維華,徐小良.基于RTCP的移動流媒體研究[J].計算機仿真,2009,26(5):169 -172.
[7]李紅艷.基于互聯(lián)網(wǎng)的實時應用網(wǎng)絡通信的研究[C].全國第16屆計算機科學與技術應用學術會議,合肥:中國計算機學會,2004.
[7]楊宏.流媒體數(shù)據(jù)的存儲和傳輸技術研究[D].武漢:武漢大學,2003.