《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 視頻通信中的一種視頻壓縮傳輸方案

視頻通信中的一種視頻壓縮傳輸方案

2009-09-10
作者:羅澤宙 黃桂金

  摘? 要: 一種在可移植H.323的視頻會(huì)議系統(tǒng)內(nèi),基于H.263的純軟件的視頻壓縮、RTP封裝方案,經(jīng)測(cè)試可在較低的運(yùn)算量下實(shí)現(xiàn)實(shí)時(shí)、穩(wěn)定的視頻通信。

  關(guān)鍵詞: H.263協(xié)議? 視頻編碼? 運(yùn)動(dòng)估計(jì)? RTP封裝

?

  國(guó)際電信聯(lián)盟(ITU)制定的H.323協(xié)議提供了一種在分組網(wǎng)上進(jìn)行音視頻通信的系統(tǒng)框架,具有良好的應(yīng)用前景。在H.323框架中,H.225協(xié)議負(fù)責(zé)呼叫接續(xù)控制,H.245負(fù)責(zé)媒體信道的控制管理,視頻編碼使用H.261和H.263協(xié)議,RTP協(xié)議對(duì)媒體數(shù)據(jù)流進(jìn)行封裝。其中,視頻壓縮將占用大量計(jì)算時(shí)間和系統(tǒng)功耗。小型設(shè)備中的嵌入式應(yīng)用對(duì)運(yùn)算量和功耗都有嚴(yán)格限定,因此需要降低視頻編碼過(guò)程的計(jì)算量和實(shí)現(xiàn)復(fù)雜度,并保證一定的主觀(guān)視覺(jué)效果。此外,嵌入式應(yīng)用應(yīng)具有良好的可移植性。本文描述了一個(gè)基于H.263協(xié)議的視頻壓縮傳輸方案,其目標(biāo)是可移植性、低運(yùn)算量和良好容錯(cuò)性。

1?問(wèn)題的提出

  基于H.263的視頻壓縮中,運(yùn)動(dòng)估計(jì)與搜索利用相鄰二幀圖像之間的時(shí)間冗余,在前一幀圖像中搜索當(dāng)前幀的最佳匹配位置,然后進(jìn)行預(yù)測(cè)編碼,通過(guò)壓縮幀間冗余達(dá)到對(duì)視頻數(shù)據(jù)的壓縮。為此,需要確定搜索路徑和匹配準(zhǔn)則。前者通過(guò)使用快速搜索算法降低運(yùn)算復(fù)雜度,后者通過(guò)快速匹配算法保證一定的誤差精度。運(yùn)動(dòng)估計(jì)與搜索過(guò)程占用大部分的編碼時(shí)間,因此需要一種快速搜索的運(yùn)動(dòng)估計(jì)算法,同時(shí)要保證一定的信噪比和主觀(guān)視覺(jué)效果。

  在H.323系統(tǒng)中,視頻數(shù)據(jù)流使用實(shí)時(shí)傳輸協(xié)議RTP進(jìn)行封裝,然后利用UDP通道傳輸。丟包和錯(cuò)序不可避免。因此,RTP封裝必須提供相應(yīng)的冗余信息,在接收端采取相應(yīng)的措施進(jìn)行出錯(cuò)處理,以保證通信的實(shí)時(shí)性和可靠性。

2?視頻壓縮和傳輸?shù)膶?shí)現(xiàn)

2.1 運(yùn)動(dòng)估計(jì)與搜索算法

  視頻壓縮的流程主要包括離散余弦變換、運(yùn)動(dòng)估計(jì)與搜索、編碼控制、量化編碼和碼流復(fù)用。其中運(yùn)動(dòng)估計(jì)與搜索算法決定了壓縮的復(fù)雜性和質(zhì)量。3種運(yùn)動(dòng)估計(jì)搜索算法:螺旋算法(Spiral Algorithm)、4步搜索算法(4SS Algorithm)和預(yù)測(cè)搜索算法(PSA Algorithm)。對(duì)這3種算法進(jìn)行比較,匹配準(zhǔn)則均采用絕對(duì)誤差和(MAE)。

  (1)螺旋算法

  螺旋算法的搜索路徑如圖1所示。以黑點(diǎn)為中心起始點(diǎn),進(jìn)行環(huán)形搜索。每條新路徑起始點(diǎn)位于前一路徑起始點(diǎn)的左上角。當(dāng)進(jìn)行某個(gè)路徑的搜索時(shí),如果當(dāng)前搜索點(diǎn)到達(dá)搜索區(qū)域邊界,則本次搜索結(jié)束。圖中,第1條搜索路徑為虛線(xiàn)路徑,第2條路徑為實(shí)線(xiàn)路徑。

?

  (2)4步搜索算法

  4步搜索算法的搜索路徑如圖2所示。黑點(diǎn)為中心起始點(diǎn),點(diǎn)內(nèi)數(shù)字代表所在搜索路徑序號(hào),搜索的步驟和過(guò)程如下。

?

  ①以中心起始點(diǎn)為中心,以步長(zhǎng)為2的8個(gè)點(diǎn)為搜索窗(5×5),找出9個(gè)點(diǎn)中絕對(duì)誤差和最小的點(diǎn)。如果這個(gè)最小誤差點(diǎn)是搜索窗的中心點(diǎn)或者到達(dá)搜索區(qū)域邊界,則轉(zhuǎn)到第③步。

 ?、谝寓僦姓业降淖钚≌`差點(diǎn)為中心點(diǎn),步長(zhǎng)為2的8個(gè)點(diǎn)為搜索窗(5×5),找出9個(gè)點(diǎn)中絕對(duì)誤差和最小的點(diǎn)(如果當(dāng)前中心點(diǎn)為前一窗的四頂點(diǎn)之一,則當(dāng)前窗與前一窗中有4個(gè)點(diǎn)重合,只需再計(jì)算5次絕對(duì)誤差和;同理,如果中心點(diǎn)是前一窗邊界中點(diǎn),則只需再計(jì)算3次絕對(duì)誤差和)。如果該最小誤差點(diǎn)是搜索窗中心點(diǎn)或者到達(dá)搜索區(qū)域邊界,則轉(zhuǎn)到第③步;否則,重復(fù)本步驟。

 ?、垡寓谥姓业降淖钚≌`差點(diǎn)為中心,步長(zhǎng)為1的8個(gè)點(diǎn)為搜索窗(3×3),找出9個(gè)點(diǎn)中絕對(duì)誤差和最小的點(diǎn)。以該點(diǎn)為基礎(chǔ)進(jìn)行一次半象素精度的運(yùn)動(dòng)估計(jì),得到最終的運(yùn)動(dòng)矢量,結(jié)束搜索過(guò)程。

  (3)預(yù)測(cè)搜索算法

  預(yù)測(cè)搜索算法中參考矢量的相對(duì)位置如圖3所示,其搜索窗中心點(diǎn)的一種可能路徑如圖4所示。預(yù)測(cè)搜索算法主要包括2個(gè)步驟,即確定搜索起始點(diǎn)和按路徑進(jìn)行搜索。確定搜索起始點(diǎn)的方法是:假設(shè)當(dāng)前宏塊在當(dāng)前幀內(nèi)的坐標(biāo)值為(x,y),找出在前一幀內(nèi)位于(x,y)處的宏塊(假設(shè)為圖3中序號(hào)為0的點(diǎn)),然后將位于該宏塊左方、上方和右上方的3個(gè)宏塊(圖3中序號(hào)為1、2、3的點(diǎn))所對(duì)應(yīng)的運(yùn)動(dòng)矢量求和并乘以1/3(按運(yùn)動(dòng)矢量的垂直分量和水平分量分別進(jìn)行加權(quán)),獲得一個(gè)加權(quán)運(yùn)動(dòng)矢量v;在當(dāng)前幀內(nèi),以(x,y)為基礎(chǔ),偏移該加權(quán)運(yùn)動(dòng)矢量v,獲得一個(gè)新的位置,即為對(duì)應(yīng)當(dāng)前宏塊的運(yùn)動(dòng)估計(jì)搜索起始點(diǎn)的位置。確定搜索路徑的過(guò)程如下(假設(shè)圖4中序號(hào)為0的點(diǎn)為前一步驟中確定的搜索起始點(diǎn))。

?

  ①以中心起始點(diǎn)為中心,步長(zhǎng)為1的搜索窗(3×3)計(jì)算9個(gè)點(diǎn)對(duì)應(yīng)的絕對(duì)誤差和,找出誤差最小的點(diǎn),如果該最小誤差點(diǎn)為搜索窗的中心點(diǎn),則轉(zhuǎn)到第③步。

 ?、谌∫缘冖俨街蝎@得的最小誤差點(diǎn)為中心,搜索步長(zhǎng)為1的搜索窗,計(jì)算9個(gè)點(diǎn)對(duì)應(yīng)的絕對(duì)誤差和,找出誤差最小的點(diǎn),如果當(dāng)前最小誤差點(diǎn)為搜索窗的中心點(diǎn)或者達(dá)到了搜索區(qū)域的邊界,則轉(zhuǎn)到第③步;否則,重復(fù)本步驟。

 ?、垡缘冖诓街蝎@得的最小誤差點(diǎn)為基礎(chǔ),進(jìn)行半象素精度的全搜索,得到最終的運(yùn)動(dòng)矢量,結(jié)束搜索過(guò)程。

2.2 H.263碼流的RTP封裝

  RFC2190描述了關(guān)于H.263視頻流的RTP封裝規(guī)范,它規(guī)定了H.263視頻流在進(jìn)行網(wǎng)絡(luò)傳輸前RTP封裝的3種模式:A模式、B模式和C模式。

  (1)A模式

  在A模式中,視頻流以塊組(GOB)為單位進(jìn)行封裝,總是以幀開(kāi)始碼或者塊組(無(wú)論該塊組是否有塊組頭部)開(kāi)始的,但是并不需要包含整數(shù)個(gè)塊組。模式A的載荷頭共4個(gè)字節(jié)。封裝格式如圖5所示(圖中數(shù)字表示比特位序號(hào))。

?

  其中,F字段和P字段的不同組合表示不同的封裝模式;SBIT、EBIT分別表示視頻數(shù)據(jù)首部和尾部的填充位數(shù);I、U、S和A分別表示H.263的4種可選增強(qiáng)模式。這些載荷頭字段與H.263視頻流中的相應(yīng)字段是冗余的。

  (2)B模式

  在B模式中,視頻流在宏塊(MB)邊界進(jìn)行分段封裝,該模式只在未選PB幀模式時(shí)使用。使用B模式,主要是考慮在塊組數(shù)據(jù)較大的情況下,為避免底層網(wǎng)絡(luò)分片,以及配合完成A模式封裝的需要。模式B的載荷頭共8個(gè)字節(jié)。具體封裝格式如圖6所示。

?

  其中,QUANT為本RTP包中第1個(gè)宏塊所用的量化參數(shù);GOBN和MBA分別為第1個(gè)宏塊所在的塊組號(hào)和宏塊地址;HMV1和VMV1字段分別表示第1個(gè)宏塊的運(yùn)動(dòng)矢量的水平和垂直分量的預(yù)測(cè)值(在高級(jí)預(yù)測(cè)模式下,為該宏塊中第1個(gè)塊的運(yùn)動(dòng)矢量的水平和垂直分量的預(yù)測(cè)值);HMV2和VMV2字段僅在高級(jí)預(yù)測(cè)模式中出現(xiàn),表示宏塊中第3個(gè)塊的運(yùn)動(dòng)矢量的水平和垂直分量的預(yù)測(cè)值;其余字段與A模式的同名字段意義相同。

  (3)C模式

  C模式與B模式類(lèi)似,C模式只在選用PB幀模式時(shí)使用,載荷頭共12個(gè)字節(jié)。具體封裝格式如圖7所示。

?

  C模式中的各個(gè)字段的意義與A模式和B模式中的同名字段相同。

3? 實(shí)現(xiàn)方案選擇及結(jié)果

3.1 運(yùn)動(dòng)估計(jì)與搜索算法的實(shí)現(xiàn)及選擇

  本系統(tǒng)在編碼器中實(shí)現(xiàn)了螺旋搜索算法、4步搜索算法和預(yù)測(cè)搜索算法,采用QCIF格式測(cè)試序列“Mother and Daughter”、“Grandma”、“Salesman”和自行錄制的“Sample”,記錄了平均每宏塊搜索次數(shù),以及亮度Y分量平均壓縮信噪比,分別如表1和表2所示。

3.2 RTP封裝模式的使用

  進(jìn)行RTP封裝的目的是提供一定的冗余信息,在發(fā)生傳輸錯(cuò)誤(丟包、數(shù)據(jù)出錯(cuò))時(shí),能夠限制錯(cuò)誤蔓延、提高視頻通信的容錯(cuò)性和健壯性。

  為了減小運(yùn)算復(fù)雜度,不選用PB幀模式,因而不用模式C。H.263協(xié)議中規(guī)定塊組頭是可選的,而視頻流中的最小同步單位是塊組。為了能在丟包的情況下快速重同步,選擇為每個(gè)塊組均加上塊組頭。

????按照RFC2190的規(guī)定:如果當(dāng)前宏塊所在的塊組存在塊組頭,則其運(yùn)動(dòng)矢量的預(yù)測(cè)編碼可參考前一塊組的運(yùn)動(dòng)矢量;否則只參考本塊組的運(yùn)動(dòng)矢量。因此,同一塊組的宏塊應(yīng)盡量在同一個(gè)RTP包內(nèi),否則在丟包的情況下可能無(wú)法正確恢復(fù)已接收的宏塊的運(yùn)動(dòng)矢量。一種簡(jiǎn)單的方案是:假定當(dāng)前塊組無(wú)塊組頭,對(duì)當(dāng)前宏塊進(jìn)行編碼時(shí),如果該宏塊不能放入當(dāng)前RTP包(可能RTP包已滿(mǎn)),且該宏塊為某塊組的第1個(gè)宏塊,則對(duì)該宏塊重新編碼,并且加上塊組頭。實(shí)驗(yàn)證明,該方案沒(méi)有明顯增強(qiáng)傳輸?shù)慕研?但卻增加了實(shí)現(xiàn)復(fù)雜度。

  綜上所述,選擇模式A進(jìn)行RTP封裝。在編碼端,開(kāi)辟1KB的RTP緩沖區(qū)。在每個(gè)塊組編碼完畢之后,如果有足夠的剩余空間,則將該塊組放入當(dāng)前RTP包內(nèi);否則,立即發(fā)送當(dāng)前RTP包,重新申請(qǐng)一個(gè)RTP緩沖區(qū),將當(dāng)前塊組放入新的RTP包。如果當(dāng)前塊組是某幀的最后一個(gè)塊組,則放入RTP緩沖區(qū)之后立即發(fā)送(RFC2190中規(guī)定一個(gè)RTP包內(nèi)不能包含不同幀的數(shù)據(jù))。在解碼端,根據(jù)RTP頭部的序號(hào)進(jìn)行排序和解封裝過(guò)程,然后搜索幀/塊組開(kāi)始碼進(jìn)行同步,并解壓縮。在解碼過(guò)程中出錯(cuò)時(shí),丟棄收到的數(shù)據(jù),用前一幀相應(yīng)的數(shù)據(jù)填充出錯(cuò)的部分進(jìn)行差錯(cuò)掩蓋,并重新搜索幀/塊組開(kāi)始碼進(jìn)行重同步。

3.3 實(shí)驗(yàn)環(huán)境及測(cè)試結(jié)果

  整個(gè)H.323協(xié)議棧測(cè)試運(yùn)行的平臺(tái)是PⅢ800MHz PC機(jī)和Windows2000操作系統(tǒng),以及一套公共服務(wù)函數(shù)。這套公共服務(wù)函數(shù)提供一個(gè)抽象操作系統(tǒng)所必需的功能,并具有可移植性,相當(dāng)于協(xié)議棧與具體操作系統(tǒng)之間的適配層。協(xié)議棧運(yùn)行在這套公共服務(wù)函數(shù)模擬的多線(xiàn)程實(shí)時(shí)操作系統(tǒng)之上,并調(diào)用其API函數(shù)(這些API函數(shù)獨(dú)立于特定的軟/硬件環(huán)境)。因此協(xié)議棧也是可移植的,以便將來(lái)移植到小型終端的嵌入式系統(tǒng)中。視頻壓縮和解壓縮作為2個(gè)獨(dú)立線(xiàn)程屬于協(xié)議棧的一部分,并與其他相關(guān)線(xiàn)程(如采集)通信,整個(gè)協(xié)議棧的可用內(nèi)存空間為1MB。

  在測(cè)試中,采用QCIF格式的視頻源,輸出速率為64Kbps。采用螺旋算法的壓縮過(guò)程P幀平均編碼時(shí)間在600ms以上,協(xié)議棧CPU占用率約為60%。由于運(yùn)算量大而明顯地影響了協(xié)議棧內(nèi)其他線(xiàn)程的運(yùn)行和通信,不符合系統(tǒng)對(duì)視頻壓縮的低運(yùn)算量和實(shí)時(shí)性的要求。采用4步搜索算法的壓縮過(guò)程P幀平均編碼時(shí)間約為39ms,CPU占用率約為20%。通過(guò)對(duì)I幀和P幀的合理選擇,能有效縮減整個(gè)視頻壓縮的平均時(shí)間,并達(dá)到穩(wěn)定的運(yùn)行效果。采用預(yù)測(cè)搜索算法的壓縮過(guò)程P幀平均編碼時(shí)間約為42ms,CPU占用率約為25%,但在測(cè)試過(guò)程中其峰值大約為70ms,穩(wěn)定性不如4步搜索算法。綜上所述,協(xié)議棧的視頻壓縮中的運(yùn)動(dòng)估計(jì)過(guò)程最終采用4步搜索算法。

  為了測(cè)試容錯(cuò)性能,在編碼端每20個(gè)RTP包主動(dòng)丟棄1個(gè),雖然解碼的圖像出現(xiàn)短暫的畫(huà)面模糊和圖像錯(cuò)位,但在2~3秒內(nèi)基本恢復(fù)正常。在編碼端主動(dòng)使部分RTP包序號(hào)亂序,解壓縮端也同樣出現(xiàn)圖像錯(cuò)位,但是經(jīng)過(guò)差錯(cuò)掩蓋,可在2~3秒內(nèi)恢復(fù)正常的解碼過(guò)程。由此證明在解碼部分采用的丟包處理和差錯(cuò)掩蓋等措施是有效的。

4? 結(jié)? 論

  本文針對(duì)小型設(shè)備的嵌入式系統(tǒng)中基于H.323視頻通信的應(yīng)用,提出并實(shí)現(xiàn)了一種基于H.263純軟件實(shí)現(xiàn)的、可移植的、基于IP網(wǎng)絡(luò)的視頻壓縮、解壓縮和傳輸方案,在低運(yùn)算量和傳輸不可靠的環(huán)境下實(shí)現(xiàn)了實(shí)時(shí)、穩(wěn)定的視頻通信。經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,該方案適用于具有較強(qiáng)處理能力的小型嵌入式系統(tǒng)。

?

參考文獻(xiàn)

1? Draft Recommendation H.263 Video Coding for Low?BitRate Communication.ITU-T Recommendation

H.263,1996

2? RTP Payload Format for H.263 Video Streams.RFC 2190,1997

3? 駱立俊,鄒采榮,高西奇等.視頻編碼中的塊運(yùn)動(dòng)估計(jì)算法分析.廣播與電視技術(shù),1997;(10)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀(guān)點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。