| 摘 要: 基于中國(guó)Internet網(wǎng)絡(luò)現(xiàn)狀,對(duì)提高視頻傳輸?shù)膶?shí)時(shí)性、穩(wěn)定性、連續(xù)性提出了幾點(diǎn)改進(jìn)算法。在視頻會(huì)議、遠(yuǎn)程機(jī)器人控制中得到了具體的應(yīng)用,并取得了良好的效果。 關(guān)鍵詞: 傳輸協(xié)議 壓縮 視頻 Internet實(shí)時(shí)視頻傳輸在網(wǎng)絡(luò)會(huì)議、遠(yuǎn)程機(jī)器人控制等方面有著廣泛的應(yīng)用。其關(guān)鍵問(wèn)題包括:傳輸?shù)膶?shí)時(shí)性棗根據(jù)不同系統(tǒng)的要求,實(shí)時(shí)性是一個(gè)重要的評(píng)價(jià)指標(biāo),例如視頻會(huì)議系統(tǒng),要求傳輸?shù)难舆t不超過(guò)0.5s否則會(huì)影響參會(huì)者的正常表達(dá)對(duì)于遠(yuǎn)程控制系統(tǒng),要根據(jù)具體要求進(jìn)行調(diào)節(jié)。傳輸協(xié)議的制定棗傳統(tǒng)的傳輸協(xié)議應(yīng)用到視頻傳輸中或多或少都存在一些缺陷,因?yàn)樗鼈儾皇菍?zhuān)門(mén)設(shè)計(jì)的,尤其針對(duì)中國(guó)網(wǎng)絡(luò)現(xiàn)狀更要進(jìn)行一些獨(dú)特的設(shè)計(jì)。這包括并發(fā)的TCP協(xié)議,可靠的UDP傳輸協(xié)議。壓縮算法棗對(duì)H.263視頻壓縮協(xié)議進(jìn)行增強(qiáng),調(diào)節(jié)關(guān)鍵幀與非關(guān)鍵幀的比例以及質(zhì)量來(lái)適應(yīng)不同的網(wǎng)絡(luò)傳輸率。 1 協(xié)議的設(shè)計(jì) 傳統(tǒng)的視頻傳輸協(xié)議是建立在TCP/UDP的基礎(chǔ)上進(jìn)行的。他們都是傳輸層協(xié)議,具有較高的效率。TCP協(xié)議則保證了傳輸?shù)目煽啃?采用這種協(xié)議要在視頻接收方建立服務(wù)程序等待來(lái)自發(fā)送方的視頻數(shù)據(jù)。最開(kāi)始,發(fā)送方與接收方要建立一條穩(wěn)定的通路來(lái)保證傳輸?shù)目煽啃?這種建立連接的過(guò)程可能是比較長(zhǎng)的,特別是發(fā)送方與接收方中間要經(jīng)過(guò)很多路由的時(shí)候。而一旦這條通路建立之后,數(shù)據(jù)的傳輸是可靠的,不會(huì)出現(xiàn)亂序或丟失數(shù)據(jù)包的現(xiàn)象。如果網(wǎng)絡(luò)的帶寬能穩(wěn)定維持在一定水平,傳輸視頻的效果很好。但由于Internet的現(xiàn)狀,電話(huà)線(xiàn)與中間路由器等硬件設(shè)備經(jīng)常出現(xiàn)阻塞,為此,我們提出以下幾種方法,來(lái)提高傳輸效率使視頻可以平滑、小延遲地回放。 1.1 多路TCP并發(fā)傳輸 TCP協(xié)議建立連接的過(guò)程也是一個(gè)尋找通路的過(guò)程,它通過(guò)網(wǎng)絡(luò)層、物理層協(xié)議來(lái)建立從數(shù)據(jù)發(fā)送源到目的地的最佳通路。由于當(dāng)時(shí)網(wǎng)絡(luò)環(huán)境的不同,每次建立連接所選擇的通路就有可能不同,這些不同的通路同時(shí)阻塞的機(jī)會(huì)顯然比一條通路阻塞要小得多。這就是多路并發(fā)TCP傳輸協(xié)議的原理。 具體的設(shè)計(jì)步驟如下: (1)設(shè)定同時(shí)連接進(jìn)行數(shù)據(jù)傳輸?shù)倪B接數(shù)目為5個(gè),每個(gè)連接都有一個(gè)線(xiàn)程來(lái)控制,每個(gè)線(xiàn)程可以獨(dú)立地運(yùn)作。他們之間又可以相互通信,使得在同一時(shí)刻進(jìn)行數(shù)據(jù)傳輸?shù)耐分挥幸粋(gè)。并且這個(gè)數(shù)據(jù)通路的傳輸速度相對(duì)于其他通路是更快的。其他的通路反復(fù)地進(jìn)行數(shù)據(jù)傳輸速度的測(cè)試,稱(chēng)為測(cè) 試通路,在當(dāng)前數(shù)據(jù)通路發(fā)生阻塞的時(shí)候則斷掉這條通路,而啟用在測(cè)試通路中速度最快的那一個(gè),并將其切換為數(shù)據(jù)通路進(jìn)行傳輸。簡(jiǎn)言之,就是一個(gè)數(shù)據(jù)通路,多個(gè)測(cè)試通路同時(shí)并存,盡量選擇速度最快的通路作為數(shù)據(jù)通路見(jiàn)圖1。 (2) 鑒于建立連接的過(guò)程相對(duì)較慢,所以采用交錯(cuò)的方式進(jìn)行。即不是在一開(kāi)始將5個(gè)通路的連接全部建立起來(lái),而是先建立一個(gè)連接并作為數(shù)據(jù)通路傳輸,與此同時(shí)再逐步建立其他通路的連接,由于每條通路都是采用線(xiàn)程來(lái)控制的,它們之間不會(huì)相互影響,見(jiàn)圖2。 (3) 如果經(jīng)過(guò)步驟(1)選擇了最佳的數(shù)據(jù)通路之后數(shù)據(jù)仍然不能傳出去,說(shuō)明現(xiàn)在的網(wǎng)絡(luò)帶寬不足以傳輸視頻數(shù)據(jù)流,因此傳輸模塊會(huì)將這一信息反饋給壓縮模塊,由壓縮模塊根據(jù)當(dāng)前的網(wǎng)絡(luò)速度重新調(diào)整參數(shù),形成新的數(shù)據(jù)量較小的視頻流。與此同時(shí)在發(fā)送方設(shè)有一個(gè)1秒鐘的cache,將由于阻塞而沒(méi)有發(fā)出去的數(shù)據(jù)包暫時(shí)存在cache中,無(wú)法存入cache中的數(shù)據(jù)包被發(fā)送方丟掉,這是對(duì)傳輸?shù)膶?shí)時(shí)性和連續(xù)性的一個(gè)折衷。 1.2 可靠的UDP傳輸 用UDP協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)膬?yōu)點(diǎn)是不需要建立連接,傳輸速度快。缺點(diǎn)是容易丟失數(shù)據(jù)包和數(shù)據(jù)包的順序發(fā)生混亂。為此我們?cè)O(shè)計(jì)了一種方法來(lái)保證數(shù)據(jù)的可靠性。 (1) 建立一條以UDP作為傳輸協(xié)議的數(shù)據(jù)通路,在傳輸時(shí)要把壓縮后的視頻流打包,這時(shí)不能簡(jiǎn)單地采用以視頻幀為打包的單位。因?yàn)?第一、某些壓縮的關(guān)鍵幀會(huì)很大以致超過(guò)了UDP協(xié)議所規(guī)定的最大值;第二、關(guān)鍵幀與非關(guān)鍵幀數(shù)據(jù)量相差很遠(yuǎn),有可能使數(shù)據(jù)量較小的非關(guān)鍵幀比它前面的數(shù)據(jù)量大的關(guān)鍵幀更早地到達(dá)接收方,而導(dǎo)致亂序。因此我們采用將數(shù)據(jù)流劃分成等量的小包,并在包頭標(biāo)上序號(hào)進(jìn)行順序傳輸,在包頭標(biāo)序號(hào)是為了防止由于UDP本身帶來(lái)的傳輸亂序問(wèn)題。 (2) 建立一條以TCP為傳輸協(xié)議的控制通路,它的作用是反饋一些控制命令給發(fā)送方,以最小限度地防止傳輸中的錯(cuò)誤。接收方要從數(shù)據(jù)通路得到視頻數(shù)據(jù)流,并把這個(gè)數(shù)據(jù)流存儲(chǔ)在一個(gè)0.3s~0.8s的緩沖區(qū)中,按照數(shù)據(jù)包頭的編號(hào)將數(shù)據(jù)流重構(gòu)出來(lái)。如果數(shù)據(jù)包編號(hào)出現(xiàn)不連續(xù),說(shuō)明發(fā)生了丟包或亂序,則接收方立即通過(guò)控制通路發(fā)送要求重發(fā)所丟失的數(shù)據(jù)包的命令。采用TCP作為控制通路的協(xié)議是因?yàn)榭梢员WC控制命令的準(zhǔn)確性,而且控制命令的數(shù)據(jù)量很小,發(fā)生阻塞的情況不大。 (3) 為了保證傳輸?shù)臅r(shí)實(shí)性,不能無(wú)限制地發(fā)送控制命令,接收方以緩沖區(qū)為限制,當(dāng)緩沖區(qū)已經(jīng)用完,而仍然存在丟失數(shù)據(jù)包的現(xiàn)象,則只有丟掉一些數(shù)據(jù)來(lái)保證實(shí)時(shí)性,見(jiàn)圖3。 2 數(shù)據(jù)壓縮 視頻數(shù)據(jù)的壓縮比和質(zhì)量的好壞是Internet視頻傳輸是否成功的前提。為了適應(yīng)現(xiàn)有Internet的傳輸率低、傳輸性能不穩(wěn)定的特點(diǎn),我們采用國(guó)際上比較先進(jìn)的H.263壓縮標(biāo)準(zhǔn)。H.263是一種中等質(zhì)量的壓縮方法,它不象MPEG等高質(zhì)量的壓縮方法那樣有很高的圖象清晰度。但是,H.263標(biāo)準(zhǔn)有壓縮算法簡(jiǎn)單、壓縮快速和壓縮比高等特性,這使得它非常適合象“機(jī)器人遠(yuǎn)程控制”等要求實(shí)時(shí)傳輸圖像,但對(duì)圖像質(zhì)量的要求不高的情 況,見(jiàn)圖4。 為了適應(yīng)Internet的不穩(wěn)定性,需要在原有的壓縮算法上做一些改進(jìn)。通過(guò)傳輸模塊反饋回來(lái)的信息,可以得知當(dāng)前網(wǎng)絡(luò)的傳輸速率,以此來(lái)調(diào)整壓縮算法的各個(gè)參數(shù),來(lái)獲得最好的幀率和質(zhì)量。其中,一種方法是對(duì)幀內(nèi)壓縮方法的改進(jìn),另一種方法是對(duì)幀間壓縮方法的改進(jìn)。對(duì)幀內(nèi)壓縮方法的改進(jìn):主要是通過(guò)改變壓縮質(zhì)量的參數(shù)來(lái)調(diào)節(jié)圖像質(zhì)量和壓縮比,見(jiàn)圖5。 對(duì)幀間壓縮方法的改進(jìn):可以通過(guò)改變幀率、關(guān)鍵幀間的距離來(lái)調(diào)節(jié)傳輸數(shù)率。改變每秒采集和傳輸?shù)膱D像數(shù)目,可以改變傳輸數(shù)據(jù)的大小,見(jiàn)圖6。 運(yùn)動(dòng)壓縮的關(guān)鍵是在于兩幀之間的差別大小。如果圖象只有微小的變化,那么經(jīng)過(guò)作差后壓縮效果就好;如果圖像變化很大,那么經(jīng)過(guò)作差后壓縮效果就很差。為了充分利用運(yùn)動(dòng)壓縮的特點(diǎn),我們根據(jù)圖像的性質(zhì)來(lái)調(diào)節(jié)關(guān)鍵幀間的距離。在圖像變化不大的情況下,非關(guān)鍵幀數(shù)據(jù)較少,此時(shí)拉長(zhǎng)關(guān)鍵幀間的距離可以降低傳輸率;在圖像變化較大的情況下,非關(guān)鍵幀數(shù)據(jù)較多,此時(shí)縮短關(guān)鍵幀間的距離增加運(yùn)動(dòng)補(bǔ)償?shù)男Ч?/p> |