首頁>>>技術(shù)>>>視像通信  視像通信產(chǎn)品

基于IP的H.264關(guān)鍵技術(shù)

2004/08/13

  一、 引言

  H.264是ITU-T最新的視頻編碼標(biāo)準(zhǔn),被稱作ISO/IEC14496-10或MPEG-4 AVC,是由運(yùn)動圖像專家組(MPEG)和ITU的視頻編碼專家組共同開發(fā)的新產(chǎn)品。H.264分兩層結(jié)構(gòu),包括視頻編碼層和網(wǎng)絡(luò)適配層。視頻編碼層處理的是塊、宏塊和片的數(shù)據(jù),并盡量做到與網(wǎng)絡(luò)層獨立,這是視頻編碼的核心,其中包含許多實現(xiàn)錯誤恢復(fù)的工具;網(wǎng)絡(luò)適配層處理的是片結(jié)構(gòu)以上的數(shù)據(jù),使H.264能夠在基于RTP/UDP/IP、H.323/M、MPEG-2傳輸和H.320協(xié)議的網(wǎng)絡(luò)中使用。

  二、 IP網(wǎng)絡(luò)對視頻壓縮的限制

  1. H.264的應(yīng)用場合

  在討論基于IP的H.264之前,有必要先闡述一下H.264與IP網(wǎng)絡(luò)有關(guān)的應(yīng)用場合及其對傳輸和編解碼器的要求。下面介紹對話應(yīng)用、下載服務(wù)和流媒體應(yīng)用三種場合。

  對話應(yīng)用,比如像視頻電話和視頻會議,有嚴(yán)格的時延限制,要求端到端時延小于1s,最好小于100ms。編解碼器的參數(shù)能實時調(diào)整,錯誤恢復(fù)機(jī)制要根據(jù)實際網(wǎng)絡(luò)變化而改變。編解碼的復(fù)雜度不能很高,比如雙向預(yù)測的模式就不能被采用。

  下載服務(wù),可使用可靠的傳輸協(xié)議如FTP和HTTP將數(shù)據(jù)全部傳輸。由于這種應(yīng)用的非實時性,編碼器可以通過優(yōu)化進(jìn)行高效編碼,而且對時延和錯誤恢復(fù)機(jī)制沒有要求。

  流媒體服務(wù)應(yīng)用,對時延要求介于上面兩者之間,初始化時延是10s以內(nèi)。與實時編碼相比對時延要求降低,編碼器可以進(jìn)行優(yōu)化實現(xiàn)高效編碼(比如雙向預(yù)測)。然而通常流媒體服務(wù)使用不可靠的傳輸協(xié)議,所以編碼時要進(jìn)行差錯控制并進(jìn)行信道糾錯編碼。

  本文主要討論對話應(yīng)用和流媒體應(yīng)用,這兩種應(yīng)用基于IP網(wǎng)絡(luò)。IP網(wǎng)絡(luò)又可分為三種類型:不可控IP網(wǎng)絡(luò)(如Internet)、可控IP網(wǎng)絡(luò)(廣域網(wǎng))和無線IP網(wǎng)絡(luò)(如3G網(wǎng)絡(luò))。這三種IP網(wǎng)絡(luò)有不同的最大傳輸單元尺寸(MTUsize)、比特出錯概率和TCP使用標(biāo)記。最大傳輸單元尺寸是網(wǎng)絡(luò)層最大的分組長度,H.264編碼時要使片的長度小于MTU尺寸,這樣可避免在網(wǎng)絡(luò)層再進(jìn)行一次數(shù)據(jù)的分割。兩個IP節(jié)點之間的MTU尺寸是動態(tài)變化的,通常假定有線IP網(wǎng)絡(luò)的MTU尺寸是1.5千字節(jié),無線網(wǎng)絡(luò)的MTU尺寸是100字節(jié)?梢娨m用于無線網(wǎng)絡(luò)的H.264必須采用數(shù)據(jù)分割技術(shù)使得片的長度小于MTU尺寸。TCP傳輸控制協(xié)議能夠解決網(wǎng)絡(luò)擁塞引起的分組丟失問題,而在無線網(wǎng)絡(luò)中,分組丟失是由于鏈路層錯誤引起的,TCP并非很好的解決辦法,要采用差錯控制協(xié)議。

  2. H.264使用的協(xié)議環(huán)境

  對話應(yīng)用和流媒體應(yīng)用使用同一協(xié)議組,下面進(jìn)行討論。

  網(wǎng)絡(luò)層協(xié)議:使用IP(網(wǎng)際協(xié)議)。每個IP分組單獨從發(fā)方出發(fā),經(jīng)過一系列的路由器到達(dá)收方。IP將大于MTU尺寸的分組進(jìn)行數(shù)據(jù)分割、重組。每個分組的傳輸時間都有所不同。IP頭20個字節(jié)由校驗碼來保證,但數(shù)據(jù)沒有保護(hù)。IP分組最大值為64千字節(jié),但由于MTU尺寸的限制,一般沒有這么大。

  傳輸層協(xié)議:主要有兩個協(xié)議,TCP和UDP。TCP提供面向字節(jié)的可靠傳輸服務(wù),以重傳和超時等機(jī)制作為差錯控制的基礎(chǔ)。由于對時延的不可預(yù)測,并不適用于實時通信傳輸。UDP提供不可靠的數(shù)據(jù)報傳輸業(yè)務(wù)。UDP頭包含的校驗數(shù)(8字節(jié))可以發(fā)現(xiàn)和去掉含有比特錯誤的分組。UDP允許分組傳輸過程中出現(xiàn)丟失、復(fù)制、改序等。使用UDP協(xié)議時,高層必須使用錯誤恢復(fù)協(xié)議。

  應(yīng)用層傳輸協(xié)議:使用RTP(實時傳輸協(xié)議)。該協(xié)議和IP/UDP結(jié)合使用,是面向會話的協(xié)議。每個RTP分組包含RTP頭標(biāo),載荷頭標(biāo)(可選)和載荷本身。RTP頭標(biāo)的內(nèi)容見圖1,基本選項占用12字節(jié),標(biāo)記位標(biāo)記有同一時間戳的一組分組的結(jié)束。RTP協(xié)議使發(fā)送方將數(shù)據(jù)分為大小合理的分組,并將解碼方觀察到的網(wǎng)絡(luò)特征反饋給發(fā)送方,使發(fā)送方可以動態(tài)調(diào)整比特率和抗誤碼機(jī)制。RTP分組和RTP載荷規(guī)范在第四部分討論。

  應(yīng)用層控制協(xié)議:有H.245協(xié)議、SIP和SDP,或RTSP。這些協(xié)議可以實現(xiàn)流媒體的控制,收發(fā)方的協(xié)商和控制動態(tài)會話層。

  三、H.264的錯誤恢復(fù)工具

  錯誤恢復(fù)的工具隨著視頻壓縮編碼技術(shù)的提高在不斷改進(jìn)。舊的標(biāo)準(zhǔn)(H.261、H263、MPEG-2的第二部分)中,使用片和宏塊組的劃分、幀內(nèi)編碼宏塊、幀內(nèi)編碼片和幀內(nèi)編碼圖像來防止錯誤的擴(kuò)散。之后改進(jìn)的標(biāo)準(zhǔn)(H.263+、MPEG-4)中,使用多幀參考和數(shù)據(jù)分割技術(shù)來恢復(fù)錯誤。H.264標(biāo)準(zhǔn)在以前的基礎(chǔ)上提出了三種關(guān)鍵技術(shù):(1)參數(shù)集合,(2) 靈活的宏塊次序(FMO),(3)冗余片(RS)來進(jìn)行錯誤的恢復(fù)。

  1. 幀內(nèi)編碼

  H.264中幀內(nèi)編碼的技術(shù)和以前標(biāo)準(zhǔn)一樣,值得注意的是:

  (1)H.264中的幀內(nèi)預(yù)測編碼宏塊的參考宏塊可以是幀間編碼宏塊,幀內(nèi)預(yù)測宏塊并不像H.263中的幀內(nèi)編碼一樣,而采用預(yù)測的幀內(nèi)編碼比非預(yù)測的幀內(nèi)編碼有更好的編碼效率,但減少了幀內(nèi)編碼的重同步性能,可以通過設(shè)置限制幀內(nèi)預(yù)測標(biāo)記來恢復(fù)這一性能。

  (2)只包含幀內(nèi)宏塊的片有兩種,一種是幀內(nèi)片(Islice),一種是立即刷新片(IDRslice),立即刷新片必存在于立即刷新圖像(IDRpicture)中。與短期參考圖像相比,立即刷新圖像有更強(qiáng)壯的重同步性能。

  在無線IP網(wǎng)絡(luò)環(huán)境下,為了提高幀內(nèi)圖像的重同步性能,要采用率失真優(yōu)化編碼和設(shè)置限制幀內(nèi)預(yù)測標(biāo)記。

  2. 圖像的分割

  H.264支持一幅圖像劃分成片,片中宏塊的數(shù)目是任意的。在非FMO模式下,片中的宏塊次序是同光柵掃描順序,F(xiàn)MO模式下比較特殊。片的劃分可以適配不同的MTU尺寸,也可以用來交織分組打包。

  3. 參考圖像選擇

  參考圖像數(shù)據(jù)選擇,不論是基于宏塊、基于片,還是基于幀,都是錯誤恢復(fù)的有效工具。對于有反饋的系統(tǒng),編碼器獲得傳輸中丟失圖像區(qū)域的信息后,參考圖像可以選擇解碼已經(jīng)正確接收的圖像對應(yīng)的原圖像區(qū)域作參考。在沒有反饋的系統(tǒng)中,將會使用冗余的編碼來增加錯誤恢復(fù)性能。

  4. 數(shù)據(jù)的劃分

  通常情況下,一個宏塊的數(shù)據(jù)是存放在一起而組成片的,數(shù)據(jù)劃分使得一個片中的宏塊數(shù)據(jù)重新組合,把宏塊語義相關(guān)的數(shù)據(jù)組成一個劃分,由劃分來組裝片。在H.264中有三種不同的數(shù)據(jù)劃分。 (1)頭信息劃分:包含片中宏塊的類型,量化參數(shù)和運(yùn)動矢量,是片中最重要的信息。 (2)幀內(nèi)信息劃分:包含幀內(nèi)CBPs和幀內(nèi)系數(shù),幀內(nèi)信息可以阻止錯誤的蔓延。 (3)幀間信息劃分:包含幀間CBPs和幀間系數(shù),通常比前兩個劃分要大得多。

  幀內(nèi)信息劃分結(jié)合頭信息解出幀內(nèi)宏塊,幀間信息劃分結(jié)合頭信息解出幀間宏塊。幀間信息劃分的重要性最低,對重同步?jīng)]有貢獻(xiàn)。當(dāng)使用數(shù)據(jù)劃分時,片中的數(shù)據(jù)根據(jù)其類型被保存到不同的緩存,同時片的大小也要調(diào)整,使得片中最大的劃分小于MTU尺寸。

  解碼端若獲得所有的劃分,就可以完整重構(gòu)片;解碼端若發(fā)現(xiàn)幀內(nèi)信息或幀間信息劃分丟失,可用的頭信息仍然有很好的錯誤恢復(fù)性能。這是因為宏塊類型和宏塊的運(yùn)動矢量含有宏塊的基本特征。

  5. 參數(shù)集的使用

  序列的參數(shù)集(SPS)包括了一個圖像序列的所有信息,圖像的參數(shù)集(PPS)包括了一個圖像所有片的信息。多個不同的序列和圖像參數(shù)集經(jīng)排序存放在解碼器。編碼器參考序列參數(shù)集設(shè)置圖像參數(shù)集,依據(jù)每一個已編碼片的片頭的存儲地址選擇合適的圖像參數(shù)集來使用。對序列的參數(shù)和圖像的參數(shù)進(jìn)行重點保護(hù)才能很好地增強(qiáng)H.264錯誤恢復(fù)性能。

  在差錯信道中使用參數(shù)集的關(guān)鍵是保證參數(shù)集及時、可靠地到達(dá)解碼端。例如,在實時信道中,編碼器用可靠控制協(xié)議及早將他們以帶外傳輸?shù)姆绞桨l(fā)送,使控制協(xié)議能夠在引用新參數(shù)的第一個片到達(dá)之前把它們發(fā)給解碼器;另外一個辦法就是使用應(yīng)用層保護(hù),重發(fā)多個備份文件,確保至少有一個備份數(shù)據(jù)到達(dá)解碼端;第三個辦法就是在編解碼器的硬件中固化參數(shù)集設(shè)置。

  6. 靈活的宏塊次序(FMO)

  靈活的宏塊次序是H.264的一大特色,通過設(shè)置宏塊次序映射表(MBAmap)來任意地指配宏塊到不同的片組,F(xiàn)MO模式打亂了原宏塊順序,降低了編碼效率,增加了時延,但增強(qiáng)了抗誤碼性能。FMO模式劃分圖像的模式各種各樣,重要的有棋盤模式、矩形模式等。當(dāng)然FMO模式也可以使一幀中的宏塊順序分割,使得分割后的片的大小小于無線網(wǎng)絡(luò)的MTU尺寸。經(jīng)過FMO模式分割后的圖像數(shù)據(jù)分開進(jìn)行傳輸,以棋盤模式為例,當(dāng)一個片組的數(shù)據(jù)丟失時可用另一個片組的數(shù)據(jù)(包含丟失宏塊的相鄰宏塊信息)進(jìn)行錯誤掩蓋。實驗數(shù)據(jù)顯示,當(dāng)丟失率為(視頻會議應(yīng)用時)10%時,經(jīng)錯誤掩蓋后的圖像仍然有很高的質(zhì)量。

  7. 冗余片方法

  前邊提到了當(dāng)使用無反饋的系統(tǒng)時,就不能使用參考幀選擇的方法來進(jìn)行錯誤恢復(fù),應(yīng)該在編碼時增加冗余的片來增強(qiáng)抗誤碼性能。要注意的是這些冗余片的編碼參數(shù)與非冗余片的編碼參數(shù)不同,也就是用一個模糊的冗余片附加在一個清晰的片之后。在解碼時先解清晰的片,如果其可用就丟棄冗余片;否則使用冗余模糊片來重構(gòu)圖像。


  四、H.264中實時傳輸協(xié)議(RTP)

  1. RTP載荷規(guī)范

  在第二部分已經(jīng)對H.264的網(wǎng)絡(luò)協(xié)議環(huán)境作了闡述,這里要詳細(xì)討論RTP的載荷規(guī)范和抗誤碼性能。RTP通過發(fā)送冗余信息來減少接收端的丟包率,會增加時延,與冗余片不同的是它增加的冗余信息是個別重點信息的備份,適合于應(yīng)用層的非等重保護(hù)。下邊闡述與多媒體傳輸有關(guān)的3個規(guī)范。

  (1)分組復(fù)制多次重發(fā),發(fā)送端對最重要的比特信息分組進(jìn)行復(fù)制重發(fā),使得保證接收端能至少正確接收到一次,同時接收端要丟棄已經(jīng)正確接收的分組的多余備份。

  (2)基于分組的前向糾錯,對被保護(hù)的分組進(jìn)行異或運(yùn)算,將運(yùn)算結(jié)果作為冗余信息發(fā)送到接收方。由于時延,不用于對話型應(yīng)用,可用于流媒體。

  (3)音頻冗余編碼,可保護(hù)包括視頻在內(nèi)的任何數(shù)據(jù)流。每個分組由頭標(biāo)、載荷以及前一分組的載荷組成,H.264中可與數(shù)據(jù)分割一起使用。

  2. H.264 NAL單元的概念

  H.264 NAL單元對編碼數(shù)據(jù)進(jìn)行打包,NAL單元由1字節(jié)的頭,3個定長的字段和一個字節(jié)數(shù)不定的編碼段組成。

  頭標(biāo)的語法:NALU類型(5bit)、重要性指示位(2bit)、禁止位(1bit)。

  NALU類型:1~12由H.264使用,24~31由H.264以外的應(yīng)用使用。

  重要性指示:標(biāo)志該NAL單元用于重建時的重要性,值越大,越重要。

  禁止位:網(wǎng)絡(luò)發(fā)現(xiàn)NAL單元有比特錯誤時可設(shè)置該比特為1,以便接收方丟掉該單元。

  3. 分組打包的規(guī)則

  (1)額外開銷要少,使MTU尺寸在100~64k字節(jié)范圍都可以;

  (2)不用對分組內(nèi)的數(shù)據(jù)解碼就可以判別該分組的重要性;

  (3)載荷規(guī)范應(yīng)當(dāng)保證不用解碼就可識別由于其他的比特丟失而造成的分組不可解碼;

  (4)支持將NALU分割成多個RTP分組;

  (5)支持將多個NALU匯集在一個RTP分組中。

  RTP的頭標(biāo)可以是NALU的頭標(biāo),并可以實現(xiàn)以上的打包規(guī)則。

  4. 簡單打包

  一個RTP分組里放入一個NALU,將NALU(包括同時作為載荷頭標(biāo)的NALU頭)放入RTP的載荷中,設(shè)置RTP頭標(biāo)值。為了避免IP層對大分組的再一次分割,片分組的大小一般都要小于MTU尺寸。由于包傳送的路徑不同,解碼端要重新對片分組排序,RTP包含的次序信息可以用來解決這一問題。

  5. NALU分割

  對于預(yù)先已經(jīng)編碼的內(nèi)容,NALU可能大于MTU尺寸的限制。雖然IP層的分割可以使數(shù)據(jù)塊小于64千字節(jié),但無法在應(yīng)用層實現(xiàn)保護(hù),從而降低了非等重保護(hù)方案的效果。由于UDP數(shù)據(jù)包小于64千字節(jié),而且一個片的長度對某些應(yīng)用場合來說太小,所以應(yīng)用層打包是RTP打包方案的一部分。

  新的討論方案(IETF)應(yīng)當(dāng)符合以下特征:

  (1)NALU的分塊以按RTP次序號升序傳輸;

  (2)能夠標(biāo)記第一個和最后一個NALU分塊;

  (3)可以檢測丟失的分塊。

  6. NALU合并

  一些NALU如SEI、參數(shù)集等非常小,將它們合并在一起有利于減少頭標(biāo)開銷。已有兩種集合分組:

  (1)單一時間集合分組(STAP),按時間戳進(jìn)行組合;

  (2)多時間集合分組(MTAP),不同時間戳也可以組合。

  五、結(jié)束語

  本文重點講述了在IP網(wǎng)絡(luò)的限制條件下H.264進(jìn)行錯誤恢復(fù)的幾種有力工具,但在不同的IP網(wǎng)絡(luò)中要組合使用各種工具才能實現(xiàn)高效率編碼和傳輸。因為目前無線網(wǎng)絡(luò)對MTU尺寸和時延的限制,所以錯誤恢復(fù)工具可以結(jié)合使用圖像的分割、數(shù)據(jù)的劃分和RTP分組技術(shù),避免使用冗余信息和反饋來提高錯誤恢復(fù)性能;另外高效率的FMO編碼模式可以大大提高編碼的抗分組丟失性能。

ChinaByte(e.chinabyte.com)—中國多媒體視訊


相關(guān)鏈接:
新一代視頻會議系統(tǒng)全面超越傳統(tǒng)視頻技術(shù) 2004-08-06
視頻會議系統(tǒng)全景掃描 2004-08-06
會議電視組網(wǎng)技術(shù)比較與分析 2004-08-06
ADSL如何承載視頻業(yè)務(wù) 2004-08-06
H.323電視會議系統(tǒng)終端的實現(xiàn) 2004-08-05

分類信息:     文摘   技術(shù)_視像通訊_文摘