video codec 學習筆記

一. H.264 (http://www.baike.com/wiki/H264html

三大標準: 算法

AVC(Advanced Video Coding,AVC)網絡

H.264,同時也是MPEG-4第十部分,是由ITU-T視頻編碼專家組(VCEG)和ISO/IEC動態圖像專家組(MPEG)聯合組成的聯合視頻組(JVT,Joint Video Team)提出的高度壓縮數字視頻編解碼器標準。這個標準一般被稱之爲H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明確的說明它兩方面的開發者。 iview

H264標準各主要部分有Access Unit delimiter(訪問單元分割符),SEI(附加加強信息),primary coded picture(基本圖像編碼),Redundant Coded Picture(冗餘圖像編碼)。還有Instantaneous Decoding Refresh(IDR,即時解碼刷新)、Hypothetical Reference Decoder(HRD,假想參考解碼)、Hypothetical Stream Scheduler(HSS,假想碼流調度器)。ide

 

SVC(Scalable Video Coding – 可分級視頻編碼)  http://www.skyvio.com/htm/2007-05/33.htm工具

實際應用中,存在不一樣的網絡和不一樣的用戶終端,各類狀況下對視頻質量的需求不同。例如,在利用網絡傳輸視頻信息時,因爲網絡帶寬限制了數據傳輸,所以要求當網絡帶寬較小的時候,只傳輸基本的視頻信號,並根據實際網絡的情況決定是否傳輸加強的視頻信息,使視頻的質量獲得增強。編碼

在這樣的背景下,利用可分級視頻編碼技術實現一次性編碼產生具備不一樣幀率、分辨率的視頻壓縮碼流,而後根據不一樣網絡帶寬、不一樣的顯示屏幕和終端解碼能力選擇須要傳輸的視頻信息量,以此實現視頻質量的自適應調整。
爲了可以實現從單一碼流中解碼獲得不一樣幀率(時間可分級)、分辨率(空間可分級)和圖像質量(SNR可分級)的視頻數據的編碼技術。
H.264 SVC以H.264 AVC視頻編解碼器標準爲基礎,利用了AVC編解碼器的各類高效算法工具,在編碼產生的編碼視頻時間上(幀率)、空間上(分辨率)可擴展,而且是在視頻質量方面可擴展的,可產生不一樣幀速率、分辨率或質量等級的解碼視頻。

H264可分級視頻編碼採用分層編碼方式實現,由一個基本層(Base Layer)和多個加強層(Enhancement Layer)組成,加強層依賴基本層的數據來解碼。其中,基本層(base layer)編碼了基本的視頻信息,實現了最低圖像分辨率、幀率,而且基本層的編碼是兼容H264/AVC編碼標準的,可以採用H264/AVC解碼器進行解碼。 spa

 

MVC 多視角視頻編碼(Multiview video coding).net

是在H.264標準當中新增的內容,其歷史淵源和概況能夠參照《Overview of Multi-view Video Coding》這篇論文。code

在雙目3D視頻中,一般須要提供left/right view兩個視點的圖像,這兩個視點的圖像是有相關性的,一樣,對於多view視圖之間也是有必定相關性的,所以很天然的想法就是要利用view之間的相關性來提升壓縮效率,這就是MVC的目的。
 
MVC主要用在3D電影領域,同一個電影場景,左眼和右眼看到的是不一樣的View,咱們的產品暫時用不到。

 

二. AVC裏的 I B P 幀,openh264裏沒有B幀

I幀(I frame)又稱爲內部畫面 (intra picture),I 幀一般是每一個 GOP(MPEG 所使用的一種視頻壓縮技術)的第一個幀,通過適度地壓縮,作爲隨機訪問的參考點,能夠當成圖象。
在MPEG編碼的過程當中,部分視頻幀序列壓縮成爲I幀;部分壓縮成P幀;還有部分壓縮成B幀。
I幀法幀內壓縮法,也稱爲「關鍵幀」壓縮法。
I幀法是基於離散餘弦變換DCT(Discrete Cosine Transform)的壓縮技術,這種算法與JPEG壓縮算法相似。採用I幀壓縮可達到1/6的壓縮比而無明顯的壓縮痕跡。

I幀特色:
1.它是一個全幀壓縮編碼幀。它將全幀圖像信息進行JPEG壓縮編碼及傳輸; 2.解碼時僅用I幀的數據就可重構完整圖像;
3.I幀描述了圖像背景和運動主體的詳情; 4.I幀不須要參考其餘畫面而生成;
5.I幀是P幀和B幀的參考幀(其質量直接影響到同組中之後各幀的質量); 6.I幀是幀組GOP的基礎幀(第一幀),在一組中只有一個I幀;
7.I幀不須要考慮運動矢量; 8.I幀所佔數據的信息量比較大。

P幀:前向預測編碼幀。 P幀的預測與重構:P幀是以I幀爲參考幀,在I幀中找出P幀「某點」的預測值和運動矢量,取預測差值和運動矢量一塊兒傳送。
在接收端根據運動矢量從I幀中找出P幀「某點」的預測值並與差值相加以獲得P幀「某點」樣值,從而可獲得完整的P幀。

P幀特色:
1.P幀是I幀後面相隔1~2幀的編碼幀; 2.P幀採用運動補償的方法傳送它與前面的I或P幀的差值及運動矢量(預測偏差);
3.解碼時必須將I幀中的預測值與預測偏差求和後才能重構完整的P幀圖像; 4.P幀屬於前向預測的幀間編碼。它只參考前面最靠近它的I幀或P幀;
5.P幀能夠是其後面P幀的參考幀,也能夠是其先後的B幀的參考幀; 6.因爲P幀是參考幀,它可能形成解碼錯誤的擴散 (error propagation) ; 7.因爲是差值傳送,P幀的壓縮比較高。

B幀:雙向預測內插編碼幀。 B幀的預測與重構 B幀之前面的I或P幀和後面的P幀爲參考幀,「找出」B幀「某點」的預測值和兩個運動矢量,並取預測差值和運動矢量傳送。
接收端根據運動矢量在兩個參考幀中「找出(算出)」預測值並與差值求和,獲得B幀「某點」樣值,從而可獲得完整的B幀。

B幀特色:
1.B幀是由前面的I或P幀和後面的P幀來進行預測的; 2.B幀傳送的是它與前面的I或P幀和後面的P幀之間的預測偏差及運動矢量;
3.B幀是雙向預測編碼幀; 4.B幀壓縮比最高,由於它只反映丙參考幀間運動主體的變化狀況,預測比較準確; 5.B幀不是參考幀,不會形成解碼錯誤的擴散

 

三. SVC裏的 T0, T1,T2,T3幀

refto: http://wk.baidu.com.cn/view/d70494365727a5e9856a6157?pn=4&pu=#1

 

 

 

四. IDR (Instantaneous Decoding Refresh)

IDR會致使DPB(DecodedPictureBuffer 參考幀列表——這是關鍵所在)清空, 在IDR幀以後的全部幀都不能引用任何IDR幀以前的幀的內容 

refto: http://blog.csdn.net/heanyu/article/details/6255111

 

 

5、SDP

IDR & SPS PPS : OpenH264中SPS\PPS包不單獨發送,會和IDR包打在一塊兒,在IDR包的最後纔有RTP包結束的Mark標記。

 

 

h.264 RTP Payload:

http://www.cppblog.com/czanyou/archive/2009/12/25/67940.html 

packetization-mode = 0 一個NAL打成一個RTP包
packetization-mode = 1 多個NAL組合成一個RTP包 (SCR中,spark都是用這個的)
packetization-mode = 2 一個NAL包能夠分紅多個RTP包

 

6、Encode Control

Parameters:

maxFS = width/16(ceiling) * height/16(ceiling)
maxMBPS = maxFS * maxFPS/100

160*90 maxFS=60 maxMBPS=180320*180 maxFS=240 maxMBPS=7200640*360 maxFS=920 maxMBPS=276001280*720 maxFS=3600 maxMBPS=108000

相關文章
相關標籤/搜索