H.264的技術(shù)優(yōu)勢在H.323系統(tǒng)中的應(yīng)用
本文以適用于在IP網(wǎng)上提供多媒體業(yè)務(wù)的H.323系統(tǒng)為主進(jìn)行闡述。H.264是由JVT為實(shí)現(xiàn)視頻的更高壓縮比,更好的圖像質(zhì)量和良好的網(wǎng)絡(luò)適應(yīng)性而提出的新的視頻編解碼標(biāo)準(zhǔn)。事實(shí)證明,H.264編碼更加節(jié)省碼流,它內(nèi)在的抗丟包、抗誤碼能力和良好網(wǎng)絡(luò)適應(yīng)性使它非常適于IP傳輸,H.264有望成為H.323系統(tǒng)中首選的視頻標(biāo)準(zhǔn)。
H.323系統(tǒng)對視頻編解碼標(biāo)準(zhǔn)提出了以下三個主要要求:
(1)一些IP網(wǎng)絡(luò)接入方式如xDSL可提供的帶寬有限,除去音頻、數(shù)據(jù)占用的帶寬,傳輸視頻的可用帶寬就更少,這就要求視頻編解碼壓縮率高,這樣就可以在一定的比特率下具有更好的圖像質(zhì)量。
(2)抗丟包性能和抗誤碼性能好,適應(yīng)各種網(wǎng)絡(luò)環(huán)境,包括丟包和誤碼嚴(yán)重的無線網(wǎng)絡(luò)。
(3)網(wǎng)絡(luò)適應(yīng)性好,便于視頻流在網(wǎng)絡(luò)中傳輸。
二、H.264適于H.323系統(tǒng)的三個技術(shù)優(yōu)勢
H.264在制定時充分考慮了多媒體通信對視頻編解碼的各種要求,并借鑒了以往視頻標(biāo)準(zhǔn)的研究成果,因而具有明顯的優(yōu)勢。以下將結(jié)合H.323系統(tǒng)對視頻編解碼技術(shù)的要求,闡述H.264的三個優(yōu)勢。
1. 壓縮率和圖像質(zhì)量方面
對傳統(tǒng)的幀內(nèi)預(yù)測、幀間預(yù)測、變換編碼和熵編碼等算法的改進(jìn),使H.264的編碼效率和圖像質(zhì)量在以往標(biāo)準(zhǔn)的基礎(chǔ)上進(jìn)一步提高。
(1)可變塊大?。簬g預(yù)測時可以靈活選擇塊的大小。在宏塊(MB)劃分上H.264采用了16×16,16×8,8×16,8×8四種模式;當(dāng)劃分為8×8模式時,又可進(jìn)一步采用8×4、4×8、4×4三種子宏塊劃分模式進(jìn)一步劃分,這樣可以使運(yùn)動物體的劃分更加精確,減小預(yù)測誤差,提高編碼效率。幀內(nèi)預(yù)測一般采取兩種亮度預(yù)測模式:Intra_4×4和Intra_16×16。Intra_4×4適合圖像中細(xì)節(jié)豐富的區(qū)域,而Intra_16×16模式更適合粗糙的圖像區(qū)域。
(2)高精度運(yùn)動估值:在H.264中亮度信號運(yùn)動補(bǔ)償預(yù)測的精度是1/4像素。如果運(yùn)動矢量指向參考圖像的整像素位置,預(yù)測值就是該位置上參考圖像像素的值;否則使用6階FIR濾波器的線性內(nèi)插獲得1/2像素位置的預(yù)測值,通過取整數(shù)和1/2像素位置像素值均值的方式獲得1/4像素位置的值。顯然采用高精度運(yùn)動估計(jì)會進(jìn)一步減小幀間預(yù)測誤差。
(3)多參考幀運(yùn)動估值:每一個M×N亮度塊都要經(jīng)過運(yùn)動補(bǔ)償預(yù)測得到運(yùn)動矢量和參考圖像索引,子宏塊中的每個子宏塊劃分都會有不同的運(yùn)動矢量。選擇參考圖像過程是在子宏塊層次上進(jìn)行的,因而一個子宏塊中的多個子宏塊劃分在預(yù)測時使用相同的參考圖像,而同一個slice的多個子宏塊之間選擇的參考圖像可以不同,這就是多參考幀運(yùn)動估值。
(4)參考圖像的選取更加靈活:參考圖像甚至可以是采用雙向預(yù)測編碼方式的圖像,這就允許選取與當(dāng)前圖像更加匹配的圖像為參考圖像進(jìn)行預(yù)測,從而可以減小預(yù)測誤差。
(5)加權(quán)預(yù)測:允許編碼器以一定的系數(shù)對運(yùn)動補(bǔ)償預(yù)測值進(jìn)行加權(quán),從而在一定的場景下可以提高圖像質(zhì)量。
(6)運(yùn)動補(bǔ)償循環(huán)內(nèi)的消除塊效應(yīng)濾波器:為消除在預(yù)測和變換過程中引入的塊效應(yīng),H.264也采用了消除塊效應(yīng)濾波器,但不同的是H.264的消除塊效應(yīng)濾波器位于運(yùn)動估計(jì)循環(huán)內(nèi)部,因而可以利用消除塊效應(yīng)以后的圖像去預(yù)測其他圖像的運(yùn)動,從而進(jìn)一步提高預(yù)測精度。
2. 抗丟包和抗誤碼方面
參數(shù)集、片的使用、FMO、冗余片等關(guān)鍵技術(shù)的使用可以大大提高系統(tǒng)的抗丟包和抗誤碼性能。
(1)參數(shù)集:參數(shù)集及其靈活的傳送方式會大大降低因關(guān)鍵的頭信息丟失而造成錯誤發(fā)生的可能。為保證參數(shù)集可靠地到達(dá)解碼器端,可以采用重發(fā)的方式多次發(fā)送同一參數(shù)集,或傳送多個參數(shù)集。
(2)片(slice)的使用:圖像可以劃分成一個或幾個片。將圖像劃分為多個片,當(dāng)某一片不能正常解碼時的空間視覺影響就會大大降低,而且片還提供了重同步點(diǎn)。
(3)PAFF和MBAFF:當(dāng)對隔行掃描圖像進(jìn)行編碼時,由于兩個場之間存在較大的掃描間隔,這樣,對運(yùn)動圖像來說幀中相鄰兩行的空間相關(guān)性相對于逐行掃描時就會減小,這時對兩個場分別進(jìn)行編碼會更節(jié)省碼流。對幀來說,存在三種可選的編碼方式,將兩場合并作為一幀進(jìn)行編碼或?qū)蓤龇謩e編碼或?qū)蓤龊喜⑵饋碜鳛橐粠?,但不同的是將幀中垂直相鄰的兩個宏塊合并為宏塊對進(jìn)行編碼。前兩種稱為PAFF編碼,對運(yùn)動區(qū)域進(jìn)行編碼時場方式有效,非運(yùn)動區(qū)域由于相鄰兩行有較大的相關(guān)性,因而幀方式會更有效。當(dāng)圖像同時存在運(yùn)動區(qū)域和非運(yùn)動區(qū)域時,在MB層次上,對運(yùn)動區(qū)域采取場方式,對非運(yùn)動區(qū)域采取幀方式會更加有效,這種方式就稱為MBAFF。
(4)FMO:通過FMO可以進(jìn)一步提高片的差錯恢復(fù)能力。通過片組(slice group)的使用,F(xiàn)MO改變了圖像劃分為片和宏塊的方式。宏塊到片組的映射定義了宏塊屬于哪一個片組。利用FMO技術(shù),H.264定義了七種宏塊掃描模式。
(1)幀內(nèi)預(yù)測:H.264借鑒了以往視頻編解碼標(biāo)準(zhǔn)在幀內(nèi)預(yù)測上的經(jīng)驗(yàn),值得注意的是,在H.264中,IDR圖像可以使參考圖像緩存無效,之后的圖像在解碼時不再參考IDR圖像之前的圖像,因而IDR圖像具有很好的重同步作用。在一些丟包和誤碼嚴(yán)重的信道中,可以采取不定期傳送IDR圖像的方式進(jìn)一步提高H.264的抗誤碼和抗丟包性能。
(2)冗余圖像:為提高H.264的解碼器在發(fā)生數(shù)據(jù)丟失時的頑健性,可以采用傳送冗余圖像的方式。當(dāng)基本圖像丟失時,可以通過冗余圖像重構(gòu)原圖像。
(3)數(shù)據(jù)劃分:由于運(yùn)動矢量和宏塊類型等信息相對于其他信息具有更高的重要性,因而在H.264中引入了數(shù)據(jù)劃分的概念,將片中語義彼此相關(guān)的語法元素放在同一個劃分中。在H.264中有三類不同的數(shù)據(jù)劃分,三類數(shù)據(jù)劃分分開傳送,若第二類或第三類劃分的信息丟失,使用差錯恢復(fù)工具仍然可以通過第一類劃分中的信息對丟失信息進(jìn)行適當(dāng)恢復(fù)。
(4)多參考幀運(yùn)動估值:多參考幀運(yùn)動估值不但可以提高編碼器的編碼效率,還可以提高差錯恢復(fù)能力。在H.323系統(tǒng)中,通過使用RTCP,當(dāng)編碼器得知有參考圖像丟失時,可以選擇解碼器已經(jīng)正確接收的圖像作為參考圖像。
(5)為阻止錯誤在空間上的蔓延,解碼器端可以指定當(dāng)P片或B片中的宏塊在做幀內(nèi)預(yù)測時不使用相鄰的非幀內(nèi)編碼宏塊作為參考。
3. 網(wǎng)絡(luò)適應(yīng)性方面
為適應(yīng)各種網(wǎng)絡(luò)環(huán)境和應(yīng)用場合,H.264定義了視頻編碼層(VCL)和網(wǎng)絡(luò)提取層(NAL)。其中VCL功能是進(jìn)行視頻編解碼,包括運(yùn)動補(bǔ)償預(yù)測,變換編碼和熵編碼等功能;NAL用于采用適當(dāng)?shù)母袷綄CL視頻數(shù)據(jù)進(jìn)行封裝打包。
(1)NAL Units:視頻數(shù)據(jù)封裝在整數(shù)字節(jié)的NALU中,它的第一個字節(jié)標(biāo)志該單元中數(shù)據(jù)的類型。H.264定義了兩種封裝格式。基于包交換的網(wǎng)絡(luò)(如H.323系統(tǒng))可以使用RTP封裝格式封裝NALU。而另外一些系統(tǒng)可能要求將NALU作為順序比特流傳送,為此H.264定義了一種比特流格式的傳輸機(jī)制,使用start_code_prefix將NALU封裝起來,從而確定NAL邊界。
(2)參數(shù)集:以往視頻編解碼標(biāo)準(zhǔn)中GOBGOP圖像等頭信息是至關(guān)重要的,包含這些信息的包的丟失常導(dǎo)致與這些信息相關(guān)的圖像不能解碼。為此H.264將這些很少變化并且對大量VCL NALU起作用的信息放在參數(shù)集中傳送。參數(shù)集分為兩種,即序列參數(shù)集和圖像參數(shù)集。為適應(yīng)多種網(wǎng)絡(luò)環(huán)境,參數(shù)集可以帶內(nèi)傳送,也可以采用帶外方式傳送。
三、在H.323系統(tǒng)中實(shí)現(xiàn)H.264
由于H.264是一種新的視頻編解碼標(biāo)準(zhǔn),在H.323體系中應(yīng)用H.264存在一些問題,比如如何在H.245能力協(xié)商過程中定義實(shí)體的H.264能力,因此必須對H.323標(biāo)準(zhǔn)進(jìn)行必要的補(bǔ)充和修改。為此,ITU-T制定了H.241標(biāo)準(zhǔn)。本文僅介紹與H.323相關(guān)的修改。
首先,要規(guī)定如何在H.245能力協(xié)商過程中定義H.264能力。H.264能力集是一個包含一個或多個H.264能力的列表,每一個H.264能力都包含Profile和Level兩個必選參數(shù)和CustomMaxMBPS、CustomMaxFS等幾個可選參數(shù)。在H.264中,Profile用于定義生成比特流的編碼工具和算法,Level則是對一些關(guān)鍵的參數(shù)要求。H.264能力包含在GenericCapability結(jié)構(gòu)中,其中CapabilityIdentifier的類型為standard,值為0.0.8.241.0.0.1,用于標(biāo)識H.264能力。MaxBitRate用于定義最大比特率。Collapsing字段包含H.264能力參數(shù)。Collapsing字段第一個條目是Profile,ParameterIdentifier類型為standard,值為41,用于標(biāo)識Profile,ParameterValue類型為booleanArray,其值標(biāo)識Profile,可以為64、32或16,這三個值依次表示Baseline、Main和Extended三個Profile;Collapsing字段第二個條目是Level,ParameterIdentifier類型為standard,值為42,用于標(biāo)識Level,ParameterValue類型為unsignedMin,其值標(biāo)識H.264 AnnexA中定義的15個可選的Level值。其他的幾個參數(shù)作為可選項(xiàng)出現(xiàn).
其次,由于H.264中圖像的組織結(jié)構(gòu)與傳統(tǒng)的標(biāo)準(zhǔn)不同,一些原有的H.245信令不在適用于H.264,如MiscellaneousCommand中的videoFastUpdateGOB等,因此H.241重新定義了幾個信令提供相應(yīng)功能。
最后,H.264的RTP封裝參考RFC 3550,載荷類型(PT)域未作規(guī)定。
四、結(jié)束語
作為一種新的國際標(biāo)準(zhǔn),H.264在編碼效率、圖像質(zhì)量、網(wǎng)絡(luò)適應(yīng)性和抗誤碼方面都取得了成功。但隨著終端和網(wǎng)絡(luò)的快速發(fā)展,對視頻編解碼的要求在不斷提高,因此H.264仍在繼續(xù)地完善和發(fā)展以適應(yīng)新的要求?,F(xiàn)在對H.264的研究主要集中在如何進(jìn)一步降低編解碼時延、算法優(yōu)化和進(jìn)一步提高圖像質(zhì)量上。目前,使用H.264進(jìn)行編解碼的視頻會議系統(tǒng)越來越多,大多數(shù)做到了在Baseline Profile上的互通。隨著H.264自身的不斷完善和視頻通信的不斷普及,相信H.264的應(yīng)用將越來越廣泛。