視頻壓縮算法的相關知識

視頻壓縮算法的相關知識
MPEG-1
MPEG 視頻壓縮編碼后包括三種元素:I幀(I-frames)、P幀(P-frames)和B幀(B-frames)。在MPEG編碼的過程中,部分視頻幀序列壓縮成為I幀;部分壓縮成P幀;還有部分壓縮成B幀。I幀法是幀內壓縮法,也稱為“關鍵幀”壓縮法。I幀法是基于離散余弦變換DCT( Discrete Cosine Transform )的壓縮技術,這樣的算法與JPEG壓縮算法相似。採用I幀壓縮可達到1/6的壓縮比而無明顯的壓縮痕跡。

在保證圖像質量的前提下實現高壓縮的壓縮算法,僅靠幀內壓縮是不能實現的,MPEG採用了幀間和幀內相結合的壓縮算法。 P幀法是一種前向預測算法,它考慮相鄰幀之間的同樣信息或數據,也即考慮運動的特性進行幀間壓縮。P幀法是依據本幀與相鄰的前一幀(I幀或P幀)的不同點來壓縮本幀數據。採取P幀和I幀聯合壓縮的方法可達到更高的壓縮且無明顯的壓縮痕跡。

然而,僅僅有採用B幀壓縮才干達到200:1的高壓縮。B幀法是雙向預測的幀間壓縮算法。當把一幀壓縮成B幀時,它依據相鄰的前一幀、本幀以及后一幀數據的不同點來壓縮本幀,也即僅記錄本幀與前后幀的差值。B幀數據僅僅有I幀數據的百分之十五、P幀數據的百分之五十下面。

MPEG 標準採用相似4:2:2的採用格式,壓縮后亮度信號的分辨率為352×240,兩個色度信號分辨率均為176×120,這兩種不同分辨率信息的幀率都是每秒30幀。其編碼的基本方法是在單位時間內,首先採集并壓縮第一幀的圖像為I幀。然后對于其后的各幀,在對單幀圖像進行有效壓縮的基礎上,僅僅存儲其相對于前后幀發生變化的部分。幀間壓縮的過程中也常間隔採用幀內壓縮法,因為幀內(關鍵幀)的壓縮不基于前一幀,一般每隔15幀設一關鍵幀,這樣能夠降低相關前一幀壓縮的誤差積累。MPEG編碼器首先要決定壓縮當前幀為I幀或P幀或B幀,然后採用對應的算法對其進行壓縮。一個視頻序列經MPEG全編碼壓縮后可能的格式為:IBBPBBPBBPBBPBBIBBPBBPBBPBBPBBI......

壓縮成B幀或P幀要比壓縮成I幀須要多得多的計算處理時間。有的編碼器不具備B幀甚至P幀的壓縮功能,顯然其壓縮效果不會非常好。


MPEG-2
MPEG 組織在1994年推出MPEG-2壓縮標準,以實現視/音頻服務與應用互操作的可能性。MPEG-2標準是針對標準數字電視和高清晰度電視在各種應用下的壓縮方案和系統層的具體規定,編碼碼率從每秒3兆比特~100兆比特,標準的正式規范在ISO/IEC13818中。MPEG-2不是MPEG-1的簡單升級,MPEG-2在系統和傳送方面作了更加具體的規定和進一步的完好。MPEG-2特別適用于廣播級的數字電視的編碼和傳送,被認定為SDTV和 HDTV的編碼標準。MPEG-2還專門規定了多路節目的復分接方式。MPEG-2標準眼下分為9個部分,統稱為ISO/IEC13818國際標準。

MPEG -2圖像壓縮的原理是利用了圖像中的兩種特性:空間相關性和時間相關性。一幀圖像內的不論什么一個場景都是由若干像素點構成的,因此一個像素通常與它周圍的某些像素在亮度和色度上存在一定的關系,這樣的關系叫作空間相關性;一個節目中的一個情節經常由若干幀連續圖像組成的圖像序列構成,一個圖像序列中前后幀圖像間也存在一定的關系,這樣的關系叫作時間相關性。這兩種相關性使得圖像中存在大量的冗余信息。假設我們能將這些冗余信息去除,僅僅保留少量非相關信息進行傳輸,就能夠大大節省傳輸頻帶。而接收機利用這些非相關信息,依照一定的解碼算法,能夠在保證一定的圖像質量的前提下恢復原始圖像。一個好的壓縮編碼方案就是能夠最大限度地去除圖像中的冗余信息。

MPEG-2的編碼圖像被分為三類,分別稱為I幀,P幀和B幀。

I幀圖像採用幀內編碼方式,即僅僅利用了單幀圖像內的空間相關性,而沒有利用時間相關性。I幀使用幀內壓縮,不使用運動補償,因為I幀不依賴其它幀,所以是隨機存取的入點,同一時候是解碼的基準幀。I幀主要用于接收機的初始化和信道的獲取,以及節目的切換和插入,I幀圖像的壓縮倍數相對較低。I幀圖像是周期性出如今圖像序列中的,出現頻率可由編碼器選擇。

P幀和B幀圖像採用幀間編碼方式,即同一時候利用了空間和時間上的相關性。P幀圖像僅僅採用前向時間預測,能夠提高壓縮效率和圖像質量。P幀圖像中能夠包括幀內編碼的部分,即P幀中的每個宏塊能夠是前向預測,也能夠是幀內編碼。B幀圖像採用雙向時間預測,能夠大大提高壓縮倍數。值得注意的是,因為B幀圖像採用了未來幀作為參考,因此MPEG-2編碼碼流中圖像幀的傳輸順序和顯示順序是不同的。

P 幀和B幀圖像採用幀間編碼方式,即同一時候利用了空間和時間上的相關性。P幀圖像僅僅採用前向時間預測,能夠提高壓縮效率和圖像質量。P幀圖像中能夠包括幀內編碼的部分,即P幀中的每個宏塊能夠是前向預測,也能夠是幀內編碼。B幀圖像採用雙向時間預測,能夠大大提高壓縮倍數。值得注意的是,因為B幀圖像採用了未來幀作為參考,因此MPEG-2編碼碼流中圖像幀的傳輸順序和顯示順序是不同的。

MPEG-2的編碼碼流分為六個層次。為更好地表示編碼數據,MPEG-2用句法規定了一個層次性結構。它分為六層,自上到下各自是:圖像序列層、圖像組(GOP)、圖像、宏塊條、宏塊、塊。


MPEG-4
MPEG -4于1998年11月發布, MPEG-4是針對一定比特率下的視頻、音頻編碼,更加注重多媒體系統的交互性和靈活性。MPEG-4標準力求做到兩個目標:低比特率下的多媒體通信;是多工業的多媒體通信的綜合。為此,MPEG-4引入了AV對象(Audio/Visual Objects),使得很多其它的交互操作成為可能:
"AV對象"能夠是一個孤立的人,也能夠是這個人的語音或一段背景音樂等。它具有高效編碼、高效存儲與傳播及可交互操作的特性。

MPEG -4對AV對象的操作主要有:採用AV對象來表示聽覺、視覺或者視聽組合內容;組合已有的AV對象來生成復合的AV對象,并由此生成AV場景;對AV對象的數據靈活地多路合成與同步,以便選擇合適的網絡來傳輸這些AV對象數據;同意接收端的用戶在AV場景中對AV對象進行交互操作等。
MPEG-4標準則由6個主要部分構成:
① DMIF(The Dellivery Multimedia Integration Framework)
DMIF 即多媒體傳送總體框架,它主要解決交互網絡中、廣播環境下以及磁盤應用中多媒體應用的操作問題。 通過傳輸多路合成比特信息來建立client和server端的交互和傳輸。 通過DMIF,MPEG4能夠建立起具有特殊品質服務(QoS)的信道和面向每個基本流的帶寬。
② 數據平面
MPEG4中的數據平面能夠分為兩部分:傳輸關系部分和媒體關系部分。
為了使基本流和AV對象在同一場景中出現,MPEG4引用了對象描寫敘述(OD)和流圖桌面(SMT) 的概念。OD 傳輸與特殊AV對象相關的基本流的信息流圖。桌面把每個流與一個CAT(Channel Assosiation Tag)相連,CAT可實現該流的順利傳輸。
③ 緩沖區管理和實時識別
MPEG4定義了一個系統解碼模式(SDM),該解碼模式描寫敘述了一種理想的處理比特流句法語義的解碼裝置,它要求特殊的緩沖區和實時模式。通過有效地管理,能夠更好地利用有限的緩沖區空間。
④ 音頻編碼
MPEG4的優越之處在于--它不僅支持自然聲音,并且支持合成聲音。MPEG4的音頻部分將音頻的合成編碼和自然聲音的編碼相結合,并支持音頻的對象特征。
⑤ 視頻編碼
與音頻編碼相似,MPEG4也支持對自然和合成的視覺對象的編碼。 合成的視覺對象包括2D、3D 動畫和人面部表情動畫等。
⑥ 場景描寫敘述
MPEG4 提供了一系列工具,用于組成場景中的一組對象。一些必要的合成信息就組成了場景描寫敘述,這些場景描寫敘述以二進制格式BIFS(Binary Format for Scene description)表示,BIFS與AV對象一同傳輸、編碼。場景描寫敘述主要用于描寫敘述各AV對象在一具體AV場景坐標下,怎樣組織與同步等問題。同一時候還有AV對象與AV場景的知識產權保護等問題。MPEG4為我們提供了豐富的AV場景。
與MPEG-1和MPEG-2相比,MPEG-4更適于交互AV服務以及遠程監控,它的設計目標使其具有更廣的適應性和可擴展性: MPEG-4傳輸速率在4800-64000bps之間,分辨率為176×144,能夠利用非常窄的帶寬通過幀重建技術壓縮和數據傳輸,從而能以最少的數據獲得最佳的圖像質量。因此,它將在數字電視、動態圖像、互聯網、實時多媒體監控、移動多媒體通信、Internet/Intranet上的視頻流與可視游戲、DVD上的交互多媒體應用等方面大顯身手。

H.264
H.264 是ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(活動圖像編碼專家組)的聯合視頻組(JVT:joint video team)開發的一個新的數字視頻編碼標準,它既是ITU-T的H.264,又是ISO/IEC的MPEG-4的第10 部分。1998年1月份開始草案征集,1999年9月,完畢第一個草案,2001年5月制定了其測試模式TML-8,2002年6月的 JVT第5次會議通過了H.264的FCD板。眼下該標準還在開發之中,預計明年上半年可正式通過。

H.264和曾經的標準一樣,也是 DPCM加變換編碼的混合編碼模式。但它採用“回歸基本”的簡潔設計,不用眾多的選項,獲得比H.263++好得多的壓縮性能;加強了對各種信道的適應能力,採用“網絡友好”的結構和語法,有利于對誤碼和丟包的處理;應用目標范圍較寬,以滿足不同速率、不同解析度以及不同傳輸(存儲)場合的需求;它的基本系統是開放的,使用無需版權。

H.264的算法在概念上能夠分為兩層:視頻編碼層(VCL:Video Coding Layer)負責高效的視頻內容表示,網絡提取層(NAL:Network Abstraction Layer)負責以網絡所要求的恰當的方式對數據進行打包和傳送。 H.264支持1/4或1/8像素精度的運動矢量。在1/4像素精度時可使用6抽頭濾波器來降低高頻噪聲,對于1/8像素精度的運動矢量,可使用更為復雜的8抽頭的濾波器。在進行運動預計時,編碼器還可選擇“增強”內插濾波器來提高預測的效果。H.264中熵編碼有兩種方法,一種是對全部的待編碼的符號採用統一的VLC(UVLC :Universal VLC),還有一種是採用內容自適應的二進制算術編碼。H.264 草案中包括了用于差錯消除的工具,便于壓縮視頻在誤碼、丟包多發環境中傳輸,如移動信道或IP信道中傳輸的健壯性。

在技術上,H.264 標準中有多個閃光之處,如統一的VLC符號編碼,高精度、多模式的位移預計,基于4×4塊的整數變換、分層的編碼語法等。這些措施使得H.264算法具有非常的高編碼效率,在同樣的重建圖像質量下,能夠比H.263節約50%左右的碼率。H.264的碼流結構網絡適應性強,添加了差錯恢復能力,能夠非常好地適應IP和無線網絡的應用。

H.264具有廣闊的應用前景,比如實時視頻通信、因特網視頻傳輸、視頻流媒體服務、異構網上的多點通信、壓縮視頻存儲、視頻數據庫等。H.264優越性能的獲得不是沒有代價的,其代價是計算復雜度的大大添加,據預計,編碼的計算復雜度大約相當于H.263的3 倍,解碼復雜度大約相當于H.263的2倍。

H.264建議的技術特點能夠歸納為三個方面,一是注重有用,採用成熟的技術,追求更高的編碼效率,簡潔的表現形式;二是注重對移動和IP網絡的適應,採用分層技術,從形式上將編碼和信道隔離開來,實質上是在源編碼器算法中很多其它地考慮到信道的特點;三是在混合編碼器的基本框架下,對其主要關鍵部件都做了重大改進,如多模式運動預計、幀內預測、多幀預測、統一VLC、4×4二維整數變換等。

迄今為止,H.264尚未最后定稿,但因其更高的壓縮比,更好的信道適應性,必將在數字視頻的通信或存儲領域得到越來越廣泛的應用,其發展潛力不可限量。?

轉載于:https://www.cnblogs.com/mengfanrong/p/3827052.html

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

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

相關文章

安裝MariaDB數據庫(未完成)

1轉載于:https://www.cnblogs.com/centos7/p/5994533.html

python接口開發django_用 Django 開發接口

環境搭建1、pip install django2.2.0一、django-admin startproject UITESTpython manage.py startapp paltform創建Django項目1. 創建方式:#方式1:終端輸入django-admin startproject UITEST#方式2:pycharm中新建django項目在settings.py文件中添加應用…

戒掉dota

立言為證。 每次不想學習想到dota就強迫自己去培養的興趣。 比如看一本喜歡的書;比如去跑個步;比如研究某個興趣點寫個報告;比如寫份隨筆。 轉載于:https://www.cnblogs.com/hongxia/p/3830348.html

java切入式編程顯示屏_C語言嵌入式系統編程修煉之四:屏幕操作

C語言嵌入式系統編程修煉之四:屏幕操作作者:宋寶華 更新日期:2005-07-22漢字處理現在要解決的問題是,嵌入式系統中經常要使用的并非是完整的漢字庫,往往只是需要提供數量有限的漢字供必要的顯示功能。例如,一個微波爐的LCD上沒有必要提供顯…

DIV的邊距屬性在Chrome和IE中的區別

突然間,在Chrome下看起來很整齊的布局,在IE下變成一團糟。為了找出原因,我改動了div的background-color屬性。最后,發現同一個DIV的寬度在IE和Chrome下卻不一樣。這大晚上的,真是怪嚇人滴! 之后&#xff0c…

算法之矩陣計算斐波那契數列

算法之矩陣計算斐波那契數列 本節內容 斐波那契介紹普通方式求解斐波那契矩陣概念矩陣求冪矩陣求解斐波那契1.斐波那契介紹 斐波那契數列有關十分明顯的特點,那是:前面相鄰兩項之和,構成了后一項。即f(n)f(n-1)f(n-2),f(0)0,f(1)f(2)1,推導下…

python中去除字符串中首尾空格的函數_Python中去除字符串首尾特定字符的函數:strip()...

Python中strip()函數的作用是去除一個字符串前導和尾部的特定字符,并返回結果字符串。Python中strip()函數默認是刪除字符串前導和尾部空格,通過設定參數,也可以去除字符串前導和尾部的其它特定字符。strip()函數的語法格式str.strip( [ char…

SeekBar和RatingBar

1. SeekBar的主要屬性 2. OnSeekBarChangeListener 3. RatingBar的主要屬性 4. OnRatingBarChangeListener 1. SeekBar的主要屬性 2. OnSeekBarChangeListener 1 <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"2 xmlns:tools&qu…

用“Web的思想”做PC客戶端

一直在想&#xff0c;用HTML搭建前端頁面這么方便&#xff0c;而且效果這么炫&#xff0c;為什么在PC端的軟件要如此麻煩呢&#xff1f;就連C#也是&#xff0c;更何況C了。 盡管C有DirectUI這樣優秀的圖形庫&#xff0c;但是開發起來仍然非常吃力。C#的WPF雖然工具鏈完善&#…

Java點擊按鈕div縮放_[Java教程]怎樣給div增加resize事件

[Java教程]怎樣給div增加resize事件0 2016-10-31 11:00:04當瀏覽器窗口被調整到一個新的高度或寬度時&#xff0c;就會觸發resize事件,這個事件在window上面觸發,那么如何給div元素增加resize事件&#xff0c;監聽div的高度或寬度的改變呢&#xff1f;某位大神用jquery實現的方…

python判斷題題庫大數據技術_智慧樹_大數據分析的python基礎_搜題公眾號

智慧樹_大數據分析的python基礎_搜題公眾號更多相關問題社會公眾可以查閱煙草專賣行政主管部門的監督檢查記錄。()公民、法人或者其他組織不得利用自動售貨機銷售煙草制品。()煙草廣告中不得有下列情形()。A、社會公益廣告B、遷址、換房、更名等啟事廣告C、表示吸煙有利人體健公…

Java并發中常用同步工具類

為什么80%的碼農都做不了架構師&#xff1f;>>> 同步工具類可以是任何一個對象&#xff0c;只要它根據其自身的狀態來協調線程控制流。阻塞隊列&#xff08;BlockingQueue&#xff09;可以作為同步工具類&#xff0c;其他類型的同步工具類還包括信號量&#xff08;…

Linux平臺Oracle多個實例啟動說明

環境說明:oracle實例1的SID為orcl(為默認啟動的實例),第二個實例的SID為orcl2 啟動步驟&#xff1a; 1&#xff09;啟動數據庫實例完成后&#xff0c;啟動數據庫監聽服務 #lsnrctl start 2&#xff09;切換到需要啟動的數據庫實例下&#xff0c;如下表示啟動的是orcl數據庫…

RTMP協議發送H.264編碼及AAC編碼的音視頻,實現攝像頭直播

RTMP協議發送H.264編碼及AAC編碼的音視頻&#xff0c;實現攝像頭直播 摘要: RTMP協議發送H.264編碼及AAC編碼的音視頻&#xff0c;實現攝像頭直播  RTMP&#xff08;Real Time Messaging Protocol&#xff09;是專門用來傳輸音視頻數據的流媒體協議&#xff0c;最初由Macrome…

java消息順序執行_Apache Flink:如何并行執行但保持消息順序?

請在下面找到使用側輸出和插槽組進行本地擴展的示例 .package org.example/** Licensed to the Apache Software Foundation (ASF) under one* or more contributor license agreements. See the NOTICE file* distributed with this work for additional information* regardi…

python的字符串定界符可以使用_使用Template格式化Python字符串的方法

對Python字符串&#xff0c;除了比較老舊的%&#xff0c;以及用來替換掉%的format&#xff0c;及在python 3.6中加入的f這三種格式化方法以外&#xff0c;還有可以使用Template對象來進行格式化。from string import Template&#xff0c;可以導入Template類。實例化Template類…

【ES實戰】ES6.7的tar包離線安裝幫助手冊

Elasticsearch6.7部署幫助手冊 校驗時間&#xff1a;2023年12月19日 文章目錄 Elasticsearch6.7部署幫助手冊安裝前準備安裝包安裝要求鎖定內存,修改最大文件描述符,最大線程數內核參數 部署規劃端口規劃用戶規劃目錄規劃 安裝步驟每個服務器配置JDK配置文件master角色node角色…

jenkins 部署文檔

Jenkins是一個非常出色的持續集成服務器&#xff0c;本文主要介紹在CentOS系統中Jenkins的基本安裝配置方法&#xff0c;供參考。一. 軟件包&#xff1a;1. 下載apache-maven-2.2.1-bin.tarhttp://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-2.2.1-bin.tar.gz…

牛人,多看看他們寫的東西

計算機大師 Donald E. Knuth&#xff08;高德納&#xff09; 算法大師&#xff0c;我最崇拜的計算機科學家&#xff0c;沒有之一&#xff01;不認識高爺爺的人別說自己是學計算機的。《The Art of Computer Programming》絕對是計算機科學的圣經。對高爺爺的崇敬&#xff0c;對…

System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1)

System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1) 在vb里面 等價于ii-1 在C#里面 等價于i-- 是有C#自動轉VB時轉換的轉載于:https://www.cnblogs.com/YaDi/archive/2012/11/08/2759802.html