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