李曉東 裘正定
解決這一問題提出了兩種方案:
、僭诒M力而為的基礎(chǔ)上增加其他提供不同程度的行為保證的服務(wù)。這需要在網(wǎng)絡(luò)中實現(xiàn)具體的資源分配和預(yù)留機(jī)制,這一機(jī)制在因特網(wǎng)中還沒有被廣泛地使用;
、诟鶕(jù)網(wǎng)絡(luò)提供的服務(wù)調(diào)整應(yīng)用的行為來實現(xiàn)相應(yīng)的自適應(yīng)操作。這種方法正被應(yīng)用在現(xiàn)有的網(wǎng)絡(luò)中。而且,即使在有顯式的資源分配和預(yù)留的網(wǎng)絡(luò)中,這樣的方法仍舊具有實用價值。例如,自適應(yīng)可以被用在很難對資源提前做出精確估計的情況中。而且,資源預(yù)留的代價較大,通常對較重要的數(shù)據(jù)采用預(yù)留的方式通信,而對于其余數(shù)據(jù)采用自適應(yīng)的方法處理。
對于視頻傳輸來說,重要的信道特性主要是端到端時延、可用帶寬和包丟失率。從高效的端到端時延控制機(jī)制來考慮,應(yīng)該采用更為細(xì)致的路由器內(nèi)數(shù)據(jù)包排隊方式,而不是傳統(tǒng)的先入先出機(jī)制。同時,基于流的IP交換機(jī)制也是解決這一問題的重要方法之一。在端系統(tǒng)中主要采用緩沖調(diào)整的方式來解決時延抖動。對于可用帶寬和包丟失的處理,現(xiàn)在主要有速率控制和差錯控制兩種機(jī)制:
、偎俾士刂茩C(jī)制試圖使一個視頻連接的需求與整個連接鏈路的可用帶寬相匹配。這樣可以同時使網(wǎng)絡(luò)擁塞最小和包丟失率最小。速率控制機(jī)制可以是基于源端的,也可以是基于目的端的。在基于源端的控制機(jī)制中,視頻源端收集反饋信息,進(jìn)行控制計算并采取相應(yīng)的控制動作。這種方法在因特網(wǎng)中被率先采用。然而,這種基于源端的機(jī)制在異構(gòu)網(wǎng)絡(luò)中的運行情況并不是很好。基于目的端的控制機(jī)制則主要根據(jù)所接收的視頻流的狀況向上層反映相應(yīng)的統(tǒng)計信息,實時調(diào)整緩沖及播放內(nèi)容,并力圖使節(jié)奏均勻。這種機(jī)制使用較少;
一、速率控制機(jī)制
速率控制機(jī)制在因特網(wǎng)中已被非實時應(yīng)用廣泛采用。最為人們熟知的例子是在TCP中的基于源端的控制機(jī)制。TCP通過預(yù)測網(wǎng)絡(luò)擁塞狀況來調(diào)整源端發(fā)送窗口的大小。CATV網(wǎng)絡(luò)則采用基于本地緩沖應(yīng)用情況的源端速率控制機(jī)制。
這些機(jī)制都是基于網(wǎng)絡(luò)狀態(tài)的信息反饋來調(diào)整相應(yīng)的音頻視頻編碼器的輸出速率。只不過CATV網(wǎng)是基于本地狀況的反饋而其他網(wǎng)絡(luò)是基于整個網(wǎng)絡(luò)狀況的反饋。這樣看起來,通?梢允褂迷O(shè)計CATV網(wǎng)絡(luò)時所使用的相同的控制機(jī)制。但事實上,為因特網(wǎng)設(shè)計同樣效率的機(jī)制比較困難,這主要是因為:
、傩诺绤(shù)是時變的,這些變化是由于網(wǎng)絡(luò)上存在的其他通信源的特征和需求與視頻源有差異;
②所考慮的信道事實上是一個多播樹,而這個多播樹的組成可能很復(fù)雜,也許它包含著帶寬、時延和包丟失特征不同的異構(gòu)信道。
下面將研究在這種情況下基于源端的速率控制機(jī)制應(yīng)怎樣實現(xiàn)。尤其是要考慮一下對于視頻應(yīng)用來說速率調(diào)整如何實現(xiàn);網(wǎng)絡(luò)狀況怎樣被表達(dá);反饋信息如何提供以及編碼是如何根據(jù)信息來調(diào)整帶寬需求的。
1.速率調(diào)整
這里主要考慮基于塊的變換編碼的情況,如Motion-JPEG,MPEG,H.261和H.263。
很明顯,這類編碼器的許多參數(shù)都可用來調(diào)整輸出碼流的速率。例如,降低視頻的采樣頻率可以降低碼流速率;增加視頻的量化步長同樣可以減少碼流的單位時間比特量;提高運動檢測的門限減少了自上一幀以來被認(rèn)定為變化塊的數(shù)目,這樣也減少了編碼每個圖像的字節(jié)數(shù),從而使輸出的碼流速率降低。
2.反饋信息的收集
——編碼器采用RTP,UDP和IP多播方式發(fā)送視頻信息。視頻數(shù)據(jù)通過RTP打包傳送,一個RTP數(shù)據(jù)包包含12字節(jié)的頭,繼而是載荷,即視頻信息。視頻幀組織是與編碼相關(guān)的,在H.261,H.263中都有相應(yīng)的規(guī)定。反饋信息通過RTCP包傳送,RTCP包中包含有接收者報告包(RR)和發(fā)送者報告包(SR),這取決于發(fā)送該RTCP包的端系統(tǒng)是否在接收數(shù)據(jù)的同時也發(fā)送視頻信息。報告包通過多播方式周期性地被發(fā)送至同樣的多播組,即報告包既被送至源端也被送至多播組中的所有其他目的端。
報告包中包含有目的端得到的視頻質(zhì)量信息,具體包括接收到的最高序列號、包丟失數(shù)量、包到達(dá)抖動的估算法以及時戳(Timestamp)信息。
3.速率控制算法
源端在接收來自所有目的端的報告包之后,可以使用報告包中的信息來估計媒體流在網(wǎng)絡(luò)中的擁塞狀況以及在目的端的視頻質(zhì)量。
控制算法可以計算最大輸出速率(max_rate),這主要參考TCP中使用的線性遞增啃數(shù)遞減算法。即max_rate可以以指數(shù)遞減因子DECR來遞減,并在無擁塞時以固定遞增速率INC來遞增。同時,整個算法應(yīng)確保輸出速率在一定范圍(MIN_RATE,MAX_RATE]之間。
那么,如何判斷擁塞的發(fā)生呢?事實上,沒有一個很好的答案來回答這個問題。一個簡單的選擇是只使用報告包中的丟失信息來進(jìn)行擁塞的指示。不采用抖動信息是因為沒有找到一個好的原則來區(qū)分大的抖動和擁塞。
這里使用擁塞(Congestion)來表達(dá)報告包的丟失率超過了某個門限high_loss,用無擁塞(NoCongestion)來表示丟失率低于另一個門限low_loss,high_loss與low_loss的確定與特定應(yīng)用。編碼方式和具體網(wǎng)絡(luò)有關(guān),所以應(yīng)通過反復(fù)實踐獲得。
二、差錯控制機(jī)制
對于在包交換網(wǎng)絡(luò)中的視頻信號傳輸,包的丟失必定是影響視頻效果的重要因素,而在源端采用的編碼方法的影響也是相當(dāng)大的。如對于H.263,H.261或MPEG中的編碼方法,一個包的丟失可能會造成大量幀的質(zhì)量下降,直到下一個幀內(nèi)編碼的幀被正確接收為止。然而,在一個有一定程度擁塞的或低速的網(wǎng)絡(luò)當(dāng)中,接收到兩個幀內(nèi)編碼的幀的時間間隔也許會相當(dāng)長。于是,人們提出了三種方法來解決這一問題:
①減少幀內(nèi)編碼的間隔,極端情況是一幀的間隔。在Motion-MPEG中采用這個方法后,帶寬的需求隨之明顯增大;
、趦H對那些變化量超過某一門限的塊進(jìn)行編碼和傳輸;
、弁瑫r使用幀內(nèi)編碼和幀間編碼,而且對于幀內(nèi)編碼的問隔根據(jù)網(wǎng)絡(luò)狀況動態(tài)地進(jìn)行調(diào)整。
以上方法是通過調(diào)整幀內(nèi)編碼和幀問編碼的幀的混合程度來使包丟失對視頻效果的影響最小化。還可以使用簡單的包丟失恢復(fù)技術(shù),如利用空域或時域的內(nèi)插在目的端進(jìn)行丟包的恢復(fù)和視頻的平滑?沼虻幕謴(fù)使用同一幀的鄰近區(qū)域來重新組建丟失的碎片;時域的恢復(fù)使用前一幀的相應(yīng)區(qū)域來替代丟失的區(qū)域信息。
還有一種既適于幀內(nèi)編碼又適于幀間編碼的方法,這就是使用基于前向糾錯的差錯控制機(jī)制。在這樣的機(jī)制中,可以在傳輸?shù)拇a流中加入用于糾錯的冗余信息,在遇到包丟失的情況時,利用冗余信息恢復(fù)丟失的信息。它的不足是增加了編碼時延和傳輸帶寬。
在實踐中,筆者采用了動態(tài)調(diào)整幀問間隔的辦法來適應(yīng)實際的網(wǎng)絡(luò)狀況,即根據(jù)報告包的丟失情況動態(tài)調(diào)整幀間間隔。至于變化的幅度,筆者通過在本地局域網(wǎng)中的實驗證明不宜過大,否則會使系統(tǒng)變得不大穩(wěn)定;筆者采用指數(shù)平均的方法進(jìn)行丟包率參數(shù)的計算,給新的丟包率信息以相當(dāng)小的比例。實驗證明,該方法增強(qiáng)了視頻系統(tǒng)對網(wǎng)絡(luò)丟包情況的適應(yīng)性。
三、局限性及展望
對時延、速率以及差錯的控制機(jī)制的確在一定程度上緩解了視頻傳輸上的質(zhì)量問題,但其局限性也相應(yīng)增加了。主要的局限性在于速度和差錯控制機(jī)制的局限,事實上,這也是所有在異構(gòu)
網(wǎng)絡(luò)中進(jìn)行多播傳遞時采用基于源端的控制機(jī)制所共有的局限性,即在多播的不同樹枝上的不同特性信道共享同樣的源的碼流時,其反饋信息必然只反映了該碼流在本地的狀況,固而源端必然只能在各種情況的統(tǒng)計下進(jìn)行折衷處理,結(jié)果是低能力的參與者所在的路徑過載或高能力的參與者所在的路徑視頻質(zhì)量過低。在實踐中,選擇一組合適的參數(shù)并不容易。理想情況下,多播樹各個部分的碼流在出現(xiàn)不同程度的擁塞時應(yīng)被分別處理?赡艿慕鉀Q方案是采用視頻網(wǎng)關(guān)和分層編碼。
1.視頻網(wǎng)關(guān)
視頻網(wǎng)關(guān)可將輸入視頻流的編碼方式(如采用X方式編碼)進(jìn)行轉(zhuǎn)換(如轉(zhuǎn)換成Y方式編碼),再將轉(zhuǎn)喚后的碼流沿多播樹向下級轉(zhuǎn)發(fā)。例如,可將Motion-JPEG碼流轉(zhuǎn)換成H.261或H.263碼流再轉(zhuǎn)發(fā)。當(dāng)然,可以在同樣的編碼算法不同的編碼參數(shù)間進(jìn)行轉(zhuǎn)換。
視頻網(wǎng)關(guān)的主要問題是在網(wǎng)絡(luò)中如何選擇合適的位置放置視頻網(wǎng)關(guān),以及是動態(tài)放置還是靜態(tài)分布。在實踐中,在現(xiàn)有的多播骨干網(wǎng)(Mbone)中靜態(tài)網(wǎng)關(guān)已提供了較好的異構(gòu)連接效果。
2.分層編碼
另一種在異構(gòu)網(wǎng)絡(luò)中多播視頻的方法就是在源端將視頻流分成多個,每個流有不同的帶寬需求。典型的方法就是采用分層編碼。
考慮兩層的情況,典型的基本流包含低分辨率的信息,其他流包含增強(qiáng)信息。傳輸?shù)幕静呗跃褪菍⑼暾膬蓚碼流傳入非擁塞的多播樹枝中。只在相對擁擠的樹枝中傳輸基本流。源端不斷地發(fā)送各層碼流,并且不對其進(jìn)行任何速率的控制。接收端依據(jù)其所在網(wǎng)絡(luò)的情況來選擇加入與相應(yīng)的碼流層對應(yīng)的多播組。
三、結(jié)論
在現(xiàn)有的因特網(wǎng)上進(jìn)行實時的視頻通信是具有挑戰(zhàn)性的。這主要是因為IP網(wǎng)絡(luò)不同于在設(shè)計階段就考慮到服務(wù)質(zhì)量(QoS)的ATM網(wǎng)絡(luò),它只提供盡力而為的服務(wù)。這種服務(wù)對于數(shù)據(jù)通信是可以滿足要求的,但是對于具有實時性要求的視頻業(yè)務(wù),這種服務(wù)為用戶承諾的特性就顯得太少了。
在這種情況下,根本的解決方案是從網(wǎng)絡(luò)本身入手的,比如使網(wǎng)絡(luò)提供不同程度的服務(wù)保證、采用一定的資源預(yù)留、引入流的概念、對不同流的集合進(jìn)行標(biāo)已交換,等等,但是這些標(biāo)準(zhǔn)和技術(shù)被廣泛采納和使用還需要經(jīng)過一段較長的過程。因而,在現(xiàn)有的網(wǎng)絡(luò)上,可以通過使源端或目的端自適應(yīng)地調(diào)整自己的行為,調(diào)整視頻業(yè)務(wù)通信量對網(wǎng)絡(luò)的需求和依賴來適應(yīng)現(xiàn)有網(wǎng)絡(luò)。雖然這樣的方法并不能解決視頻通信的根本問題,但這樣的方法的確在現(xiàn)有的實際應(yīng)用中發(fā)揮了很大的作用。
通過在筆者參與研制的基于H.323標(biāo)準(zhǔn)體系的視頻會議系統(tǒng)中采用以上的自適應(yīng)控制方法,證實了這類方法對于增強(qiáng)視頻系統(tǒng)的適應(yīng)能力有明顯的作用。而且,即使在未來的可以提供多種服務(wù)的網(wǎng)絡(luò)中,這類自適應(yīng)的控制機(jī)制也必定成為應(yīng)用中必不可少的功能。
摘自《通信標(biāo)準(zhǔn)與質(zhì)量信息網(wǎng)》