基于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)動(dòng)圖像專家組(MPEG)和ITU的視頻編碼專家組共同開發(fā)的新產(chǎn)品。H.264分兩層結(jié)構(gòu),包括視頻編碼層和網(wǎng)絡(luò)適配層。視頻編碼層處理的是塊、宏塊和片的數(shù)據(jù),并盡量做到與網(wǎng)絡(luò)層獨(dú)立,這是視頻編碼的核心,其中包含許多實(shí)現(xiàn)錯(cuò)誤恢復(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)用,比如像視頻電話和視頻會(huì)議,有嚴(yán)格的時(shí)延限制,要求端到端時(shí)延小于1s,最好小于100ms。編解碼器的參數(shù)能實(shí)時(shí)調(diào)整,錯(cuò)誤恢復(fù)機(jī)制要根據(jù)實(shí)際網(wǎng)絡(luò)變化而改變。編解碼的復(fù)雜度不能很高,比如雙向預(yù)測的模式就不能被采用。
下載服務(wù),可使用可靠的傳輸協(xié)議如FTP和HTTP將數(shù)據(jù)全部傳輸。由于這種應(yīng)用的非實(shí)時(shí)性,編碼器可以通過優(yōu)化進(jìn)行高效編碼,而且對時(shí)延和錯(cuò)誤恢復(fù)機(jī)制沒有要求。
流媒體服務(wù)應(yīng)用,對時(shí)延要求介于上面兩者之間,初始化時(shí)延是10s以內(nèi)。與實(shí)時(shí)編碼相比對時(shí)延要求降低,編碼器可以進(jìn)行優(yōu)化實(shí)現(xiàn)高效編碼(比如雙向預(yù)測)。然而通常流媒體服務(wù)使用不可靠的傳輸協(xié)議,所以編碼時(shí)要進(jìn)行差錯(cuò)控制并進(jìn)行信道糾錯(cuò)編碼。
本文主要討論對話應(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)、比特出錯(cuò)概率和TCP使用標(biāo)記。最大傳輸單元尺寸是網(wǎng)絡(luò)層最大的分組長度,H.264編碼時(shí)要使片的長度小于MTU尺寸,這樣可避免在網(wǎng)絡(luò)層再進(jìn)行一次數(shù)據(jù)的分割。兩個(gè)IP節(jié)點(diǎn)之間的MTU尺寸是動(dòng)態(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ò)中,分組丟失是由于鏈路層錯(cuò)誤引起的,TCP并非很好的解決辦法,要采用差錯(cuò)控制協(xié)議。
2. H.264使用的協(xié)議環(huán)境
對話應(yīng)用和流媒體應(yīng)用使用同一協(xié)議組,下面進(jìn)行討論。
網(wǎng)絡(luò)層協(xié)議:使用IP(網(wǎng)際協(xié)議)。每個(gè)IP分組單獨(dú)從發(fā)方出發(fā),經(jīng)過一系列的路由器到達(dá)收方。IP將大于MTU尺寸的分組進(jìn)行數(shù)據(jù)分割、重組。每個(gè)分組的傳輸時(shí)間都有所不同。IP頭20個(gè)字節(jié)由校驗(yàn)碼來保證,但數(shù)據(jù)沒有保護(hù)。IP分組最大值為64千字節(jié),但由于MTU尺寸的限制,一般沒有這么大。
傳輸層協(xié)議:主要有兩個(gè)協(xié)議,TCP和UDP。TCP提供面向字節(jié)的可靠傳輸服務(wù),以重傳和超時(shí)等機(jī)制作為差錯(cuò)控制的基礎(chǔ)。由于對時(shí)延的不可預(yù)測,并不適用于實(shí)時(shí)通信傳輸。UDP提供不可靠的數(shù)據(jù)報(bào)傳輸業(yè)務(wù)。UDP頭包含的校驗(yàn)數(shù)(8字節(jié))可以發(fā)現(xiàn)和去掉含有比特錯(cuò)誤的分組。UDP允許分組傳輸過程中出現(xiàn)丟失、復(fù)制、改序等。使用UDP協(xié)議時(shí),高層必須使用錯(cuò)誤恢復(fù)協(xié)議。
應(yīng)用層傳輸協(xié)議:使用RTP(實(shí)時(shí)傳輸協(xié)議)。該協(xié)議和IP/UDP結(jié)合使用,是面向會(huì)話的協(xié)議。每個(gè)RTP分組包含RTP頭標(biāo),載荷頭標(biāo)(可選)和載荷本身。RTP頭標(biāo)的內(nèi)容見圖1,基本選項(xiàng)占用12字節(jié),標(biāo)記位標(biāo)記有同一時(shí)間戳的一組分組的結(jié)束。RTP協(xié)議使發(fā)送方將數(shù)據(jù)分為大小合理的分組,并將解碼方觀察到的網(wǎng)絡(luò)特征反饋給發(fā)送方,使發(fā)送方可以動(dòng)態(tài)調(diào)整比特率和抗誤碼機(jī)制。RTP分組和RTP載荷規(guī)范在第四部分討論。
應(yīng)用層控制協(xié)議:有H.245協(xié)議、SIP和SDP,或RTSP。這些協(xié)議可以實(shí)現(xiàn)流媒體的控制,收發(fā)方的協(xié)商和控制動(dòng)態(tài)會(huì)話層。
三、H.264的錯(cuò)誤恢復(fù)工具
錯(cuò)誤恢復(fù)的工具隨著視頻壓縮編碼技術(shù)的提高在不斷改進(jìn)。舊的標(biāo)準(zhǔn)(H.261、H263、MPEG-2的第二部分)中,使用片和宏塊組的劃分、幀內(nèi)編碼宏塊、幀內(nèi)編碼片和幀內(nèi)編碼圖像來防止錯(cuò)誤的擴(kuò)散。之后改進(jìn)的標(biāo)準(zhǔn)(H.263+、MPEG-4)中,使用多幀參考和數(shù)據(jù)分割技術(shù)來恢復(fù)錯(cuò)誤。H.264標(biāo)準(zhǔn)在以前的基礎(chǔ)上提出了三種關(guān)鍵技術(shù):(1)參數(shù)集合,(2) 靈活的宏塊次序(FMO),(3)冗余片(RS)來進(jìn)行錯(cuò)誤的恢復(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ù)選擇,不論是基于宏塊、基于片,還是基于幀,都是錯(cuò)誤恢復(fù)的有效工具。對于有反饋的系統(tǒng),編碼器獲得傳輸中丟失圖像區(qū)域的信息后,參考圖像可以選擇解碼已經(jīng)正確接收的圖像對應(yīng)的原圖像區(qū)域作參考。在沒有反饋的系統(tǒng)中,將會(huì)使用冗余的編碼來增加錯(cuò)誤恢復(fù)性能。
4. 數(shù)據(jù)的劃分
通常情況下,一個(gè)宏塊的數(shù)據(jù)是存放在一起而組成片的,數(shù)據(jù)劃分使得一個(gè)片中的宏塊數(shù)據(jù)重新組合,把宏塊語義相關(guān)的數(shù)據(jù)組成一個(gè)劃分,由劃分來組裝片。在H.264中有三種不同的數(shù)據(jù)劃分。 (1)頭信息劃分:包含片中宏塊的類型,量化參數(shù)和運(yùn)動(dòng)矢量,是片中最重要的信息。 (2)幀內(nèi)信息劃分:包含幀內(nèi)CBPs和幀內(nèi)系數(shù),幀內(nèi)信息可以阻止錯(cuò)誤的蔓延。 (3)幀間信息劃分:包含幀間CBPs和幀間系數(shù),通常比前兩個(gè)劃分要大得多。
幀內(nèi)信息劃分結(jié)合頭信息解出幀內(nèi)宏塊,幀間信息劃分結(jié)合頭信息解出幀間宏塊。幀間信息劃分的重要性最低,對重同步?jīng)]有貢獻(xiàn)。當(dāng)使用數(shù)據(jù)劃分時(shí),片中的數(shù)據(jù)根據(jù)其類型被保存到不同的緩存,同時(shí)片的大小也要調(diào)整,使得片中最大的劃分小于MTU尺寸。
解碼端若獲得所有的劃分,就可以完整重構(gòu)片;解碼端若發(fā)現(xiàn)幀內(nèi)信息或幀間信息劃分丟失,可用的頭信息仍然有很好的錯(cuò)誤恢復(fù)性能。這是因?yàn)楹陦K類型和宏塊的運(yùn)動(dòng)矢量含有宏塊的基本特征。
5. 參數(shù)集的使用
序列的參數(shù)集(SPS)包括了一個(gè)圖像序列的所有信息,圖像的參數(shù)集(PPS)包括了一個(gè)圖像所有片的信息。多個(gè)不同的序列和圖像參數(shù)集經(jīng)排序存放在解碼器。編碼器參考序列參數(shù)集設(shè)置圖像參數(shù)集,依據(jù)每一個(gè)已編碼片的片頭的存儲(chǔ)地址選擇合適的圖像參數(shù)集來使用。對序列的參數(shù)和圖像的參數(shù)進(jìn)行重點(diǎn)保護(hù)才能很好地增強(qiáng)H.264錯(cuò)誤恢復(fù)性能。
在差錯(cuò)信道中使用參數(shù)集的關(guān)鍵是保證參數(shù)集及時(shí)、可靠地到達(dá)解碼端。例如,在實(shí)時(shí)信道中,編碼器用可靠控制協(xié)議及早將他們以帶外傳輸?shù)姆绞桨l(fā)送,使控制協(xié)議能夠在引用新參數(shù)的第一個(gè)片到達(dá)之前把它們發(fā)給解碼器;另外一個(gè)辦法就是使用應(yīng)用層保護(hù),重發(fā)多個(gè)備份文件,確保至少有一個(gè)備份數(shù)據(jù)到達(dá)解碼端;第三個(gè)辦法就是在編解碼器的硬件中固化參數(shù)集設(shè)置。
6. 靈活的宏塊次序(FMO)
靈活的宏塊次序是H.264的一大特色,通過設(shè)置宏塊次序映射表(MBAmap)來任意地指配宏塊到不同的片組,F(xiàn)MO模式打亂了原宏塊順序,降低了編碼效率,增加了時(shí)延,但增強(qiáng)了抗誤碼性能。FMO模式劃分圖像的模式各種各樣,重要的有棋盤模式、矩形模式等。當(dāng)然FMO模式也可以使一幀中的宏塊順序分割,使得分割后的片的大小小于無線網(wǎng)絡(luò)的MTU尺寸。經(jīng)過FMO模式分割后的圖像數(shù)據(jù)分開進(jìn)行傳輸,以棋盤模式為例,當(dāng)一個(gè)片組的數(shù)據(jù)丟失時(shí)可用另一個(gè)片組的數(shù)據(jù)(包含丟失宏塊的相鄰宏塊信息)進(jìn)行錯(cuò)誤掩蓋。實(shí)驗(yàn)數(shù)據(jù)顯示,當(dāng)丟失率為(視頻會(huì)議應(yīng)用時(shí))10%時(shí),經(jīng)錯(cuò)誤掩蓋后的圖像仍然有很高的質(zhì)量。
7. 冗余片方法
前邊提到了當(dāng)使用無反饋的系統(tǒng)時(shí),就不能使用參考幀選擇的方法來進(jìn)行錯(cuò)誤恢復(fù),應(yīng)該在編碼時(shí)增加冗余的片來增強(qiáng)抗誤碼性能。要注意的是這些冗余片的編碼參數(shù)與非冗余片的編碼參數(shù)不同,也就是用一個(gè)模糊的冗余片附加在一個(gè)清晰的片之后。在解碼時(shí)先解清晰的片,如果其可用就丟棄冗余片;否則使用冗余模糊片來重構(gòu)圖像。
四、H.264中實(shí)時(shí)傳輸協(xié)議(RTP)
1. RTP載荷規(guī)范
在第二部分已經(jīng)對H.264的網(wǎng)絡(luò)協(xié)議環(huán)境作了闡述,這里要詳細(xì)討論RTP的載荷規(guī)范和抗誤碼性能。RTP通過發(fā)送冗余信息來減少接收端的丟包率,會(huì)增加時(shí)延,與冗余片不同的是它增加的冗余信息是個(gè)別重點(diǎn)信息的備份,適合于應(yīng)用層的非等重保護(hù)。下邊闡述與多媒體傳輸有關(guān)的3個(gè)規(guī)范。
(1)分組復(fù)制多次重發(fā),發(fā)送端對最重要的比特信息分組進(jìn)行復(fù)制重發(fā),使得保證接收端能至少正確接收到一次,同時(shí)接收端要丟棄已經(jīng)正確接收的分組的多余備份。
(2)基于分組的前向糾錯(cuò),對被保護(hù)的分組進(jìn)行異或運(yùn)算,將運(yùn)算結(jié)果作為冗余信息發(fā)送到接收方。由于時(shí)延,不用于對話型應(yīng)用,可用于流媒體。
(3)音頻冗余編碼,可保護(hù)包括視頻在內(nèi)的任何數(shù)據(jù)流。每個(gè)分組由頭標(biāo)、載荷以及前一分組的載荷組成,H.264中可與數(shù)據(jù)分割一起使用。
2. H.264 NAL單元的概念
H.264 NAL單元對編碼數(shù)據(jù)進(jìn)行打包,NAL單元由1字節(jié)的頭,3個(gè)定長的字段和一個(gè)字節(jié)數(shù)不定的編碼段組成。
頭標(biāo)的語法:NALU類型(5bit)、重要性指示位(2bit)、禁止位(1bit)。
NALU類型:1~12由H.264使用,24~31由H.264以外的應(yīng)用使用。
重要性指示:標(biāo)志該NAL單元用于重建時(shí)的重要性,值越大,越重要。
禁止位:網(wǎng)絡(luò)發(fā)現(xiàn)NAL單元有比特錯(cuò)誤時(shí)可設(shè)置該比特為1,以便接收方丟掉該單元。
3. 分組打包的規(guī)則
(1)額外開銷要少,使MTU尺寸在100~64k字節(jié)范圍都可以;
(2)不用對分組內(nèi)的數(shù)據(jù)解碼就可以判別該分組的重要性;
(3)載荷規(guī)范應(yīng)當(dāng)保證不用解碼就可識別由于其他的比特丟失而造成的分組不可解碼;
(4)支持將NALU分割成多個(gè)RTP分組;
(5)支持將多個(gè)NALU匯集在一個(gè)RTP分組中。
RTP的頭標(biāo)可以是NALU的頭標(biāo),并可以實(shí)現(xiàn)以上的打包規(guī)則。
4. 簡單打包
一個(gè)RTP分組里放入一個(gè)NALU,將NALU(包括同時(shí)作為載荷頭標(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)用層實(shí)現(xiàn)保護(hù),從而降低了非等重保護(hù)方案的效果。由于UDP數(shù)據(jù)包小于64千字節(jié),而且一個(gè)片的長度對某些應(yīng)用場合來說太小,所以應(yīng)用層打包是RTP打包方案的一部分。
新的討論方案(IETF)應(yīng)當(dāng)符合以下特征:
(1)NALU的分塊以按RTP次序號升序傳輸;
(2)能夠標(biāo)記第一個(gè)和最后一個(gè)NALU分塊;
(3)可以檢測丟失的分塊。
6. NALU合并
一些NALU如SEI、參數(shù)集等非常小,將它們合并在一起有利于減少頭標(biāo)開銷。已有兩種集合分組:
(1)單一時(shí)間集合分組(STAP),按時(shí)間戳進(jìn)行組合;
(2)多時(shí)間集合分組(MTAP),不同時(shí)間戳也可以組合。
五、結(jié)束語
本文重點(diǎn)講述了在IP網(wǎng)絡(luò)的限制條件下H.264進(jìn)行錯(cuò)誤恢復(fù)的幾種有力工具,但在不同的IP網(wǎng)絡(luò)中要組合使用各種工具才能實(shí)現(xiàn)高效率編碼和傳輸。因?yàn)槟壳盁o線網(wǎng)絡(luò)對MTU尺寸和時(shí)延的限制,所以錯(cuò)誤恢復(fù)工具可以結(jié)合使用圖像的分割、數(shù)據(jù)的劃分和RTP分組技術(shù),避免使用冗余信息和反饋來提高錯(cuò)誤恢復(fù)性能;另外高效率的FMO編碼模式可以大大提高編碼的抗分組丟失性能。
ChinaByte(e.chinabyte.com)—中國多媒體視訊
相關(guān)鏈接: