編解碼器簡介
經過編碼的音頻或者視頻原始碼流經常被叫做“Essence”(有譯作“本體”,“精”),以區別於之後加入碼流的元信息和其它用以幫助訪問碼流和增強碼流
魯棒性的數據。
大多數編解碼器是有損的,目的是為了得到更大的壓縮比和更小的檔案大小。當然也有無損的編解碼器,但是通常沒有必要為了一些幾乎注意不到的的質量損失而大大增加編碼後檔案的大小。除非該編碼的結果還將在以後進行下一步的處理,此時連續的有損編碼通常會帶來較大的質量損失。
很多多媒體
數據流需要同時包含音頻數據和視頻數據,這時通常會加入一些用於音頻和視頻數據同步的
元數據。這三種數據流可能會被不同的程式,進程或者硬體處理,但是當它們傳輸或者存儲的時候,這三種數據通常是被封裝在一起的。通常這種封裝是通過
視頻檔案格式來實現的,例如常見的*.
mpg, *.
avi, *.mov, *.mp4, *.rm, *.ogg or *.tta. 這些格式中有些只能使用某些編解碼器,而更多可以以容器的方式使用各種編解碼器。
編解碼器對應的英文“codec”(
coder和
decoder簡化而成的合成詞語)和
decode通常指軟體,當特指硬體的時候,通常使用“endec”這個單詞。
硬體編解碼器有
標清編解碼器和高清編解碼器。所謂標清,英文為“Standard Definition”,是
物理解析度在
720p以下的一種視頻格式。720p是指視頻的垂直解析度為720線
逐行掃描。具體的說,是指解析度在400線左右的VCD、DVD、電視節目等“標清”視頻格式,即標準清晰度。而物理解析度達到720p以上則稱作為高清,(英文表述High Definition)簡稱HD。關於高清的標準,國際上公認的有兩條:視頻垂直解析度超過720p或
1080i;視頻寬縱比為16:9。
組成
H.261定義的編解碼器由信源編碼器、視頻複合編碼器、傳輸緩衝器、傳輸編碼器以及
編碼控制部分組成。整個編碼過程的核心仍在信源編碼部分。編解碼器框圖如圖3—2所示。
視頻編解碼器原理
視頻處理
發端的圖像信號是由攝像機提供的複合電視信號(模擬信號),經過數字視頻轉換,分離出的亮度(灰度)信號和兩個色度信號,如圖3—3所示。這三路信號經A/D變換,將模擬信號轉換為數位訊號,每個像素點為8bit。數位化後信號經預處理,濾除信號中的噪聲,進入CIF格式變換電路,成為CIF標準格式,然後進入信源編碼器進行圖像壓縮編碼。預處理的目的是消除信號中的背景噪聲,從而利於提高圖像的清晰度。當然,預處理還可解決亮度與色度信號串擾,減小疊折干擾的作用。
信源編碼器
信源編碼器是編碼器的關鍵部分。ITU—T H.261建議規定了採用預測編碼和變換編碼的混合編碼方法。
(1)預測編碼
由於會議電視所攝取的人物的活動量很小,必然會使每幅圖像內容相差不大,或者說某幅圖像(幀)與它前面一幅圖像(幀)相關性很強。利用這個相關性,首先把一幅完整內容的圖像傳到對方,後面的每幅畫面,只需把不同的內容傳過去,相同的內容就不再傳到對方。例如,發言者的完整形象首幅畫面傳送到對方,以後的每幅畫面,只需傳遞他的嘴部的動作內容,從而可使傳輸的碼率大大下降。一幅圖像是由許多像素點組成的,這些像素點包含了亮度及色差信號。從易於編碼的角度考慮,把每幅畫面分成許多小方塊,每個塊由16像素×16像素點亮度塊和兩個8像素×8像素點的色差塊組成,我們將它稱為“宏塊”MB(Macroblock)。
若將畫面內變動部分的內容傳到對方,那么,在前一幀圖像中與當前幀的宏塊所對應的位置附近,找到一個與當前宏塊的亮度塊最近的宏塊,並作為當前宏塊(MB)的預測值,然後將當前的畫面內的宏塊與最佳預測塊相減,得到一個預測誤差,僅對誤差塊進行編碼即可。
(2)離散餘弦變換(DCT)編碼
所謂編碼,更確切地說是壓縮,即去掉一些多餘的信息,保留必要的信息。對於預測編碼的預測誤差塊,不直接進行編碼,而是採取一種稱為離散餘弦變換編碼方法,也稱DCT變換法。換句話說,就是把圖像數據(預測誤差塊)變換到頻率域中進行編碼,達到圖像數據壓縮的目的。這是因為,圖像數據經過變換處理後,相鄰像素之間的相關性下降,多餘的信息大部分去掉不傳送,將有用的且不相關的信息保留下來。採用DCT變換的另一因素是在頻率域在進行編碼時,受噪聲的影響較小。
(3)量化器
為了在一定的主觀保真度圖像的前提下,去掉那些對人的視覺效果影響不大的信息,以進一步地壓縮碼率,故需採用量化器。量化器除在A/D模擬/數字變換中套用外,通常也用於D/D數字/數字變換,目的是進行數據壓縮。以下僅對D/D變換作一簡介。
量化器採用分層量化,即選用不同的步長,針對DCT變換後的不同係數進行量化。對其直流(DC)係數採用一種固定的步長,對其交流係數(AC)採用2~62步長,其步長範圍受後面的緩衝存儲器反饋信號的控制。
視頻複合編碼器
數據視頻信號經信源編碼器進行壓縮後變換成視頻數據,然後送入視頻複合編碼器。
複合編碼器首先對視頻數據作進一步壓縮。即按哈夫曼(Huffman)編碼原理進行變字長編碼。其方法是對出現機率大的灰度(亮度)信號進行短的碼字編碼,對出現機率小的信號賦予長的碼字,平均的結果,使視頻數據流總的碼字最短,從而達到進一步壓縮的目的。
在複合編碼器中,還有一些輔助信號。例如指示信號“傳送/不傳送”標誌,其作用是告訴對方的解碼器,在一幅圖像中,哪些宏塊要傳送,哪些宏塊不傳送。需要傳送的宏塊,又分幀內和幀間兩種編碼方式。幀內預測編碼是利用一幀(一幅圖像)內已經傳送的相鄰像素來求當前像素的預測值;幀間預測編碼在前面已提到。
壓縮質量
有損編解碼
在軟體界有許多相對更加流行的編解碼器是有損的,意味著它們壓縮過程犧牲了一定的質量。通常這種壓縮實際上同未被壓縮的聲音或圖像沒區別。更小的數據集緩解了相對高昂的存儲器。較低的數據率也降低了花銷並在數據傳輸過程中提升了品質。
無損編解碼
也有許多的無損壓縮,特別套用於在需要原始流中所有信息時壓縮模式下獲取數據。如果保留數據流的原始品質比削減相應的更大數據更加重要,那么無損壓縮更佳。連續使用多種編解碼器或者編碼體系也會顯著的降低質量。不斷下降的存儲空間開銷和網路頻寬正使得有損壓縮的需求下降。