H.264簡單總結

(quan整理)
一、視頻信息和信號的特點 < type="text/javascript">< type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">?
1.1直觀性
?????? 利用人的視覺系統,直接獲取視頻信息
1.2確定性
?????? 視頻信息只管具體,不易與其他內容混淆
1.3高效性
?????? 利用視覺系統,人們可以并行的觀察圖像的各個象素,因此具有高效性。
1.4廣泛性
?????? 視覺系統占外界信息總量的70%
1.5視頻信號的高帶款性
?????? 視頻信息包含大量的變化的信息,信息量極大,傳輸網絡所需要的帶寬相對較大。
?
二、視頻壓縮的要求和可能性
2.1視頻壓縮編碼的目標
???????????????? 由于視頻信息量大,傳輸帶寬高,就要求先對視頻源壓縮,然后傳輸,以便節約帶寬和存儲空間。
??????????????? (1)?????? 視頻必須壓縮在一定的帶寬內,要保證足夠的壓縮比。
??????????????? (2)?????? 視頻壓縮后,經恢復要保證一定的視頻質量
??????????????? (3)?????? 視頻編碼器的實現方式應力求簡單、易實現、低成本、可靠性高。
2.2視頻壓縮的可能行
??????????????? (1)時間相關行
???????????????????? 在一組視頻序列中,相鄰相鄰兩幀只有極少的不同之處,這便是時間相關性。
??????????????? (2)空間相關性
???????????????????? 在同一幀中,相鄰象素之間有很大的相關性,兩象素越近,側相關性越強。
?
三、視頻編碼技術
3.1基本結構
?????? 視頻編碼方式與采用的信源有關。根據采用的信源的模型,視頻編碼可以分為兩大類:基于波形的編碼和基于內容的編碼。
3.2 基于波形的編碼
?????? 如果采用“一幅圖像由許多象素構成”的信源模型,這種信源模型的參數就是象素的亮度和色度的幅度值,對這些參數進行編碼的技術即為基于波形編碼。
?????? 利用象素空間的相關性和幀間的時間相關性,采用預測編碼和變化編碼技術,減少視頻信號的相關性,從而顯著降低視頻序列的碼率,實現壓縮編碼的目標。
3.3基于內容的編碼
??????? 如果采用一個分量有幾個物體構成的信源模型,這種信源模型的參數事各個物體的形狀,紋理,運動,對這些參數進行編碼的技術就是基于內容的編碼。
?
四、h264的應用
4.1 H. 264的技術特點可以歸納為三個方面
??????? (1)注重實用;
??????? (2)注重對移動和IP網絡的適應;
??????? (3)在混合編碼器的基本框架下,對其主要關鍵部件都做了重大改進,如多模式運動估計、幀內預測、多幀預測、基于內容的變長編碼、4X4二維整數變換等。
??????? (4)在關注H. 264的優越性能的同時必然需要衡量其實現難度。從總體上說,H. 264性能的改進是以增加復雜性為代價而獲得的。據估計,H. 264 編碼的計算復雜度大約相當于H. 263的3倍,解碼復雜度大約相當于H. 263的2倍.
4.2? h264應用可分為3個級別:
??????? (1) 基本檔次:? (簡單版本, 應用面廣 , 支持幀內和幀間編碼,基于可變程度的熵編碼.)
????????????????????????????????? 應用領域:? 視頻會話,會議電視, 無線通信等實時通信.
??????? (2) 主要檔次:? ( 采用了多項提高圖像質量和增加壓縮比的技術措施, 支持隔行視頻, 支持基于上下文的自適應的算術編碼.)
????????????????????????????????? 應用領域:? 數字廣播與數字視頻存儲.
?????? (4)擴展檔次: 應用領域: 可用于各種網絡的視頻流傳輸,視頻點播
?
五、視頻編碼原理
5.1基本概念
????????????? (1)視頻編碼器 能夠對一個圖像或者一個視頻序列進行壓縮,產生碼流。
?
????????????? 在上圖中,編碼器輸入的幀或場Fn,以宏塊為單位被編碼器處理。
????????????? 如果采用幀間預測編碼:其預測值P,是由已編碼的圖像做參考,經運動補償得到的。預測圖像P和當前幀Fn相減,得到兩圖像的殘差值Dn,Dn在經過轉換T,量化Q,去處空間冗余,得到系數X,將X重排(使數據更加緊湊),熵編碼(加入運動矢量。。。一些圖像相關得信息),得到nal數據。
????????????? 再編碼器中有個重構的過程(解碼的過程),量化系數X,反量化,反變換,得到Dn’,Dn’和預測圖像P相加,得到uFn’,再濾波得到Fn’,Fn’就是Fn編碼再解碼后得圖像。
????????????? 如果采用幀內預測編碼:預測值P,是由當前片中,己編碼的宏塊預測得到的(亮度4×4或者16×16預測,色度8×8預測)。當前待處理的塊,減去預測值P,得殘差值Dn,Dn在經過轉換T,量化Q,得到系數X,將X重排(使數據更加緊湊),熵編碼,得到nal數據。
????????????? 再重構的過程中,量化系數X,反量化,反變換,得到Dn’,Dn’和預測圖像P相加得到當前宏塊編碼解碼后得值,該值可以用來做幀內預測的參考宏塊。
????????????? 編碼器要有重構機制的原因:重構過程,實質上是個解碼的過程,解碼后的圖像和源圖肯定有差別,我門利用解碼后的圖像做參考,就能夠和解碼器中保值一致,就能夠提高圖像的預測精度。(再解碼器中,是利用己解碼的圖像做參考,是從解碼的圖像預測出下一副圖像)
?
????????????? (2)視頻解碼器 能夠對一個碼流解碼,長生和源圖或源視頻序列相近的圖像或視頻序列。如果解碼出的圖像和源圖是一樣的,這個編解碼過程是無損的,否則是有損。
?
???????????????????? 解碼器的實現和編碼器的重構機制,是一樣的。
?
????????????? (3)場 、幀、圖像
???????????????????? 場:隔行掃描的圖像,偶數行成為頂場行。奇數行成為底場行。所有頂場行稱為頂場。所有底場行稱為底場。
???????????????????? 幀:逐行掃描的圖像。
???????????????????? 圖像:場和幀都可認為是圖像。
????????????? (4)宏塊、片:
???????????????????? 宏塊:一個宏塊由一個16×16亮度塊、一個8×8Cb和一個8×8Cr組成。
???????????????????? 片:一個圖像可以劃分成一個或多個片,一個片由一個或多個宏塊組成。
5.2編碼數據格式
????????????? 5.2.1? h264支持4:2:0的連續或隔行視頻編碼解碼。
????????????? 5.2.2? h264的編碼格式
??????????????????????????? 制定h264的主要目標有兩個:
??????????????????????????? (1)得到高的視頻壓縮比
??????????????????????????? (2)具有良好的網絡親和性,即可適應于各種傳輸網絡。
??????????????????????????? 為此,h264的功能分為兩層,視頻編碼層(VCL)和網絡提取層(NAL)
??????????????????????????? VCL數據即被壓縮編碼后的視頻數據序列。在VCL數據要封裝到NAL單元中之后,才可以用來傳輸或存儲。NAL單元格式如下圖:
??? Nal頭 Rbsp Nal頭 Rbsp Nal頭 Rbsp

???????????? 5.2.3???????? h264碼流結構
5.3參考圖像
?????????? H264為提高精度,H264最多可從15個圖像總進行選擇,選出最佳的匹配圖
?????????? 優點:? 大大提高預測精度
?????????? 缺點:??? 復雜度大為增加
?????????? 參考圖像由參考列表(list0,list1)管理,
????????? P幀有一個參考列表 list0
????????? B幀有兩個參考列表 list0 和 list 1
?
5.4幀內預測
????????? 預測塊P是基于已編碼重建塊和當前塊形成的.
????????? 對于亮度的預測:4×4亮度預測,16×16亮度預測
????????? 對于色度象素預測:?? 8×8色度預測
???????? 5.4.1? 4×4亮度預測
????????????????????????? 4×4亮度預測 有9種預測模式
???????????????????????????
???????????????? (a)利用上面和左面的象素,對a~q進行幀內4×4預測
?
???????????????? (b)幀內4×4預測的8個方向
??????
??????
??????
??????
模式 描述
模式 0 (垂直) 由上邊象素垂直推出相應象素值
模式 1 (水平) 由左邊象素水平推出相應象素值
模式 2 (DC) 由上邊及左邊平均值推出所有象素值
模式 3 (下左對角) 由45度方向象素內插得出相應象素值
模式 4 (下右對角線) 由45度方向象素內插得出相應象素值
模式 5 (右垂直) 由26.6度方向象素值內插得出相應象素值
模式 6 (下水平) 由26.6度方向象素值內插得出相應象素值
模式 7 (左垂直) 由26.6度方向象素值內插得出相應象素值
模式 8 (上水平) 由26.6度方向象素值內插得出相應象素值

??????
?
9種預測模式計算產生的相應的預測塊(SAE 定義了每種預測的預測誤差),其中 SAE 最小的預測塊與當前塊最匹配
??????
????????? 5.4.2? 16×16亮度預測模式―――共有4種預測模式
??????
??????
??????
模式 描述
模式 0 (垂直) 由上邊象素推出相應象素值
模式 1 (水平) 由左邊象素推出相應象素值
模式 2 (DC) 由上邊和左邊象素平均值推出相應象素值
模式 3 (平面) 利用線性"plane"函數推出相應象素值,適用于亮度變化平緩區域

?
????????? 5.4.3? 8×8色度塊預測模式
?????????????????? 4種預測模式,類似幀內16*16預測,只是編號不同
?????????????????? DC 為模式 0, 水平為模式 1, 垂直為模式2, 平面為模式 3
?
5.5 幀間預測
????????? H264幀間預測是利用已編碼的幀或場和基于塊的運動補償。在h264中,塊的尺寸更加靈活(16×16到4×4)。
???????? 5.5.1? 基本概念
????????????????????? 活動圖像臨近幀中的景物存在一定的相關性,因此將圖像分成若干塊或宏塊,并設法搜索出每個塊或宏塊在鄰近幀圖像中的位置,并得出兩者之間的空間位置的便宜量.得到的相對偏移量就是通常所指的運動矢量(MV).
到運動矢量的過程稱為運動估計(ME).
?
??????? 5.5.2樹狀運動補償
?????????????? 每個宏塊(16×16)的亮度,可以按4種方式分割:1個16×16,2個16×8,2個8×16,4個8×8。8×8模式的子塊可以繼續劃分:1個8×8,2個4×8,2個8×4,4個4×4。這種分割的運動補償,稱為樹狀運動補償。??????????????????????????????????????
?????? 樹狀運動補償,靈活和細致的劃分,大提高了運動估計的精確程度
?????? 塊的大小可變。在運動估計時,可以靈活地選擇塊的大小。在宏塊(MB)劃分上,H.264采用了16×6,16×8,8×16,8×8四種模式;當劃分為8×8模式時,又可進一步采用8×4,4×8,4×4三種子宏塊劃分模式進一步劃分,這樣做既可以使運動物體的劃分更加精確,減小運動物體邊緣的銜接誤差,又可以減小變換過程中的計算量。當對較大的平滑區域采用Intra_16×16的幀間預測方式時,為減小小尺寸變換帶來的塊間灰度差異,H.264采用了對亮度數據的16個4×4塊的DC系數進行第二次4×4變換,對色度數據的4個4×4塊的DC系數進行2×2變換的方式。

?????? 5.5.3 運動矢量
?????? 幀間編碼宏塊的每個子宏塊都是從參考圖像的某一相同尺寸區域進行預測得到 的。兩者之間的差異(MV),對亮度成分采用1/4象素精度,色度1/8象素精度。
?
附錄:
264學習指南―――分三個階段學習
1、第一個階段:
學習H.264,首先要把最基本最必要的資料拿在手里(//172.22.113.200/share/h264/H.264相關論文/其他/經典文章)。這些資料包括:標準文檔+測試模型+經典文章。首先看《H.264_MPEG-4 Part 10 White Paper》,看完之后再看《Video coding using the H.264 MPEG-4 AVC compression standard》和《Halsted.Press.H.264.And.MPEG-4.Video.Compression.Video.Coding.For.Next.Generation.Multimedia.eBook-LiB》,然后可以抽空看《Overview of the H.264_AVC Video Coding Standard.pdf》。這幾篇文章看完后,你應該對H.264的整體框架有個比較深入的了解了。前三篇文章可能需要花費你兩~三周的時間。
?
2、第二階段:
?????? 看代碼。這個時候你最常用的工具就是標準文檔和測試模型(建議使用JM86)。看代碼也要先從整體框架入手。先搞懂H.264的整體框架在代碼里是怎么分布的,一個功能模塊的前伸模塊和后繼模塊是什么。也就是搞清楚整個代碼流程。這個階段對標準文檔的使用可能很少。
3、第三階段:
然后你找到一個自己感興趣的切入點,開始以此為中心研究這個問題。你研究問題的時候應該是聯系測試模型來研究,這個時候你就需要仔細看代碼中對這個問題的實現了。這個階段我絕對支持你一行行代碼跟蹤,一個參數一個參數地跟蹤。而代碼中不懂的地方可能需要查標準。這時你再來看標準文檔就有了針對性。也因為能將標準文檔和代碼對應起來,從而看標準文檔也不覺得有太大困難,也能明白標準文檔說的是什么問題,在測試模型中是如何通過代碼實現的。在這個階段中,會牽連到很多H.264的相關知識,這樣通過以點帶線,以線帶面。會對H.264的內容認識越來越多。而你也就找到了自己的方向。
==========【注意事項】==========
1、切忌將代碼和標準文檔獨立開看,否則,你的困難會很大。
2、對于剛開始接觸H.264的人,切忌直接看代碼和標準,哪怕是將標準和代碼結合起來看,你也會不太順利。換句話說:在沒有了解H.264整體框架之前,你最好什么都不要做。

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/fengyv/archive/2006/01/04/570071.aspx

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456055.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456055.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456055.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

輕量級代碼生成器-OnlyCoder 第一篇

程序猿利器&#xff1a;代碼生成器&#xff0c;使用代碼生成器已經好幾年了&#xff0c;增刪改查各種生成&#xff0c;從UI到DATA層均生成過。之前有使用過動軟的&#xff0c;T4模板等.... T4生成實體還是沒有問題的&#xff0c;但是生成MVC視圖就有點煩雜了&#xff0c;動軟給…

python中的元組操作

元組操作 元組也是一組有序數據的組合&#xff0c;和列表唯一的不同是&#xff0c;元組不可修改 列表 用鉛筆寫的清單(能擦能改) 元組 用鋼筆寫的清單(不能擦改) 創建元組 創建空元組 方式1&#xff1a;變量 ()方式2&#xff1a; 變量 tuple() 創建單個元素的元組 方式1…

從Java到Go面向對象--繼承思想.md

2019獨角獸企業重金招聘Python工程師標準>>> Go語言實現繼承 我們都知道Java中通過extends來實現對象的繼承&#xff0c;那么Go中怎么實現繼承呢&#xff1f;Go語言沒有繼承&#xff0c;只有組合。我們知道&#xff0c;繼承的目的是什么&#xff0c;是類的重用&…

電腦鍵盤練習_電腦新手最關心的:零基礎如何快速掌握電腦打字的技巧?

隨著計算機的普及&#xff0c;越來越多的人在工作和生活中需要使用計算機。有的朋友通過參與培訓學會了鍵盤打字&#xff0c;有的朋友自學成才學會了鍵盤打字。這里筆者給大家分享在0基礎的情況下&#xff0c;通過自學快速掌握鍵盤打字的一種方法。需要說明的是&#xff0c;鍵盤…

【解決】jupyter在deepin安裝上的坑

報錯&#xff1a;env: "wine": 沒有那個文件或目錄 jupyter打開之后無法直接跳轉瀏覽器 解決方法&#xff1a; 1、 生成配置文件jupyter notebook --generate-config 2、打開jupyter_notebook_config.py&#xff0c;在文件最后添加以下代碼 選擇你的瀏覽器位置 …

鹽城出臺推進大數據產業發展實施意見

日前&#xff0c;鹽城市政府印發了《關于推進大數據產業發展的實施意見》&#xff08;下稱《實施意見》&#xff09;&#xff0c;從指導思想、推進原則、發展目標、發展方向、重點工程和保障措施六個方面明確了鹽城市加快培育和發展大數據產業的具體實施意見&#xff0c;這是該…

json字符串轉換成json對象

Json字符與Json對象的相互轉換方式有很多&#xff0c;接下來將為大家一一介紹下&#xff0c;感興趣的朋友可以參考下哈&#xff0c;希望可以幫助到你1>jQuery插件支持的轉換方式&#xff1a; 代碼如下:$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字符串…

python中的字典

字典操作 以鍵值對方式存在的無序數據的組合就是字典 創建字典 創建空字典 方式1&#xff1a;變量 {}方式2&#xff1a; 變量 dict() 創建多個元素的字典 方式1&#xff1a;變量 {鍵:值,鍵:值....}方式2&#xff1a;變量 dict({鍵:值,鍵:值....})方式3&#xff1a;變量 …

【深度學習】Win10安裝TensorFlow_gpu(避坑必看)

不用gpu的tensorflow 是沒有靈魂的Tensorflow 因為就是為了快&#xff01;快二十倍 FIRST Q&#xff1a;系統及顯卡版本問題&#xff01;!!! 到官網看&#xff01;別看別的博客 ~鏈接&#xff1a; Windows端&#xff1a;https://tensorflow.google.cn/install/source_wind…

SCL定時 1500_iPhone12開售當天黃牛加價1500,哪里買最劃算?

10月23日&#xff0c;蘋果iPhone12全系列正式開售。首批貨源非常搶手&#xff0c;各地的蘋果商店門口都排起了長隊&#xff0c;現場黃牛甚至加價1500元收購用戶手機。開賣首日熱度高&#xff0c;官方最快一周發貨據蘋果官網介紹&#xff0c;此次iPhone12系列共有4款機型&#x…

H.264編解碼

H.264是由ITU-T&#xff08;ITU Telecommunication Standardization Sector&#xff0c;國際電信聯盟遠程通信標準化組&#xff09;視頻編碼專家組&#xff08;VCEG&#xff09;和ISO/IEC動態圖像專家組&#xff08;MPEG&#xff09;聯合組成的聯合視頻組&#xff08;JVT&#…

Web開發基礎

-------------------siwuxie095 HTML HTML 即 HyperText Markup Language&#xff0c;超文本標記語言 由服務器返回&#xff0c;瀏覽器呈現 服務器 即 HTTP 服務器&#xff0c;如&#xff1a;Apache、Nginx、Tomcat 一段 HTML 代碼&#xff0c;可以是存放在 HTTP 服務器上的一個…

飛信即將歸來:移動企業IM面臨的三大難題

企業即時通訊(以下稱“企業IM” ) 激戰正酣&#xff0c;中國移動也有意攪局。中國移動方面日前向北京商報記者透露&#xff0c;中國移動的IM產品將于下月正式上線&#xff0c;此次中國移動拿出的是淡出人們視線許久的飛信。由于傳統通信業務持續下滑&#xff0c;正在蓬勃發展的…

【FFmpeg】Win10環境下安裝FFmpeg(實現視頻音頻提取裁剪等)

FFmpeg概述 在語音識別領域內&#xff0c;如何識別準確識別語音的第一步就是要將從音頻文件中提取相關語音特征。同時對于各大語音接口如百度對于音頻文件格式要求高&#xff0c;但是對于實際情況下&#xff0c;我們不可能都能拿到WAV文件&#xff0c;因此必須將首先將各種格式…

H.264

百科名片 H.264&#xff0c;同時也是MPEG-4第十部分&#xff0c;是由ITU-T視頻編碼專家組&#xff08;VCEG&#xff09;和ISO/IEC動態圖像專家組&#xff08;MPEG&#xff09;聯合組成的聯合視頻組&#xff08;JVT&#xff0c;Joint Video Team&#xff09;提出的高度壓縮數字視…

個人財務管理系統有源碼怎么用_微信里的客戶怎么管理?用魚汛微信管理系統...

魚汛工作手機是一款[1]銷售微信管理系統&#xff0c;具有微信分析、電話分析、客戶分析、績效分析、安全管控、使用管控等六大功能&#xff0c;真正實現安全&#xff0c;高效&#xff0c;可管理&#xff01;魚汛手機能為企業帶來什么價值&#xff1f;隨著溝通方式的變革&#x…

另一個分區工具:GNU 的 parted(轉)

利用 GNU 的 parted 進行分割行為 雖然你可以使用 fdisk 很快速的將你的分割槽切割妥當&#xff0c;不過 fdisk 卻無法支持到高于 2TB 以上的分割槽&#xff01; 此時就得需要 parted 來處理了。不要覺得 2TB 你用不著&#xff01; 2009 年的現在已經有單顆硬盤高達 2TB 的容量…

《簡明電路分析》——導讀

本節書摘來自華章社區《簡明電路分析》一書中的目錄&#xff0c;作者鐘洪聲 吳 濤 孫利佳&#xff0c;更多章節內容可以訪問云棲社區“華章社區”公眾號查看 目 錄 前  言教學建議第一部分 電阻電路分析第1章 電路基本約束關系 1.1 電路與電路模型 1.2 電學主要參數…

【深度學習】Tensorflow的基本操作

圖 TensorFlow程序通常被組織成一個構建階段和一個執行階段. 在構建階段, op的執行步驟被描述成一個圖. 在執行階段, 使用會話執行執行圖中的op。我們來構建一個簡單的計算圖。每個節點采用零個或多個張量作為輸入&#xff0c;并產生張量作為輸出。一種類型的節點是一個常數。…

unity塔防游戲怪物轉向_Unity官方新手游戲項目推薦合集

Unity官方新手游戲項目推薦合集今天給同學們介紹一些Unity官方發布過的一些游戲項目&#xff0c;這些項目都簡化了游戲開發的入門學習過程&#xff0c;可以快速地制作出游戲&#xff0c;適合新手入門體驗&#xff0c;下面就帶同學們看一看&#xff1a;Unity Playground圖片來源…