趙 娟, 李 鑫
(1.中國(guó)地質(zhì)大學(xué)(武漢)信息技術(shù)教學(xué)實(shí)驗(yàn)中心,湖北 武漢 430074;2.中國(guó)地質(zhì)大學(xué)(武漢)機(jī)械與電子信息學(xué)院,湖北 武漢 430074)
現(xiàn)有CDMA2000 EVDO網(wǎng)絡(luò)的帶寬完全可以滿足經(jīng)過壓縮編碼后的實(shí)時(shí)視頻數(shù)據(jù)的傳輸[1],但由于視頻監(jiān)控領(lǐng)域?qū)崟r(shí)性的要求,須采用UDP/IP協(xié)議,它是面向非連接的,不可靠的傳輸服務(wù);同時(shí),CDMA2000 EVDO網(wǎng)絡(luò)自身具有波動(dòng)性比較大、誤碼率高、傳輸延遲等諸多特點(diǎn);經(jīng)過傳輸?shù)囊曨l通常會(huì)出現(xiàn)延遲大,出現(xiàn)馬賽克等質(zhì)量問題。因此,有必要對(duì)CDMA2000 EVDO網(wǎng)絡(luò)的特性進(jìn)行有效評(píng)估,來指導(dǎo)視頻編碼發(fā)送端視頻流的動(dòng)態(tài)調(diào)節(jié),從而達(dá)到降低丟包率,實(shí)現(xiàn)視頻流暢播放的目的。
筆者依據(jù)CDMA2000 EVDO網(wǎng)絡(luò)的諸多特點(diǎn)和參考RTP協(xié)議來制定出評(píng)估CDMA2000 EVDO網(wǎng)絡(luò)特性的相關(guān)參數(shù),再經(jīng)過大量的實(shí)驗(yàn)數(shù)據(jù)統(tǒng)計(jì)、分析和論證,得出該網(wǎng)絡(luò)的特性。提出了在視頻編碼發(fā)送端進(jìn)行速率整形以匹配網(wǎng)絡(luò)帶寬的策略,并利用TMS320DM365的開發(fā)平臺(tái),對(duì)經(jīng)過H.264編碼的視頻流進(jìn)行了實(shí)時(shí)傳輸?shù)臏y(cè)試。
相比有線網(wǎng)路,CDMA2000 EVDO網(wǎng)絡(luò)具有一定的特殊性,因此衡量其網(wǎng)絡(luò)特性也就相對(duì)比較復(fù)雜。這里主要依據(jù)RTP(real-time protocol)協(xié)議 RFC3550[2]給出部分參數(shù),諸如丟包率、時(shí)間抖動(dòng);同時(shí),從視頻傳輸?shù)慕嵌榷x部分與網(wǎng)絡(luò)特性相關(guān)的參數(shù),以下給出解釋。
1)丟包間隔
丟包間隔=當(dāng)前包序列號(hào) -前一次包的序列號(hào)
丟包的間隔用來衡量網(wǎng)絡(luò)實(shí)時(shí)的狀態(tài),正常情況下丟包間隔應(yīng)該為1,而丟包間隔越大,也就說明數(shù)據(jù)包丟失的越厲害。
2)數(shù)據(jù)流量
數(shù)據(jù)流量=收到的包個(gè)數(shù)/收到的時(shí)間間隔
對(duì)于數(shù)據(jù)流量的統(tǒng)計(jì)可以說明網(wǎng)絡(luò)的帶寬狀況,實(shí)時(shí)反映了傳輸速率。這里,可以把時(shí)間間隔作為恒定參量,來統(tǒng)計(jì)收到的數(shù)據(jù)包數(shù),或者把收到的數(shù)據(jù)包數(shù)作為恒定參量,來統(tǒng)計(jì)時(shí)間間隔,而該文主要采用了后一種辦法。
對(duì)于網(wǎng)絡(luò)特性參數(shù)的測(cè)試,可以利用依據(jù)RTP協(xié)議編寫的函數(shù)庫(kù)jrtplib-3.7.1[3]和jrtpthread-1.2.1[4],該函數(shù)庫(kù)具有很好的兼容性,可以在多種操作系統(tǒng)中應(yīng)用。這里主要將其應(yīng)用在基于達(dá)芬奇架構(gòu)的TMS320DM365開發(fā)平臺(tái)上和VC2008開發(fā)軟件中。
客戶端:TMS320DM365開發(fā)平臺(tái)+CDMA2000 EVDO模塊(MC8630)
服務(wù)器:VC2008開發(fā)軟件和有線網(wǎng)絡(luò)
測(cè)試條件:在同一時(shí)間段內(nèi)進(jìn)行連續(xù)測(cè)量,數(shù)據(jù)流量為每收到100個(gè)數(shù)據(jù)包計(jì)算一次,時(shí)間抖動(dòng)為每?jī)蓚€(gè)數(shù)據(jù)包計(jì)算一次,丟包率為收到數(shù)據(jù)包后每5 s計(jì)算一次,數(shù)據(jù)包大小為1 kB。
1)網(wǎng)絡(luò)傳輸數(shù)據(jù)的實(shí)時(shí)統(tǒng)計(jì)分析,如圖1至圖4所示。其中圖1和圖2是在平均數(shù)據(jù)流量為86.3 kB/s的條件下測(cè)試所得,圖3和圖4是在平均數(shù)據(jù)流量為32.6 kB/s的條件下測(cè)試所得。
從圖1和圖2可以看出,時(shí)間抖動(dòng)和丟包間隔是同步變化的,而且時(shí)間抖動(dòng)比較劇烈,數(shù)據(jù)包丟失的也較多。
從圖3和圖4可以看出,時(shí)間抖動(dòng)變化比較緩和,丟失的數(shù)據(jù)包也相對(duì)較少。
2)網(wǎng)絡(luò)傳輸數(shù)據(jù)的整體對(duì)比,如表1所示。
從表1中可以看出,網(wǎng)絡(luò)傳輸過程中的平均數(shù)據(jù)流量越高,平均時(shí)間抖動(dòng)就越大,平均丟包率也越高。而當(dāng)平均數(shù)據(jù)流量降至32.6 kB/s時(shí),平均丟包率已經(jīng)降至1%以下。
圖1 時(shí)間抖動(dòng)Fig.1 Time jitter
圖2 丟包間隔Fig.2 The interval of package lost
圖3 時(shí)間抖動(dòng)Fig.3 Time jitter
圖4 丟包間隔Fig.4 The interval of package lost
表1.實(shí)驗(yàn)測(cè)量數(shù)據(jù)Tab.1 Test data from experiment
綜合以上實(shí)驗(yàn)數(shù)據(jù),可以得出如下結(jié)論:發(fā)送數(shù)據(jù)速率(即數(shù)據(jù)流量)是決定CDMA2000 EVDO網(wǎng)絡(luò)傳輸特性的關(guān)鍵因素。而且,當(dāng)前網(wǎng)絡(luò)帶寬一定的前提下,發(fā)送數(shù)據(jù)速率越高,時(shí)間抖動(dòng)就越大,丟包率就越高;反之亦然。
TMS320DM365是TI的DaVinci系列的雙核處理器,采用DSP進(jìn)行硬件視頻編碼,將輸入的BT.656格式的視頻流編碼為標(biāo)準(zhǔn)的H.264碼流輸出,該碼流會(huì)伴隨著I幀或P幀的產(chǎn)生而出現(xiàn)頻繁的數(shù)據(jù)抖動(dòng)[5]。而根據(jù)以上實(shí)驗(yàn)總結(jié)的CDMA2000 EVDO網(wǎng)絡(luò)的傳輸特性,當(dāng)這種抖動(dòng)的碼流直接通過網(wǎng)絡(luò)傳輸?shù)臅r(shí)候,一旦瞬時(shí)碼流超過網(wǎng)絡(luò)所能承受的帶寬,將會(huì)面臨很高的丟包率。實(shí)驗(yàn)證明,這種情況下,碼流的丟包會(huì)達(dá)到60%以上,時(shí)間抖動(dòng)也會(huì)超過10000(單位是RTP時(shí)間戳單位)。因此,有必要對(duì)該碼流進(jìn)行速率整形,使其平滑后再通過CDMA2000 EVDO網(wǎng)絡(luò)傳輸。
TMS320DM365開發(fā)平臺(tái)上控制輸出碼流大小的參數(shù)主要有幀率、GOP、圖像質(zhì)量和圖像格式[6]。其中,對(duì)碼流速率整形起著重要作用的參數(shù)是幀率和GOP。幀率,決定著視頻圖像的播放速率。幀率越高,其圖像幀之間的間隔就越小,編碼后的數(shù)據(jù)速率就越大。GOP,是指圖像組,即每組圖像中包含多少個(gè)P幀和I幀。這兩個(gè)參數(shù)共同決定了編碼后輸出的H.264碼流的數(shù)據(jù)速率和I幀的時(shí)間間隔。于是,可以應(yīng)用這組參數(shù)對(duì)需要傳輸?shù)拇a流予以速率整形[7]。
該過程如圖5所示,其主要實(shí)現(xiàn)兩個(gè)部分的功能。
圖5 速率整形過程Fig.5 The procedure of data rate re-shaping
1)發(fā)送時(shí)間間隔的初步估計(jì),主要是利用兩個(gè)或多個(gè)I幀之間的時(shí)間間隔除以統(tǒng)計(jì)的包數(shù),得到平均時(shí)間來作為發(fā)送的時(shí)間間隔。但是,考慮到在不同視頻模式切換的過程中,會(huì)產(chǎn)生時(shí)間突變,這樣,得到的時(shí)間間隔就不夠精確,從而引起發(fā)送數(shù)據(jù)量的突變,使得模式切換時(shí)過度不夠平滑。所以,需要進(jìn)一步修正時(shí)間間隔。
2)修正時(shí)間間隔主要依賴于發(fā)送緩沖區(qū)中暫存的數(shù)據(jù)量。首先為發(fā)送緩沖區(qū)中的暫存數(shù)據(jù)量設(shè)定上下限Min_buf和Max_buf;然后對(duì)該數(shù)據(jù)量進(jìn)行判斷,當(dāng)數(shù)據(jù)量處于Min_buf和Max_buf之間時(shí),說明發(fā)送數(shù)據(jù)正常,就可以使用初步估計(jì)的時(shí)間間隔;當(dāng)數(shù)據(jù)量低于下限Min_buf時(shí),說明發(fā)送數(shù)據(jù)的速率過快,就需要將初步估計(jì)的時(shí)間延時(shí),以降低發(fā)送速率,從而使緩沖區(qū)里的數(shù)據(jù)量恢復(fù)到正常范圍,反之,當(dāng)數(shù)據(jù)量高于上限Max_buf時(shí),則需要縮短初步估計(jì)的時(shí)間。
經(jīng)過初步速率整形之后,對(duì)視頻編碼發(fā)送端的數(shù)據(jù)速率進(jìn)行測(cè)試。
測(cè)試條件為:圖像格式 CIF,幀率 15 f/s,GOP=15,圖像質(zhì)量為A。
測(cè)試結(jié)果如圖6所示。
圖6 發(fā)送端數(shù)據(jù)流量統(tǒng)計(jì)Fig.6 The data stream statistics from sender
從中可以發(fā)現(xiàn),該速率基本維持在55 kB/s左右,但同時(shí)也發(fā)現(xiàn),每8個(gè)數(shù)據(jù)流間隔之間就會(huì)出現(xiàn)一個(gè)速率在100 kB/s左右的數(shù)據(jù)流,這是一個(gè)非常嚴(yán)重的問題。此后,經(jīng)過大量的實(shí)驗(yàn)測(cè)試和分析,針對(duì)TMS320DM365開發(fā)平臺(tái)來說,這個(gè)抖動(dòng)的數(shù)據(jù)流是伴隨著幀率和GOP這兩個(gè)參數(shù)的變化而變化的。于是,為了獲得更加平滑的數(shù)據(jù)速率,就需要對(duì)該數(shù)據(jù)進(jìn)行再次整形。
針對(duì)初次速率整形中所產(chǎn)生的問題,筆者通過對(duì)視頻編碼后的碼流進(jìn)行分析,查找出抖動(dòng)視頻流發(fā)生的規(guī)律,并以此作為計(jì)算初步發(fā)送時(shí)間間隔的邊界,這樣,就可以將之前平穩(wěn)的碼流與其中抖動(dòng)的碼流一起再次進(jìn)行整形。但是,速率得到整形的同時(shí),數(shù)據(jù)發(fā)送緩沖區(qū)就需要進(jìn)一步進(jìn)行細(xì)分以滿足數(shù)據(jù)突變時(shí)更多不同的情況。緩沖區(qū)調(diào)整算法如圖7所示。則以最快的速率發(fā)送數(shù)據(jù),防止系統(tǒng)崩潰。
經(jīng)過第二次速率整形以及發(fā)送緩沖區(qū)優(yōu)化后,再對(duì)視頻編碼發(fā)送端的數(shù)據(jù)速率進(jìn)行測(cè)試。實(shí)驗(yàn)結(jié)果表明:數(shù)據(jù)流量已基本穩(wěn)定在60 kB/s(測(cè)試條件與3.3節(jié)相同)。這說明抖動(dòng)的視頻流也得到了一個(gè)有效的平滑緩沖。此外,經(jīng)過服務(wù)器端的測(cè)試,當(dāng)發(fā)送的碼流在CDMA2000 EVDO網(wǎng)絡(luò)帶寬范圍內(nèi)時(shí),數(shù)據(jù)的丟包率降低到10%以下,時(shí)間抖動(dòng)也基本能穩(wěn)定在5 000(單位是RTP時(shí)間戳單位)以下,更重要的是,通過該網(wǎng)絡(luò)實(shí)時(shí)傳輸?shù)囊曨l數(shù)據(jù)可以實(shí)現(xiàn)比較流暢的播放。
圖7 緩沖區(qū)調(diào)整算法Fig.7 The tuning algorithm for buffe
該算法中先根據(jù)幾個(gè)I幀 (其中包括數(shù)據(jù)流抖動(dòng)的I幀)進(jìn)行統(tǒng)計(jì),計(jì)算出理論發(fā)送數(shù)據(jù)的速率Ns以及這段時(shí)間編碼所產(chǎn)生的數(shù)據(jù)包數(shù)N,隨后利用緩沖區(qū)未發(fā)送數(shù)據(jù)的包數(shù)n與N的比值來將緩沖區(qū)分為6個(gè)小部分,每個(gè)部分對(duì)應(yīng)一個(gè)統(tǒng)計(jì)得出的乘積系數(shù)kn,最后就可以利用kn計(jì)算出實(shí)際發(fā)送數(shù)據(jù)的速率。這6個(gè)小部分,可以這樣劃分:部分Ⅰ表示以正常的速率發(fā)送數(shù)據(jù);部分Ⅱ表示當(dāng)緩沖區(qū)里是數(shù)據(jù)累計(jì)較多時(shí),以一定的比例加速發(fā)送數(shù)據(jù);部分Ⅲ表示當(dāng)編碼完成時(shí),瞬時(shí)產(chǎn)生的大量數(shù)據(jù)包累積在緩沖區(qū)時(shí),以比Ⅱ更快的速率發(fā)送數(shù)據(jù);部分Ⅳ和部分Ⅴ處理的是在進(jìn)行視頻模式向高碼率切換時(shí),會(huì)產(chǎn)生大量的數(shù)據(jù)包,這時(shí)發(fā)送數(shù)據(jù)的速率需要更加快速;最后的部分Ⅵ是當(dāng)有異常產(chǎn)生時(shí),緩沖區(qū)內(nèi)的數(shù)據(jù)包會(huì)超過理論單次編碼生成數(shù)據(jù)包的2倍以上,
在現(xiàn)有的CDMA2000 EVDO網(wǎng)絡(luò)中,采用速率整形的方法來傳輸經(jīng)過H.264編碼壓縮的實(shí)時(shí)視頻數(shù)據(jù),可以有效提高視頻的質(zhì)量,減小視頻信號(hào)的時(shí)延,減弱視頻中的馬賽克現(xiàn)象[8]。但是,考慮一點(diǎn),經(jīng)過硬件編碼器編碼的視頻流,其碼流量是一定的,而這種碼流整形的方法只能是將抖動(dòng)的碼流變得更加均勻,更適合于無線網(wǎng)絡(luò)傳輸,其并沒有有效的降低碼流。所以,在網(wǎng)絡(luò)狀況一旦變得比較差的情況下,即使經(jīng)過平滑的碼流也同樣面臨著丟包率很高的危險(xiǎn),從而導(dǎo)致視頻質(zhì)量降低。因此,更好的解決方法就是通過對(duì)3G無線網(wǎng)絡(luò)的動(dòng)態(tài)評(píng)估和監(jiān)測(cè),來實(shí)時(shí)調(diào)整視頻編碼參數(shù)而有效地降低碼流,保證平穩(wěn)的碼流能夠適應(yīng)網(wǎng)絡(luò)帶寬的變化,以達(dá)到更加理想的效果。
[1]田霞.基于3G網(wǎng)絡(luò)的新型無線監(jiān)控系統(tǒng) [J].價(jià)值工程,2010,29(36):154-155.TIAN Xia.The new wirelessmonitoring system based on 3G network[J].Value Engineering,2010,29(36):154-155.
[2]Schulzrinne H,Casner S,Frederick R,et al.RTP:A Transport Protocol for Real-Time Applications[S].RFC3550.[S.l.]2003.
[3]Jori Liesenborgs.JRTPLIB 3.4.0[EB/OL].[2006-1-19].http:w ww.edm.uhasselt.be/
[4]Jori Liesenborgs.JThreadmanual(v1.2.1)[EB/OL].[2006-06-20].http://www.edm.uhasselt.be/
[5]Sejal Barot,Karimulla Shaik,Naveen Srinivasamurthy,Yashwant Dutt.Application Parameter Settings for TMS320D M365 H.264 Encoder[EB/OL].[2010-5-20].http:/www.ti.com/apps/docs/mrktgenpage.tsp contentId=54260&app Id=79.
[6]DM365-DVRReference Design User Guide Document Version1.1[EB/OL].[2009-8-21].http://www.ti.com/tool/dvrrd.
[7]盛先剛.基于RTP的H.264視頻傳輸系統(tǒng)研究 [D].西安:西安電子科技大學(xué),2006.
[8]朱孟祥,唐普英,黃自立,等.基于DSP和FPGA的多通道CMOS圖像監(jiān)控系統(tǒng)[J].電子設(shè)計(jì)工程,2011,19(14):178-180.ZHU Meng-xiang,TANG Pu-ying,HUANG Zi-li,et al.Monitoring system ofmultiple video channels based on DSP and FPGA[J].Electronic Design Engineering,2011,19(14):178-180.