摘 要 網(wǎng)絡(luò)多媒體通信逐漸成為人們生活、工作以及其他應(yīng)用中方便簡潔的一種技術(shù)。網(wǎng)絡(luò)音視頻數(shù)據(jù)量相對于傳統(tǒng)的信息(如文本,圖片等)有更大的數(shù)據(jù)量,在網(wǎng)絡(luò)傳輸中因網(wǎng)絡(luò)硬件及其它因素造成的數(shù)據(jù)傳輸?shù)牟环€(wěn)定。為了保證數(shù)據(jù)的實(shí)時可靠的傳輸,根據(jù)長時間開發(fā)音視頻通信的經(jīng)驗(yàn),采用了一種從采集、編解碼,到網(wǎng)絡(luò)傳輸?shù)南嗷ヅ浜系谋WC數(shù)據(jù)的實(shí)時可靠的傳輸?shù)姆椒?,稱之為自適應(yīng)多碼流傳輸技術(shù)。
關(guān)鍵字 音視頻 ;流媒體 ;緩沖 ;多碼流
中圖分類號: TP393.09 文獻(xiàn)標(biāo)識碼:A文章編號:1671-489X(2007)07-0054-02
Adaptive Multi-Stream Web Transport and Control Technique in Multimedia Communication//He Yuhu, Zhou Shuyi
Abstract The internetmultimedia communication gradually becomes a convenient and concise technique in human’s life,work and other application.Because the audio-video multimedia data generallyis larger than traditional data such as text and picture , the data transmission on web mustn’t steady for net hardware unstable working and other fluctuate.To ensure multimedia data transmission on the real time and reliable way, a method could be adapt which comes my programming experience of the web audio-video communication, that is named self-adapt multi-rate transmission technique which ensures data’s real time and steady operating in coordination in the data collecting , encode-decode and net transmission .
Key wordAV, multimedia , buffer , multi-rate
Author’s address Beijing University of Technology, Beijing 100022
當(dāng)前網(wǎng)絡(luò)上應(yīng)用到音視頻媒體技術(shù)的軟件數(shù)不勝數(shù):如QQ視頻聊天,MSN視頻會議,Windows Media流媒體發(fā)布,還有其他的一些如flash流的網(wǎng)絡(luò)音視頻插件。正是因?yàn)橐粢曨l媒體給人以直觀生動感覺信息,可以預(yù)言在將來的網(wǎng)絡(luò)信息傳播中音視頻數(shù)據(jù)信息將占極大的一個比重。音視頻信息不同于其他媒體信息,具有實(shí)時、可容錯性的特點(diǎn),因此面向非連接的UDP/IP協(xié)議成為網(wǎng)絡(luò)傳輸中的首選。但是由于UDP/IP協(xié)議天生的不可靠性,以及目前網(wǎng)絡(luò)通信條件的限制,在實(shí)際應(yīng)用中常出現(xiàn)音視頻不同步,視頻不流暢,花頻,音頻噪音(如有規(guī)律的“嘟嘟”)等。針對這些問題,作者通過應(yīng)用多碼流與網(wǎng)絡(luò)緩沖結(jié)合,并采用自適應(yīng)負(fù)反饋調(diào)節(jié),基本解決了以上問題,包括在網(wǎng)絡(luò)狀況比較差的64kb/s的modem上實(shí)現(xiàn)音視頻數(shù)據(jù)的比較流暢的傳輸。
1 網(wǎng)絡(luò)狀況分析
在多媒體數(shù)據(jù)傳輸中,網(wǎng)絡(luò)狀況大致可以通過網(wǎng)絡(luò)平均帶寬、網(wǎng)絡(luò)帶寬抖動和網(wǎng)絡(luò)噪聲3方面來進(jìn)行描述。網(wǎng)絡(luò)平均帶寬反映的是網(wǎng)絡(luò)傳輸數(shù)據(jù)的最大承載量,無論是單點(diǎn)對單點(diǎn),單點(diǎn)對多點(diǎn),多點(diǎn)對多點(diǎn)的通信,其最終可簡化到單點(diǎn)對單點(diǎn)的數(shù)據(jù)通信,兩點(diǎn)間的平均帶寬取決于網(wǎng)絡(luò)線路及中間環(huán)節(jié)(路由器,交換機(jī)等)。平均帶寬是一個相對恒定的數(shù)值。網(wǎng)絡(luò)帶寬抖動是由于中間環(huán)節(jié)在處理中轉(zhuǎn)數(shù)據(jù)過程中造成的網(wǎng)絡(luò)實(shí)際帶寬隨時間變化而不斷變化的程度,此抖動往往與網(wǎng)絡(luò)的跳數(shù)(中間的路由器和交換機(jī)的個數(shù))成比例變化。而網(wǎng)絡(luò)噪聲是由多方面因素造成的,相對于網(wǎng)絡(luò)帶寬抖動,網(wǎng)絡(luò)噪聲沒有規(guī)律且變化較快,波動也比較大。網(wǎng)絡(luò)狀況分析的這3個方面中,平均帶寬是一個可測量(測兩點(diǎn)間的帶寬,可用不斷增加的發(fā)送速率發(fā)送打戳的UDP包,接收方給出反饋即可測出),而其他兩個量不可能測出,帶寬抖動相對比較穩(wěn)定,可以根據(jù)前面的數(shù)據(jù)估計,網(wǎng)絡(luò)噪聲隨機(jī)性比較大。
根據(jù)網(wǎng)絡(luò)狀況分析的3方面的特點(diǎn),給出相應(yīng)的解決策略。
(1)如果平均帶寬構(gòu)成對多媒體數(shù)據(jù)傳輸?shù)南拗疲ㄆ骄鶐捫∮诨蛘叽笾陆咏嗝襟w碼流),則必須對音視頻數(shù)據(jù)的碼流進(jìn)行調(diào)整。
(2) 根據(jù)網(wǎng)絡(luò)抖動的情況,開辟適當(dāng)大小的音視頻接收緩沖區(qū)。
(3)對于網(wǎng)絡(luò)噪聲,采用立即增加緩沖和按需求申請重新發(fā)送的策略。
對于前兩條,并非始終不變,而需要自適應(yīng)變化。
2 自適應(yīng)多碼流
在通信前,對音視頻碼流進(jìn)行一次估計:例如320×200采集大小,24位真彩,25幀/秒,H263壓縮的視頻(壓縮比約50:1),8000Hz/秒,兩字節(jié)采樣點(diǎn),雙聲道,G729壓縮(壓縮比16:1)。則音視頻碼流:L1=320*200*24*25/50+8000*16*2/16=784 kb/s 。
根據(jù)此數(shù)值對網(wǎng)絡(luò)進(jìn)行網(wǎng)速估計Vnet:分3步。
(1) 在1秒中發(fā)送784×1.2 /2=470 kb的UDP包群(乘1.2是安全系數(shù)),如果包群接近完全到達(dá)進(jìn)行下一步;否則Vnet=470 kb/s , 跳出網(wǎng)速估計。
(2)在1秒中發(fā)送784×1.2 =940 kb的UDP包群(乘1.2是安全系數(shù)),如果包群接近完全到達(dá)進(jìn)行下一步;否則Vnet=940 kb/s , 跳出網(wǎng)速估計。
(3)在1秒中發(fā)送784×1.2*2=1980 kb的UDP包群(乘1.2是安全系數(shù)),如果包群接近完全到達(dá)Vnet=1980 kb/s, 否則Vnet=784*1.2*1.5=1510 kb/s , 跳出網(wǎng)速估計。
跳出網(wǎng)速估計后,假如估計網(wǎng)速Vnet < 音視頻碼流L1, 根據(jù)實(shí)際情況降低音視頻碼流。有兩種方法:①降低采集幀率 ;②提高壓縮比。兩種方法協(xié)同進(jìn)行。如果對視頻清晰程度有較高的要求,而視頻晃動較小的情況下可以考慮著重降低采集幀率的方法,具體做法是在采集后的圖像幀送到壓縮器時丟棄。如果圖像運(yùn)動頻繁,清晰度要求不太嚴(yán)格的情況下,著重考慮提高壓縮比的方法,一般采用動態(tài)量化系數(shù)或者動態(tài)量化表的方法,去掉更多的圖像細(xì)節(jié)以達(dá)到提高壓縮比的目的。如果網(wǎng)速過低,這兩種方法不足以達(dá)到要求時,沒有辦法,只要像Windows Media 流那樣真正的多碼流了:降低采樣的個數(shù),如176×144。
前面所說的估計網(wǎng)速Vnet并不是真實(shí)的網(wǎng)速,因此在實(shí)際傳輸過程中必須對Vnet進(jìn)行修正,由于平均帶寬是比較恒定數(shù)值,對Vnet的修正可以在比較長的時間段做分析。具體的做法是設(shè)置一個變量P代表前一分鐘的丟包率,每一分鐘對P檢測,如果P大于某個數(shù)值則向發(fā)送方發(fā)送申請降低碼流的控制信息,發(fā)送方根據(jù)實(shí)際情況降低碼流;如果P小于某個數(shù)值,則發(fā)送網(wǎng)絡(luò)狀況良好,可以增加碼流的控制信息,發(fā)送方根據(jù)實(shí)際情況增加或者不改變碼流。P的值的算法在后面會介紹。
3 網(wǎng)絡(luò)緩沖處理
由于網(wǎng)絡(luò)抖動的存在,必須開辟網(wǎng)絡(luò)接收緩沖區(qū)來減弱網(wǎng)絡(luò)抖動造成的媒體數(shù)據(jù)信息傳輸?shù)膩G包現(xiàn)象。網(wǎng)絡(luò)抖動一般呈波浪型,設(shè)網(wǎng)絡(luò)帶寬抖動由T表示,由實(shí)踐觀察得知,網(wǎng)絡(luò)抖動一般在數(shù)秒鐘的數(shù)量級出現(xiàn),因此以5秒為一個觀察間隔。在初始狀態(tài)時不能預(yù)測網(wǎng)絡(luò)抖動T的大小,就以估計網(wǎng)速Vnet的20%為初始值,以后在一定時間內(nèi)自動調(diào)整。實(shí)際檢測中,設(shè)置兩個60×5=300長度的整型數(shù)組,分別表示音頻和視頻最近300秒的每秒鐘的丟包數(shù):L[300](下標(biāo)從0到299),同時設(shè)置一個隊(duì)頭指針,指向最新點(diǎn),當(dāng)網(wǎng)絡(luò)接收丟了若干包后在這個最新點(diǎn)的數(shù)值加上丟包數(shù),隊(duì)頭指針由1秒定時器控制,每秒加一。每5秒設(shè)置一個網(wǎng)絡(luò)抖動計時器,用來記錄網(wǎng)絡(luò)抖動的評估,取一個5秒鐘的變量Lf表示5秒鐘的丟包數(shù),如果Lf大于某個數(shù)值,則網(wǎng)絡(luò)帶寬抖動由T需要增加,如果小于某個數(shù)值則網(wǎng)絡(luò)帶寬抖動由T需要減小。相應(yīng)的,前面所說的估計網(wǎng)速Vnet也需要隨時進(jìn)行調(diào)整,設(shè)置一個一分鐘的定時器,取變量Lm表示前一分鐘的丟包數(shù),根據(jù)Lm的取值對Vnet進(jìn)行適當(dāng)?shù)恼{(diào)整。
4 網(wǎng)絡(luò)噪聲的處理
網(wǎng)絡(luò)噪聲出現(xiàn)比較隨機(jī),基本上沒有比較好的理論上的評估方案,實(shí)際上對網(wǎng)絡(luò)噪音的觀察是通過臨界帶寬通信觀察的數(shù)據(jù)。在網(wǎng)通512 kb/s的ADSL上做了一個實(shí)驗(yàn):建立一個流量為500 kb/s的UDP連接,發(fā)送方每秒發(fā)送64個1 KB大小的包(即512kb),接收方設(shè)置1秒定時器,進(jìn)行長時間的觀察,記錄如圖:

如圖,可以看到明顯突起的部分是由網(wǎng)絡(luò)噪聲造成的丟包波動,時間維持長度大約在10秒的時間段。實(shí)際處理時,設(shè)置一個10秒的定時器,觀察一秒前的丟包數(shù),若丟包數(shù)大于某個數(shù)值,則認(rèn)為有網(wǎng)絡(luò)噪聲,增加緩沖區(qū)到某個數(shù)值,如果丟包數(shù)小于某個數(shù)值則認(rèn)為網(wǎng)絡(luò)噪聲停止,減小緩沖區(qū)個數(shù)。
5 結(jié)束語
對音視頻網(wǎng)絡(luò)數(shù)據(jù)的傳輸控制,有很多種方法,以上是作者在研究中分析總結(jié)自己實(shí)踐中的一些經(jīng)驗(yàn),當(dāng)然會有不足之處,希望以后的研究能夠給予補(bǔ)充。