h264壓縮的主要過程。
巨集塊劃分-》幀內/幀間運動檢測-》dct變換,量化-》環路濾波-》熵編碼-》封裝資料寫slice
h264資料幀
編碼器每次輸出乙個slice,一幀資料可能分為多個slice,也可能乙個。大多數情況是乙個slice。
slice型別即nalu型別的定義如下:
0:未規定
1:非idr影象中不採用資料劃分的片段
2:非idr影象中a類資料劃分片段
3:非idr影象中b類資料劃分片段
4:非idr影象中c類資料劃分片段
5:idr影象的片段
6:補充增強資訊 (sei)
7:序列引數集
8:影象引數集
9:分割符
10:序列結束符
11:流結束符
12:填充資料
13 – 23:保留
24 – 31:未規定
1 h264資料幀中,只有i幀是關鍵幀,是被參考的幀。其它如p幀和b幀都是參照其它幀。(參考關係主要體現在巨集塊運動向量和殘差資料計算)
p幀永遠參考前面的幀,可能會參考很多幀,這個由預設值lookahead決定,b幀可能會前後參考。i幀只會有幀内巨集塊間的參考。
3 編碼中又個關鍵指標步長是什麼?
這個取樣週期就是步長的幅度差值。
4 巨集塊運動估計演算法是怎樣的?
巨集塊初始化後悔被分為16x16 ,16x8,8x16 8x8 的巨集塊,並且是將亮度y和色差訊號uv分開的。幀內運動估計,主要是左,右,右上,左上四個方向**。
5 什麼是半畫素內插
巨集塊左運動估計的時候,會有只運動了半個畫素的情況,這種情況下,通過在畫素之間插入估計的畫素值來計算巨集塊運動向量更精確。
6 sad和satd
sad是把整個巨集塊畫素拿來計算殘差,satd是先把巨集塊分為4x4的小塊,進行哈德曼變幻,然後把變幻後的亞畫素湧來計算殘差和運動向量。
以上介紹了h264壓縮的基本流程和一些常見的疑問。
備註:h264壓縮的大部分耗時都是在巨集塊左運動估計的時候,模式選擇和運動向量計算上。
H264編碼原理
條件 1.yuv格式為yuv420 2.解析度為640 480 3.幀率為15 建議碼流500kbps,通過計算可以得到h264壓縮比約為1 100。gop中幀與幀之間的差別小 有失真壓縮包括幀內壓縮和幀間壓縮,幀內壓縮解決的是空域資料冗餘問題,幀間壓縮解決的是時域資料冗餘的問題。無失真壓縮包括dc...
H264編碼原理
前言 h264是新一代的編碼標準,以高壓縮高質量和支援多種網路的流 傳輸著稱,在編碼方面,我理解的他的理論依據是 參照一段時間內影象的統計結果表明,在相鄰幾幅影象畫面中,一般有差別的畫素只有10 以內的點,亮度差值變化不超過2 而色度差值的變化只有1 以內。所以對於一段變化不大影象畫面,我們可以先編...
h264編碼分析 哥倫布編碼
1 首先h264為什麼選用哥倫布編碼?因為h264協議為了節省bits,沒有規定字段表示資料字段長度 資料字段可以根據自身的實際值,可長可短,這樣可以大程度上的節省bit。2 無符號指數哥倫布編碼如何編碼的?在實際資料前面有幾個0就表示,有效資料位數是多少,理解為長度字段,然後資料數值 數值 1,因...