1. 程式人生 > >H264視訊編碼的基本瞭解

H264視訊編碼的基本瞭解

參考:https://www.axis.com/files/whitepaper/wp_h264_34203_cn_0901_lo.pdf

因為視訊是有圖片不斷切換產生的,現在一張圖片都有幾兆,這樣一次傳輸一張完整圖片的成本太大,會產生大量的流量。因此會出現壓縮編碼的需求。H264是其中的一種編碼方式,也被稱為MPEG-4 part10或者ACV(高階視訊編碼),是當今市場最高效的視訊壓縮技術。

在視訊監控行業,使用30/25fps的幀速已經成為一種通行的標準。H264能夠減少頻寬和儲存需求,有顯著的經濟性,可以最大限度的節省成本。然而對網路攝像機和顯示終端提出了更高的效能要求。

1.視訊壓縮的工作原理

視訊壓縮通過減少和除去冗餘視訊資料的方式,達到有效傳送和儲存數字視訊檔案的目的。在壓縮的過程中,需要應用壓縮演算法對源視訊進行壓縮產生壓縮檔案,以便傳輸和儲存。播放前需要應用相反的解壓縮演算法對資料進行還原。壓縮、傳送、解壓縮和顯示檔案所需要的時間成為延時。相同處理能力下,壓縮演算法越高階,延時越長。

視訊編解碼是指兩個協調執行的壓縮和解壓演算法。不同標準的編解碼器通常彼此不相容。可以在同一軟體或者硬體中使用多種不同的演算法。使用相同壓縮標準的編碼器之間壓縮結果也可能存在差異。只要編碼器的輸出訊號符合標準的格式及解碼器的要求,就可以採用不同的實施方式。解碼器必須實施某個標準的所有必需部分,才能對符合標準的位元流進行解碼。

2.H264類別和級別

和其他標準一樣,通過演算法特性集合效能級別提供的功能以最佳方式支援常見應用和通用格式。有7個類別分別針對某一類特定應用。分為11個功能級別,對效能、頻寬和記憶體需求進行限制。

3.幀

H264的不同類別,編碼器會使用不同型別的幀,I\P\S幀。I幀(幀內編碼幀)自帶全部資訊的獨立幀,可獨立解碼。視訊序列的第一幀始終是I幀。位元流遭到破壞需要將I幀用作新檢視器的起始點或者重新同布點。I幀不會產生模糊現象,缺點是會佔用更多資料位。P幀(幀間預測編碼幀)需要參考前面的I幀或者P幀的不同部分才能編碼。佔資料位少,對前面的P幀和I幀有依賴性,對傳輸錯誤敏感。B幀(雙向預測編碼幀)需要前面和後面I或者P幀作為參考。在H264基準類中僅使用I和P幀,可以實現低延時,是網路攝像機和視訊編碼器的理想選擇。

4.減少資料量

一個影象幀內,可以刪除不必要資訊,但會導致影象解析度下降。一系列幀間可通過差分編碼減少視訊資料量。視訊中存在大量運動物體的話,差分編碼將無法顯著減少資料量,可採用基於塊的運動補償技術。

http://read.pudn.com/downloads147/ebook/635957/%E6%96%B0%E4%B8%80%E4%BB%A3%E8%A7%86%E9%A2%91%E5%8E%8B%E7%BC%A9%E7%BC%96%E7%A0%81%E6%A0%87%E5%87%86H.264.pdf

1.畫素間的相關性

同一幅影象中有許多畫素點組成,兩個畫素之間的距離越短,相關性越強,畫素值越接近的概率越大。利用畫素間的空間相關性和幀間的時間相關性和預測技術,可降低視訊序列的位元速率。基於波形的編碼採用預測編碼和變化編碼組合起來的基於塊的混合編碼方式。把影象分成固定大小的塊,然後對塊進行壓縮編碼處理。當包含邊界的塊屬於不同物體時,他們具有不同的運動,不能用同一個運動矢量表示該邊界塊的運動狀態。基於內容的編碼:先把視訊幀分為對應不同物體的區域,最簡單情況下,而為輪廓描述物體的形狀,運動向量描述運動的狀態,紋理用顏色波形來描述,然後編碼。

MPEG-4採用的編碼方式是基於塊和基於內容的編碼方式。

2.預測編碼

壓縮編碼後傳輸的並不是畫素本身的取樣幅值,而是該取樣的預測值和實際值之差。

3.變換編碼

平坦區域和內容緩慢變化區域佔影象的大部分,細節和內容突變的區域佔小部分。空間域的影象變換到頻域會產生很小的一些變化係數,對其進行壓縮編碼就是變換編碼。