百科解釋
隨著HDTV的興起,H.264這個(gè)規(guī)范頻頻出現(xiàn)在我們眼前,HD-DVD和藍(lán)光DVD均計(jì)劃采用這一標(biāo)準(zhǔn)進(jìn)行節(jié)目制作。而且自2005年下半年以來(lái),無(wú)論是NVIDIA還是ATI都把支持H.264硬件解碼加速作為自己最值得夸耀的視頻技術(shù)。H.264到底是何方“神圣”呢?
什么是H.264?H.264是一種高性能的視頻編解碼技術(shù)。目前國(guó)際上制定視頻編解碼技術(shù)的組織有兩個(gè),一個(gè)是“國(guó)際電聯(lián)(ITU-T)”,它制定的標(biāo)準(zhǔn)有H.261、H.263、H.263+等,另一個(gè)是“國(guó)際標(biāo)準(zhǔn)化組織(ISO)”它制定的標(biāo)準(zhǔn)有MPEG-1、MPEG-2、MPEG-4等。而H.264則是由兩個(gè)組織聯(lián)合組建的聯(lián)合視頻組(JVT)共同制定的新數(shù)字視頻編碼標(biāo)準(zhǔn),所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高級(jí)視頻編碼(Advanced Video Coding,AVC),而且它將成為MPEG-4標(biāo)準(zhǔn)的第10部分。因此,不論是MPEG-4 AVC、MPEG-4 Part 10,還是ISO/IEC 14496-10,都是指H.264。
H.264最大的優(yōu)勢(shì)是具有很高的數(shù)據(jù)壓縮比率,在同等圖像質(zhì)量的條件下,H.264的壓縮比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。舉個(gè)例子,原始文件的大小如果為88GB,采用MPEG-2壓縮標(biāo)準(zhǔn)壓縮后變成3.5GB,壓縮比為25∶1,而采用H.264壓縮標(biāo)準(zhǔn)壓縮后變?yōu)?79MB,從88GB到879MB,H.264的壓縮比達(dá)到驚人的102∶1!H.264為什么有那么高的壓縮比?低碼率(Low Bit Rate)起了重要的作用,和MPEG-2和MPEG-4 ASP等壓縮技術(shù)相比,H.264壓縮技術(shù)將大大節(jié)省用戶的下載時(shí)間和數(shù)據(jù)流量收費(fèi)。尤其值得一提的是,H.264在具有高壓縮比的同時(shí)還擁有高質(zhì)量流暢的圖像。
H.264算法的優(yōu)勢(shì)
H.264是在MPEG-4技術(shù)的基礎(chǔ)之上建立起來(lái)的,其編解碼流程主要包括5個(gè)部分:幀間和幀內(nèi)預(yù)測(cè)(Estimation)、變換(Transform)和反變換、量化(Quantization)和反量化、環(huán)路濾波(Loop Filter)、熵編碼(Entropy Coding)。
H.264/MPEG-4 AVC(H.264)是1995年自MPEG-2視頻壓縮標(biāo)準(zhǔn)發(fā)布以后的最新、最有前途的視頻壓縮標(biāo)準(zhǔn)。H.264是由ITU-T和ISO/IEC的聯(lián)合開(kāi)發(fā)組共同開(kāi)發(fā)的最新國(guó)際視頻編碼標(biāo)準(zhǔn)。通過(guò)該標(biāo)準(zhǔn),在同等圖象質(zhì)量下的壓縮效率比以前的標(biāo)準(zhǔn)提高了2倍以上,因此,H.264被普遍認(rèn)為是最有影響力的行業(yè)標(biāo)準(zhǔn)。
一、H.264的發(fā)展歷史
H.264在1997年ITU的視頻編碼專家組(Video Coding Experts Group)提出時(shí)被稱為H.26L,在ITU與ISO合作研究后被稱為MPEG4 Part10(MPEG4 AVC)或H.264(JVT)。
H.264的高級(jí)技術(shù)背景
H.264標(biāo)準(zhǔn)的主要目標(biāo)是:與其它現(xiàn)有的視頻編碼標(biāo)準(zhǔn)相比,在相同的帶寬下提供更加優(yōu)秀的圖象質(zhì)量。
而,H.264與以前的國(guó)際標(biāo)準(zhǔn)如H.263和MPEG-4相比,最大的優(yōu)勢(shì)體現(xiàn)在以下四個(gè)方面:
1. 將每個(gè)視頻幀分離成由像素組成的塊,因此視頻幀的編碼處理的過(guò)程可以達(dá)到塊的級(jí)別。
2. 采用空間冗余的方法,對(duì)視頻幀的一些原始?jí)K進(jìn)行空間預(yù)測(cè)、轉(zhuǎn)換、優(yōu)化和熵編碼(可變長(zhǎng)編碼)。
3. 對(duì)連續(xù)幀的不同塊采用臨時(shí)存放的方法,這樣,只需對(duì)連續(xù)幀中有改變的部分進(jìn)行編碼。該算法采用運(yùn)動(dòng)預(yù)測(cè)和運(yùn)動(dòng)補(bǔ)償來(lái)完成。對(duì)某些特定的塊,在一個(gè)或多個(gè)已經(jīng)進(jìn)行了編碼的幀執(zhí)行搜索來(lái)決定塊的運(yùn)動(dòng)向量,并由此在后面的編碼和解碼中預(yù)測(cè)主塊。
4. 采用剩余空間冗余技術(shù),對(duì)視頻幀里的殘留塊進(jìn)行編碼。例如:對(duì)于源塊和相應(yīng)預(yù)測(cè)塊的不同,再次采用轉(zhuǎn)換、優(yōu)化和熵編碼。
H.264的特征和高級(jí)優(yōu)勢(shì)
H.264是國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電信聯(lián)盟(ITU)共同提出的繼MPEG4之后的新一代數(shù)字視頻壓縮格式,它即保留了以往壓縮技術(shù)的優(yōu)點(diǎn)和精華又具有其他壓縮技術(shù)無(wú)法比擬的許多優(yōu)點(diǎn)。
1.低碼流(Low Bit Rate):和MPEG2和MPEG4 ASP等壓縮技術(shù)相比,在同等圖像質(zhì)量下,采用H.264技術(shù)壓縮后的數(shù)據(jù)量只有MPEG2的1/8,MPEG4的1/3。
顯然,H.264壓縮技術(shù)的采用將大大節(jié)省用戶的下載時(shí)間和數(shù)據(jù)流量收費(fèi)。
2.高質(zhì)量的圖象:H.264能提供連續(xù)、流暢的高質(zhì)量圖象(DVD質(zhì)量)。
3.容錯(cuò)能力強(qiáng):H.264提供了解決在不穩(wěn)定網(wǎng)絡(luò)環(huán)境下容易發(fā)生的丟包等錯(cuò)誤的必要工具。
4.網(wǎng)絡(luò)適應(yīng)性強(qiáng):H.264提供了網(wǎng)絡(luò)適應(yīng)層(Network Adaptation Layer), 使得H.264的文件能容易地在不同網(wǎng)絡(luò)上傳輸(例如互聯(lián)網(wǎng),CDMA,GPRS,WCDMA,CDMA2000等)。
二、H.264標(biāo)準(zhǔn)概述
H.264和以前的標(biāo)準(zhǔn)一樣,也是DPCM加變換編碼的混合編碼模式。但它采用“回歸基本”的簡(jiǎn)潔設(shè)計(jì),不用眾多的選項(xiàng),獲得比H.263++好得多的壓縮性能;加強(qiáng)了對(duì)各種信道的適應(yīng)能力,采用“網(wǎng)絡(luò)友好”的結(jié)構(gòu)和語(yǔ)法,有利于對(duì)誤碼和丟包的處理;應(yīng)用目標(biāo)范圍較寬,以滿足不同速率、不同解析度以及不同傳輸(存儲(chǔ))場(chǎng)合的需求。
技術(shù)上,它集中了以往標(biāo)準(zhǔn)的優(yōu)點(diǎn),并吸收了標(biāo)準(zhǔn)制定中積累的經(jīng)驗(yàn)。與H.263 v2(H.263+)或MPEG-4簡(jiǎn)單類(Simple Profile)相比,H.264在使用與上述編碼方法類似的最佳編碼器時(shí),在大多數(shù)碼率下最多可節(jié)省50%的碼率。H.264在所有碼率下都能持續(xù)提供較高的視頻質(zhì)量。H.264能工作在低延時(shí)模式以適應(yīng)實(shí)時(shí)通信的應(yīng)用(如視頻會(huì)議),同時(shí)又能很好地工作在沒(méi)有延時(shí)限制的應(yīng)用,如視頻存儲(chǔ)和以服務(wù)器為基礎(chǔ)的視頻流式應(yīng)用。H.264提供包傳輸網(wǎng)中處理包丟失所需的工具,以及在易誤碼的無(wú)線網(wǎng)中處理比特誤碼的工具。
在系統(tǒng)層面上,H.264提出了一個(gè)新的概念,在視頻編碼層(Video Coding Layer, VCL)和網(wǎng)絡(luò)提取層(Network Abstraction Layer, NAL)之間進(jìn)行概念性分割,前者是視頻內(nèi)容的核心壓縮內(nèi)容之表述,后者是通過(guò)特定類型網(wǎng)絡(luò)進(jìn)行遞送的表述,這樣的結(jié)構(gòu)便于信息的封裝和對(duì)信息進(jìn)行更好的優(yōu)先級(jí)控制。H.264的系統(tǒng)編碼框圖如圖1所示。 圖1 H.264系統(tǒng)框圖
三、H.264標(biāo)準(zhǔn)的關(guān)鍵技術(shù)
1.幀內(nèi)預(yù)測(cè)編碼
幀內(nèi)編碼用來(lái)縮減圖像的空間冗余。為了提高H.264幀內(nèi)編碼的效率,在給定幀中充分利用相鄰宏塊的空間相關(guān)性,相鄰的宏塊通常含有相似的屬性。因此,在對(duì)一給定宏塊編碼時(shí),首先可以根據(jù)周圍的宏塊預(yù)測(cè)(典型的是根據(jù)左上角的宏塊,因?yàn)榇撕陦K已經(jīng)被編碼處理),然后對(duì)預(yù)測(cè)值與實(shí)際值的差值進(jìn)行編碼,這樣,相對(duì)于直接對(duì)該幀編碼而言,可以大大減小碼率。
H.264提供6種模式進(jìn)行4×4像素宏塊預(yù)測(cè),包括1種直流預(yù)測(cè)和5種方向預(yù)測(cè),如圖2所示。在圖中,相鄰塊的A到I共9個(gè)像素均已經(jīng)被編碼,可以被用以預(yù)測(cè),如果我們選擇模式4,那么,a、b、c、d4個(gè)像素被預(yù)測(cè)為與E相等的值,e、f、g、h4個(gè)像素被預(yù)測(cè)為與F相等的值,對(duì)于圖像中含有很少空間信息的平坦區(qū),H.264也支持16×16的幀內(nèi)編碼。 圖2 幀內(nèi)編碼模式
2.幀間預(yù)測(cè)編碼
幀間預(yù)測(cè)編碼利用連續(xù)幀中的時(shí)間冗余來(lái)進(jìn)行運(yùn)動(dòng)估計(jì)和補(bǔ)償。H.264的運(yùn)動(dòng)補(bǔ)償支持以往的視頻編碼標(biāo)準(zhǔn)中的大部分關(guān)鍵特性,而且靈活地添加了更多的功能,除了支持P幀、B幀外,H.264還支持一種新的流間傳送幀——SP幀,如圖3所示。碼流中包含SP幀后,能在有類似內(nèi)容但有不同碼率的碼流之間快速切換,同時(shí)支持隨機(jī)接入和快速回放模式。圖3 SP-幀示意圖H.264的運(yùn)動(dòng)估計(jì)有以下4個(gè)特性。
(1)不同大小和形狀的宏塊分割
對(duì)每一個(gè)16×16像素宏塊的運(yùn)動(dòng)補(bǔ)償可以采用不同的大小和形狀,H.264支持7種模式,如圖4所示。小塊模式的運(yùn)動(dòng)補(bǔ)償為運(yùn)動(dòng)詳細(xì)信息的處理提高了性能,減少了方塊效應(yīng),提高了圖像的質(zhì)量。圖4 宏塊分割方法
(2)高精度的亞像素運(yùn)動(dòng)補(bǔ)償
在H.263中采用的是半像素精度的運(yùn)動(dòng)估計(jì),而在H.264中可以采用1/4或者1/8像素精度的運(yùn)動(dòng)估值。在要求相同精度的情況下,H.264使用1/4或者1/8像素精度的運(yùn)動(dòng)估計(jì)后的殘差要比H.263采用半像素精度運(yùn)動(dòng)估計(jì)后的殘差來(lái)得小。這樣在相同精度下,H.264在幀間編碼中所需的碼率更小。
(3)多幀預(yù)測(cè)
H.264提供可選的多幀預(yù)測(cè)功能,在幀間編碼時(shí),可選5個(gè)不同的參考幀,提供了更好的糾錯(cuò)性能,這樣更可以改善視頻圖像質(zhì)量。這一特性主要應(yīng)用于以下場(chǎng)合:周期性的運(yùn)動(dòng)、平移運(yùn)動(dòng)、在兩個(gè)不同的場(chǎng)景之間來(lái)回變換攝像機(jī)的鏡頭。
(4)去塊濾波器
H.264定義了自適應(yīng)去除塊效應(yīng)的濾波器,這可以處理預(yù)測(cè)環(huán)路中的水平和垂直塊邊緣,大大減少了方塊效應(yīng)。
3.整數(shù)變換
在變換方面,H.264使用了基于4×4像素塊的類似于DCT的變換,但使用的是以整數(shù)為基礎(chǔ)的空間變換,不存在反變換,因?yàn)槿∩岫嬖谡`差的問(wèn)題,變換矩陣如圖5所示。與浮點(diǎn)運(yùn)算相比,整數(shù)DCT變換會(huì)引起一些額外的誤差,但因?yàn)镈CT變換后的量化也存在量化誤差,與之相比,整數(shù)DCT變換引起的量化誤差影響并不大。此外,整數(shù)DCT變換還具有減少運(yùn)算量和復(fù)雜度,有利于向定點(diǎn)DSP移植的優(yōu)點(diǎn)。
4.量化
H.264中可選32種不同的量化步長(zhǎng),這與H.263中有31個(gè)量化步長(zhǎng)很相似,但是在H.264中,步長(zhǎng)是以12.5%的復(fù)合率遞進(jìn)的,而不是一個(gè)固定常數(shù)。
在H.264中,變換系數(shù)的讀出方式也有兩種:之字形(Zigzag)掃描和雙掃描,如圖6所示。大多數(shù)情況下使用簡(jiǎn)單的之字形掃描;雙掃描僅用于使用較小量化級(jí)的塊內(nèi),有助于提高編碼效率。圖6 變換系數(shù)的讀出方式
5.熵編碼
視頻編碼處理的最后一步就是熵編碼,在H.264中采用了兩種不同的熵編碼方法:通用可變長(zhǎng)編碼(UVLC)和基于文本的自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)。
在H.263等標(biāo)準(zhǔn)中,根據(jù)要編碼的數(shù)據(jù)類型如變換系數(shù)、運(yùn)動(dòng)矢量等,采用不同的VLC碼表。H.264中的UVLC碼表提供了一個(gè)簡(jiǎn)單的方法,不管符號(hào)表述什么類型的數(shù)據(jù),都使用統(tǒng)一變字長(zhǎng)編碼表。其優(yōu)點(diǎn)是簡(jiǎn)單;缺點(diǎn)是單一的碼表是從概率統(tǒng)計(jì)分布模型得出的,沒(méi)有考慮編碼符號(hào)間的相關(guān)性,在中高碼率時(shí)效果不是很好。
因此,H.264中還提供了可選的CABAC方法。算術(shù)編碼使編碼和解碼兩邊都能使用所有句法元素(變換系數(shù)、運(yùn)動(dòng)矢量)的概率模型。為了提高算術(shù)編碼的效率,通過(guò)內(nèi)容建模的過(guò)程,使基本概率模型能適應(yīng)隨視頻幀而改變的統(tǒng)計(jì)特性。內(nèi)容建模提供了編碼符號(hào)的條件概率估計(jì),利用合適的內(nèi)容模型,存在于符號(hào)間的相關(guān)性可以通過(guò)選擇目前要編碼符號(hào)鄰近的已編碼符號(hào)的相應(yīng)概率模型來(lái)去除,不同的句法元素通常保持不同的模型。
四、H.264在視頻會(huì)議中的應(yīng)用
目前,大多數(shù)的視頻會(huì)議系統(tǒng)均采用H.261或H.263視頻編碼標(biāo)準(zhǔn),而H.264的出現(xiàn),使得在同等速率下,H.264能夠比H.263減小50%的碼率。也就是說(shuō),用戶即使是只利用 384kbit/s的帶寬,就可以享受H.263下高達(dá) 768kbit/s的高質(zhì)量視頻服務(wù)。H.264 不但有助于節(jié)省龐大開(kāi)支,還可以提高資源的使用效率,同時(shí)令達(dá)到商業(yè)質(zhì)量的視頻會(huì)議服務(wù)擁有更多的潛在客戶。
目前,已經(jīng)有少數(shù)幾家廠商的視頻會(huì)議產(chǎn)品支持H.264協(xié)議,廠商們致力于普及H.264這個(gè)全新的業(yè)界標(biāo)準(zhǔn)。隨著其它視頻會(huì)議方案廠商陸續(xù)效仿他們的做法,我們必將能全面體驗(yàn)H.264視頻服務(wù)的優(yōu)勢(shì)。