直播一 H 264編碼基礎知識詳解

2021-09-08 04:54:45 字數 2495 閱讀 7011

h.26x系列(由itu[國際電傳視訊聯盟]主導)

mpeg系列(由iso[國際標準組織機構]下屬的mpeg[運**象專家組]開發)

mpeg-4第二部分(mpeg-4第二部分標準可以使用在網路傳輸、廣播和**儲存上

3、編碼流程

在進行當前訊號編碼時,編碼器首先會產生對當前訊號做**的訊號,稱作**訊號(predicted signal)

**的方式:

時間上的**(interprediction),亦即使用先前幀的訊號做**

空間上的** (intra prediction),亦即使用同一張幀之中相鄰畫素的訊號做**

得到**訊號後,編碼器會將當前訊號與**訊號相減得到殘餘訊號(residual signal),並只對殘餘訊號進行編碼,如此一來,可以去除一部份時間上或是空間上的冗餘資訊。

編碼器並不會直接對殘餘訊號進行編碼,而是先將殘餘訊號經過變換(通常為離散余弦變換)然後量化以進一步去除空間上和感知上的冗餘資訊。量化後得到的量化係數會再透過熵編碼,去除統計上的冗餘資訊。

1、h.264是新一代的編碼標準,以高壓縮高質量和支援多種網路的流**傳輸著稱

在相鄰幾幅影象畫面中,一般有差別的畫素只有10%以內的點,亮度差值變化不超過2%,而色度差值的變化只有1%以內

所以對於一段變化不大影象畫面,我們可以先編碼出乙個完整的影象幀a,隨後的b幀就不編碼全部影象,只寫入與a幀的差別,這樣b幀的大小就只有完整幀的1/10或更小!

b幀之後的c幀如果變化不大,我們可以繼續以參考b的方式編碼c幀,這樣迴圈下去。

這段影象我們稱為乙個序列:序列就是有相同特點的一段資料

也就是對這個影象生成乙個完整幀a1,隨後的影象就參考a1生成,只寫入與a1的差別內容

2、h.264三種幀

在h.264中定義了三種幀:

i幀:完整編碼的幀叫i幀

p幀:參考之前的i幀生成的只包含差異部分編碼的幀叫p幀

b幀:參考前後的幀編碼的幀叫b幀

h264採用的核心演算法是幀內壓縮和幀間壓縮:

幀內壓縮是生成i幀的演算法

幀間壓縮是生成b幀和p幀的演算法

壓縮方法:

分組:把幾幀影象分為一組(gop,也就是乙個序列),為防止運動變化,幀數不宜取多

定義幀:將每組內各幀影象定義為三種型別,即i幀、b幀和p幀;

**幀:以i幀做為基礎幀,以i幀**p幀,再由i幀和p幀**b幀;

資料傳輸:最後將i幀資料與**的差值資訊進行儲存和傳輸。

gop序列:

在h264中影象以序列為單位進行組織,乙個序列是一段影象編碼後的資料流。

乙個序列的第乙個影象叫做 idr 影象(立即重新整理影象),idr 影象都是 i 幀影象:

a、h.264 引入 idr 影象是為了解碼的重同步,當解碼器解碼到 idr 影象時,立即將參考幀佇列清空,將已解碼的資料全部輸出或拋棄,重新查詢引數集,開始乙個新的序列。

b、這樣,如果前乙個序列出現重大錯誤,在這裡可以獲得重新同步的機會。

c、idr影象之後的影象永遠不會使用idr之前的影象的資料來解碼。

乙個序列就是一段內容差異不太大的影象編碼後生成的一串資料流:

a、當運動變化比較少時,乙個序列可以很長,因為運動變化少就代表影象畫面的內容變動很小,所以就可以編乙個i幀,然後一直p幀、b幀了。

b、當運動變化多時,可能乙個序列就比較短了,比如就包含乙個i幀和3、4個p幀。

i幀、p幀、b幀實際順序&&編碼順序:

nal設計的目的,是根據不同的網路把資料打包成相應的格式,將vcl產生的位元字串適配到各種各樣的網路和多元環境中。

nal的封裝方式:

nal是將每一幀資料寫入到乙個nal單元中,進行傳輸或儲存的

nalu分為nal頭和nal體

nalu頭通常為00 00 00 01,作為乙個新的nalu的起始標識

nalu體封裝著vcl編碼後的資訊或者其他資訊

nal的封裝過程:

i幀、p幀、b幀都是被封裝成乙個或者多個nalu進行傳輸或者儲存的

每乙個i幀開始之前也有非vcl的nal單元,用於儲存其他資訊,它們是pps、sps

pps(picture parameter sets):影象引數集

sps(sequence parameter set):序列引數集

在實際的h264資料幀中,往往幀前面帶有00 00 00 01 或 00 00 01分隔符,一般來說編碼器編出的首幀資料為pps與sps,接著為i幀,後續是b幀、p幀等資料

H264編碼基礎知識簡單梳理

編碼基礎知識 術語解釋 位元速率 bps 單位時間 秒 內傳輸的資料編碼的大小 幀率 fps 單位時間 秒 內幀數的大小 乙個幀是乙個畫面,其中包括,採集源資料的幀率,編碼幀率,解碼幀率 編碼格式 頭部,每個幀都需要載入最前面 0x00 0x00 0x00 0x01 或者 0x00 0x00 0x0...

H264基礎知識簡介

簡介 h264有嚴格的規範,以00 00 00 01分割之後的下乙個位元組就是nalu型別,用來描述此幀的意義。nalu型別 1 第1位禁止位,值為1表示語法出錯 2 第2 3位為參考級別 3 第4 8為是nal單元型別 以通常的首幀來看 列印出來為103 用十六進製制軟體分析的話值為67 轉為二進...

H 264基礎知識總結

p幀 幀間 編碼幀 需要參考前面的i幀和 或p幀的不同部分才能進行編碼。與i幀相比,p幀通常占用更少的資料位,但其缺點是,由於p幀對前面的p和i參考幀有著複雜的依賴性,因此對傳輸錯誤非常敏感。p幀屬於前向 的幀間編碼,它只參考前面最靠近它 的i幀或者p幀。nal中type部分值為6是sei,7是sp...