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