當前位置:首頁 » 編程語言 » c語言視頻解碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言視頻解碼

發布時間: 2023-04-05 01:04:47

1. 如何用c語言編寫一個視頻播放器

  1. 視頻播放器是一種解碼器。

    解碼器是對已編碼的數字視頻進行還原解碼操作的程序(視頻播放器)或設備。比如系統安裝了real編碼器那就能將其他格式文件轉換成rm或rmvb格式,如果安裝了real解碼器那就能播放rm或rmvb格式文件。

  2. 這已經不是簡單C語言能夠編寫出來的,它的核心是解碼編碼的演算法。

    1,如果你只是想用某些功能,不要自己編了。找一個吧。
    2,非要自己編的話,要站在巨人的肩膀上。很多種編碼都有開源的解碼器了。可以利用他們。或者利用開源的軟體,在人家基礎上開發。
    3,如果你認為你有希望改進壓縮解壓演算法,得到更好的效果,更省地方,更有效的解壓演算法。那首先要做的是了解各種編碼的壓縮解壓演算法。創造一種更好的演算法。

2. 什麼是MPEG4

MPEG-4標準的主要技術概覽及編碼
摘 要:簡要介紹了MPEG-4標準的主要內容以及在此基礎上著重介紹了音頻對象的編碼和視頻對象的編碼。
關鍵詞:MPEG-4; 多媒體傳輸集成框架; 視頻編碼 0 前言
MPEG-4編碼標準是目前最新的國際編碼標准規范?熏本文就其主要的內容作了簡單的概述?熏並在此基礎上,著重介紹了具有特色的音頻對象的編碼和視頻對象的編碼。
1 多媒體傳輸集成框架
多媒體傳輸集成框架(DMIF)主要解決交互網路中、廣播環境下以及磁碟中多媒體應用的操作問題,通過傳輸多路合成比特信息,建立客戶端和伺服器端的握手和傳輸。與過去不同的是,由於MPEG-4碼流中,包括許多的AV對象,一般而言,這些AV對象都有各自的緩沖器,而不僅僅是視頻緩沖器和音頻緩沖器。

2 語法描述

MPEG-4定義了一個句法描述語言來描述AV對象比特流表示和場景描述信息。這個句法描述語言是對C++的擴展,不僅易於表達其AV對象特性,而且也易於軟體模擬實現與模型驗證。與MPEG-4相比,MPEG-1和MPEG-2則採用一種類C語言的描述,MPEG-4描述語言反映了面向對象技術來描述對象。

3 音頻對象的編碼

視頻音頻的壓縮編碼自然仍是MPEG-4的核心所在。不過,與以前的MPEG-1、MPEG-2不同的是:MPEG-4不僅支持自然的聲音(如語音和音樂),而且支持基於描陸仿述語言的合成聲音,支持音頻的對象特徵。即一個場景中,同時有人聲和背景音樂,它們也許是獨立編碼的音頻對象。

3.1 自然聲音編碼

MPEG-4研究比較了現有的各種音頻編碼演算法,支持2~64K的自然聲音編碼。如8 kHz采樣頻率的2~4 kbit/s的語音編碼,以及8或16 kHz采樣頻率4~16 kbit/s的音頻編碼,一般採用參數編碼;6~24 kbit/s的語音冊談編碼,一般採用碼激勵線性預測(CELP)編碼技術;16 kbit/s以上碼率的編碼,則可採用時頻(T/F)變換編碼技術。這些技術實質上借鑒了已有的音頻編碼標准,如G.723、G.728以及MPEG-1和MPEG-2等。圖1是MPGE4的可伸縮自然音頻編碼器示意圖,包括了3種編碼技術。

3.2 合成聲音

在合成聲音編碼當中,MPEG-4引入了2個極有吸引力的編碼技術:文本到語音編碼和樂譜驅動合成編碼技術。這為網路上低比特率下交互的帶有語音的游戲鋪平了道路。事實上,合成聲音編碼技術即是一種基於知識庫的參數編碼。特別值得一提的是MPEG-4的樂譜驅動合成技術,在該技術中,解碼器是由一種特殊的合成語言——結構化的音頻管弦樂團語言(SAOL)驅動的。其中的「管州悉碰弦樂團」是由不同的「樂器」組成的。當解碼器不具有某一「樂器」時,MPEG-4還允許解碼器從編碼器下載該「樂器」到解碼器,以便正確恢復合成聲音。可見,MPEG-4不是提供一組角MIDI音樂標准中的「樂器」,而是提供了一個可隨時擴充的「管弦樂團」,因此,其可「演奏」樂譜自然更加豐富多彩。

4 視覺對象的編碼

同樣,MPEG-4也支持對自然和合成的視覺對象編碼。合成的視覺對象如2D、3D動畫,人的面部表情動畫等,這些合成圖像單獨編碼,不僅可有效壓縮,而且還便於操作。

對自然視覺對象的編碼,仍是MPEG-4的重點。相對於靜止圖像,MPEG-4採用零樹小波演算法(Zerotree WAVelet algorithm)以提供高壓縮比,同時還提供多達11級的空間解析度和質量的可伸縮性。

對於運動視頻對象的編碼,MPEG-4採用了如圖2所示的編碼框圖,以支持圖像的編碼。

可見,MPEG-4為了支持基於對象的編碼,引入了形狀編碼模塊。為了支持高效壓縮,MPEG-4仍然採用了MPEG-1、MPEG-2中的變換、預測混合編碼框架。

對於一般的任意形狀的視頻對象,MPEG-4編碼後的碼流結構見圖3。

對於實時的極低比特率的應用,如可視電話,MPEG-4視頻編碼採用極低比特率視頻(VLBV)核進行編碼,類似於ITU的H.263直接對矩形視頻編碼,而不採用形狀編碼模塊。編碼後的碼流結構見圖4

可見,MPEG-4採取了向前兼容H.263,同時,也提供了一些高層特性,如基於內容的編碼。其擴充的方式見圖5。

MPEG-4支持有誤碼信道傳輸下的魯棒性,提供了更好的同步和誤碼恢復機制。

5 場景描述

場景描述主要用於描述以上單個的AV對象如何在一個具體AV場景坐標下的組織與同步等問題。同時還有AV對象和AV場景的知識產權保護等問題。

6 MPEG-4展望

MPEG-4的應用將是廣泛而深遠的。這一新的標准將至少可以應用於以下場合:

a) 實時多媒體監控;

b) 極低比特率下的移動多媒體通信;

c) 基於內容存儲和檢索多媒體系統;

d) Internet/Intranet上的視頻流與可視游戲;

e) 基於面部表情模擬的虛擬會議;

f) DVD上的交互多媒體應用;

g) 基於計算機網路的可視化合作實驗室場景應用;

h) 演播室和電視的節目製作。

MPEG系列簡介 (2005-5-30)

MPEG是活動圖象專家組(Moving Picture Coding Experts Group)的簡稱。MPEG成立於1988年1月,是致力於研究、開發數字壓縮標准,以保證活 動圖象質量的前提下,壓縮傳輸碼率的組織。MPEG的第一次會議在1988年5月召開,有25位音頻、視頻編碼壓縮方面的專家參加。現在MPEG已經成為每年召開3次例行大會(在3月、7月和11月),有來自大約20個國家200多家公司的350名專家參與的組織。MPEG所開發指的標准被國際標准組織(ISO)和國際電工委員會(IEC)批准為國際標准,形成MPEG系列。
MPEG-1

MPEG-1在1989年7月開始研究,1992年被ISO/IEC批准為正式標准,正式標准編號是ISO/IEC11172,MPEG-1規定了在數字存儲介質中實現對活動圖像和聲音的壓縮編碼,編碼碼率最高為每秒1.5兆比特。傳輸速率為1.5Mbits/s,每秒播放30幀,具有CD音質,質量級別基本與VHS(廣播級錄像帶)相當。MPEG的編碼速率最高可達4-5 Mbit/s,但隨著速率的提高,其解碼後的圖像質量有所降低。音頻壓縮格式就是大家熟悉的MP3格式,這種MP3格式規定了與視頻壓縮相分離的音頻壓縮方法 。應用MPEG-1技術最成功的產品非VCD莫屬了,VCD作為價格低廉的影像播放設備,得到廣泛的應用和普及。MPEG-1被用於數字電話網路上的視頻傳輸,如非對稱數字用戶線路(ADSL),視頻點播(VOD),以及教育網路等。

MPEG-2

MPEG-2在1991年7月開始研究,是針對標准數字電視和高清晰度電視在各種應用下的壓縮方案和系統層的詳細規定,1992年被ISO/IEC批准為正式標准,正式標准編號是ISO/IEC13818。MPEG-2不是MPEG-1的簡單升級,MPEG-2在系統和傳送方面作了更加詳細的規定和進一步的完善。MPEG-2能夠提供廣播級的視像和CD級的音質。MPEG-2的音頻編碼可提供左右中及兩個環繞聲道,以及一個加重低音聲道和多達七個伴音聲道。MPEG-2的另一特點是,可提供一個較廣范圍的可變壓縮比,以適應不同的畫面質量、存儲容量以及帶寬的要求。MPEG-2特別適用於廣播級的數字電視的編碼和傳送,被認定為SDTV和HDTV的編碼標准。MPEG-2還專門規定了多路節目的復用分接方式。此外,MPEG-2還兼顧了與ATM信元的適配問題。

MPEG-2標准目前分為9個部分,其中前6部分統稱為ISO/IEC13818國際標准。各部分的內容描述如下:

第一部分-ISO/IEC13818-1,System:系統,描述多個視頻,音頻和數據基本碼流合成傳輸碼流和節目碼流的方式。

第二部分-ISO/IEC13818-2,Video:視頻,描述視頻編碼方法。

第三部分-ISO/IEC13818-3,Audio:音頻,描述與MPEG-1音頻標准反向兼容的音頻編碼方法。

第四部分-ISO/IEC13818-4,Compliance:符合測試,描述測試一個編碼碼流是否符合MPEG-2碼流的方法。

第五部分-ISO/IEC13818-5,Software:軟體,描述了MPEG-2標準的第一、二、三部分的軟體實現方法。

第六部分-ISO/IEC13818-6,DSM-CC:數字存儲媒體-命令與控制,描述互動式多媒體網路中伺服器與用戶間的會話信令集。

第七部分規定了不與MPEG-1多通道音頻編碼反向兼容。�

第八部分原計劃用於10bit視頻抽樣編碼,已停用。�

第九部分規定了傳送碼流的實時。

MPEG-2技術就是實現DVD的標准技術,用於為廣播、有線電視網、電纜網路以及衛星直播提供廣播級的數字視頻。

MPEG-3

由於MPEG-2的出色性能表現,已能適用於HDTV(高清晰度電視),使得原打算為HDTV設計的MPEG-3,還沒出世就被拋棄了。

MPEG-4

MPEG-4在1995年7月開始研究,1998年11月被ISO/IEC批准為正式標准,正式標准編號是ISO/IEC14496,它不僅針對一定比特率下的視頻、音頻編碼,更加註重多媒體系統的交互性和靈活性。這個標准主要應用於視像電話、視像電子郵件等,對傳輸速率要求較低,在4800-6400bits/s之間,解析度為176*144。MPEG-4利用很窄的帶寬,通過幀重建技術、數據壓縮,以求用最少的數據獲得最佳的圖像質量。 利用MPEG-4的高壓縮率和高的圖像還原質量可以把DVD裡面的MPEG-2視頻文件轉換為體積更小的視頻文件。經過這樣處理,圖像的視頻質量下降不大但體積卻可縮小幾倍,可以很方便地用CD-ROM來保存DVD上面的節目。另外,MPEG-4在家庭攝影錄像、網路實時影像播放也大有用武之地。

MPEG-7

MPEG-7(它的由來是1+2+4=7, 因為沒有MPEG-3、MPEG-5、MPEG-6)於1996年10月開始研究。確切來講,MPEG-7並不是一種壓縮編碼方法,其正規的名字叫做'多媒體內容描述介面,其目的是生成一種用來描述多媒體內容的標准,這個標准將對信息含義的解釋提供一定的自由度,可以被傳送給設備和電腦程序,或者被設備或電腦程序查取。MPEG-7並不針對某個具體的應用,而是針對被MPEG-7標准化了的圖象元素,這些元素將支持盡可能多的各種應用。建立MPEG-7標準的出發點是依靠眾多的參數對圖象與聲音實現分類,並對它們的資料庫實現查詢,就象我們今天查詢文本資料庫那樣。可應用於數字圖書館,例如圖象編目、音樂詞典等;多媒體查詢服務,如電話號碼簿等;廣播媒體選擇,如廣播與電視頻道選取;多媒體編輯,如個性化的電子新聞服務、媒體創作等。

MPEG-21

MPEG在1999年10月的MPEG會議上提出了「多媒體框架」的概念,同年的12月的MPEG會議確定了MPEG-21的正式名稱是「多媒體框架」或「數字視聽框架」,它以將標准集成起來支持協調的技術以管理多媒體商務為目標,目的就是理解如何將不同的技術和標准結合在一起需要什麼新的標准以及完成不同標準的結合工作。

在數字化趨勢越來越明顯的今天,MPEG的專家們會帶給我們新的MPEG系列,解決在數字化的道路上的不斷出現的問題。

3. vscodec語言怎麼不能在外部運行直接退出

1 VSCode語言在外部運行時不能直接退出。

2 這可能是因為程序中存在一些問題,導致程序運行時出現了錯誤,而程序沒有處理這些橘廳錯誤,直接退出了。

3 可以通過調試程序,查找並解決錯誤,圓型隱使程序能夠正常運行。
同時,也可以學習租正VSCode的調試功能,幫助自己更好地進行編程開發。

4. C語言實現 fmp4格式視頻編碼

1、選定轉碼格式,先把導入格式工廠
2、打開輸出設置,所有的設置都在這裡面
3、編碼在最上方那裡,你可以選擇各種編碼格式
4、同時也可以修改解析度和碼率,甚至的寬高比

5. 考C語言中解碼是什麼意思

解碼一般是時多媒體術語,聲音、視頻、圖片等文件都必須經過編碼成二進制代碼才能存儲,解碼就是用播放器(或其他軟體)對編碼的二進制代碼進行解碼,讓二進制代碼恢復成原始的視頻、圖片和聲音,這樣你才能看到視頻或圖片,聽到聲音。

6. 編程里的c語言,c++,jave,php都有什麼區別,各自又代表了什麼

Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平台(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於個人PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。在全球雲計算和移動互聯網的產業環境下,Java更具備了顯著優勢和廣闊前景。
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。
C++歷史悠久,更適合底層開發,它同樣用途極廣,理論上也是什麼都可以做,但用它編寫代碼需要比java更長的開發周期,所以一般用於游戲、視頻解碼、驅動程序、黑客工具等對響應速度要求較高的操作。

PHP,是英文超文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內嵌式的語言,是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛地運用。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

7. 監控視頻壓縮編解碼的介紹

(一)、M-JPEG
M-JPEG(Motion- Join Photographic Experts Group)技術即運動靜止圖像(或逐幀)壓縮技術,廣泛應用於非線性編輯領域可精確到幀編輯和多層圖像處理,把運動的視頻序列作為連續的靜止圖像來處理,這種壓縮方式單獨完整地壓縮每一幀,在編輯過程中可隨機存儲每一幀,可進行精確到幀的編輯,此外M-JPEG的壓縮和解壓縮是對稱的,可由相同的硬體和軟體實現。但M-JPEG只對幀內的空間冗餘進行壓縮。不對幀間的時間冗餘進行壓縮,故壓縮效率不高。採用M-JPEG數字壓縮格式,當壓縮比7:1時,可提供相當於Betecam SP質量圖像的節目。
JPEG標准所根據的演算法是基於DCT(離散餘弦變換)和可變長編碼。JPEG的關鍵技術有變換編碼、量化、差分編碼、運動補償、霍夫曼編碼和遊程編碼等
M-JPEG的優點是:可以很容易做到精確到幀的編輯、設備比較成熟。缺點是壓縮效率不高。
此外,M-JPEG這種壓縮方式並不是一個完全統一的壓縮標准,不同廠家的編解碼器和存儲方式並沒有統一的規定格式。這也就是說,每個型號的視頻伺服器或編碼板有自己的M-JPEG版本,所以在伺服器之間的數據傳輸、非線性製作網路向伺服器的數據傳輸都根本是不可能的。
(二)、MPEG系列標准
MPEG是活動圖像專家組(Moving Picture Exports Group)的縮寫,於1988年成立,是為數字視/音頻制定壓縮標準的專家組,目前已擁有300多名成員,包括IBM、SUN、BBC、NEC、INTEL、AT&T等世界知名公司。MPEG組織最初得到的授權是制定用於「活動圖像」編碼的各種標准,隨後擴充為「及其伴隨的音頻」及其組合編碼。後來針對不同的應用需求,解除了「用於數字存儲媒體」的限制,成為現在制定「活動圖像和音頻編碼」標準的組織。MPEG組織制定的各個標准都有不同的目標和應用,目前已提出MPEG-1、MPEG-2、MPEG-4、MPEG-7和MPEG-21標准。
1.MPEG-1標准
MPEG-1標准於1993年8月公布,用於傳輸1.5Mbps數據傳輸率的數字存儲媒體運動圖像及其伴音的編碼。該標准包括五個部分:
第一部分說明了如何根據第二部分(視頻)以及第三部分(音頻)的規定,對音頻和視頻進行復合編碼。第四部分說明了檢驗解碼器或編碼器的輸出比特流符合前三部分規定的過程。第五部分是一個用完整的C語言實現的編碼和解碼器。
該標准從頒布的那一刻起,MPEG-1取得一連串的成功,如VCD和MP3的大量使用,Windows95以後的版本都帶有一個MPEG-1軟體解碼器,可攜式MPEG-1攝像機等等。
2.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的編碼圖像被分為三類,分別稱為I幀,P幀和B幀。
I幀圖像採用幀內編碼方式,即只利用了單幀圖像內的空間相關性,而沒有利用時間相關性。P幀和B幀圖像採用幀間編碼方式,即同時利用了空間和時間上的相關性。P幀圖像只採用前向時間預測,可以提高壓縮效率和圖像質量。P幀圖像中可以包含幀內編碼的部分,即P幀中的每一個宏塊可以是前向預測,也可以是幀內編碼。B幀圖像採用雙向時間預測,可以大大提高壓縮倍數。
MPEG-2的編碼碼流分為六個層次。好穗為更好地表示編碼數據,MPEG-2用句法規定了一個層次性結構。它叢好分為六層,自上到下分別是:圖像序列層、圖像組(GOP)、圖像、宏塊條、宏塊、塊。
MPEG-2標准在廣播電視領域中的主要應用如下:
(1)視音頻資料的保存
一直以來,電視節目、音像資料等都是用磁帶保存的。這種方式有很多弊端:易損,佔地大,成本高,難於重新使用。更重要的是難以長期保存,難以查找、難以共享。隨著計算機技術和視頻壓縮技術的發展,高速寬頻計算機網路以及大容量數據存儲系統給電視台節目的網路化存儲、查詢、共享、交流提供了可能。
採用MPEG-2壓縮編碼的DVD視盤,給資料保存帶來了新的希望。電視節目、音像資料等可通過MPEG-2編碼系統編碼,保存到低成本的CD-R光碟或高容量的可擦寫DVD-RAM上,也可利用DVD編著軟體(如Daikin Scenarist NT、Spruce DVDMaestro等)製作成標準的DVD視盤,既可節約開支,也可節省存放空間。
(2)電視節目的非線性編輯系統及其網路
在非線性編輯系統中,節目素材是以數字壓縮方式存儲、製作和播出的, 視頻壓縮技術是非線性編輯系統的技術基礎。目前主要有M-JPEG和MPEG-2兩種數字壓縮格式。
M-JPEG技術即運動靜止圖像(或逐幀)壓縮技術,可進行精確到幀的編輯,但壓縮效率不高。
MPEG-2採用幀間壓縮的方式,只需進行I幀的幀內壓縮處理,B幀和P幀通過偵測獲得,因此 ,傳輸和運算的數據大多由幀之間的時間相關性得到,相對來說,數據量小,可以實現較高的壓縮比。隨著逐幀編輯問題的解決,MPEG-2將廣泛應用於非線性編輯系統,並大大地降低編輯成本,同時MPEG-2的解壓縮是標準的,不同廠家設計的壓縮器件壓縮的數據可由其他廠家設計解壓縮器來解壓縮,這一點保證了各廠家的設備之間能完全兼容。
由於採用MPEG-2 IBP視頻壓縮技術,數據量成倍減少,降低了存儲成本,提高了數據傳輸速度,減少了對計算機匯流排和網路帶寬的壓力,可採用純乙太網組建非線性編輯網路系統已成為可能,而在目前乙太網是最為成熟的網路,系統管理比較完善,價格也比較低廉。
基於MPEG-2的非線性編輯系統及非線性編輯網路將成為未來的發展方向。
(3)衛星傳輸
MPEG-2已經通過ISO認可,並在廣播領域獲得廣泛的應用,如數字衛星視頻廣播(DVB-S)、DVD視盤和視頻會議等。目前,全球有數以千萬計的DVB-S用戶,DVB-S信號採用MPEG-2壓縮格式編碼,通過衛星或微波進行傳輸,在用戶端經MPEG-2衛星接收解碼器解碼,以供用戶觀看。此外,採用MPEG-2壓縮編碼技術,還可以進行遠程電視新聞或節目的傳輸和交流。
(4)電視節目的播出
在整個電視技術中播出是一個承上啟下的環節,對播出系統進行數字化改造是非常必要的,其中最關鍵一步就是構建硬碟播出系統。MPEG-2硬碟自動播出系統因編播簡便、儲存容量大、視頻指標高等優點,而為人們所青睞。但以往MPEG-2播出設備因非常昂貴,而只有少量使用。隨著MPEG-2技術的發展和相關產品成本的下降,MPEG-2硬碟自動系統播出可望得到普及。
3.MPEG-4標准
運動圖像專家組MPEG 於1999年2月正式公布了MPEG-4(ISO/IEC14496)標准第一版本。同年年底MPEG-4第二版亦告底定,且於2000年年初正式成為國際標准。
MPEG-4與MPEG-1和MPEG-2有很大的不同。MPEG-4不只是具體壓縮演算法,它是針對數字電視、互動式繪圖應用(影音合成內容)、互動式多媒體(WWW、資料擷取與分散)等整合及壓縮技術的需求而制定的國際標准。MPEG-4標准將眾多的多媒體應用集成於一個完整的框架內,旨在為多媒體通信及應用環境提供標準的演算法及工具,從而建立起一種能被多媒體傳輸、存儲、檢索等應用領域普遍採用的統一數據格式。
MPEG-4的編碼理念是:MPEG-4標准同以前標準的最顯著的差別在於它是採用基於對象的編碼理念,即在編碼時將一幅景物分成若干在時間和空間上相互聯系的視頻音頻對象,分別編碼後,再經過復用傳輸到接收端,然後再對不同的對象分別解碼,從而組合成所需要的視頻和音頻。這樣既方便我們對不同的對象採用不同的編碼方法和表示方法,又有利於不同數據類型間的融合,並且這樣也可以方便的實現對於各種對象的操作及編輯。例如,我們可以將一個卡通人物放在真實的場景中,或者將真人置於一個虛擬的演播室里,還可以在互聯網上方便的實現交互,根據自己的需要有選擇的組合各種視頻音頻以及圖形文本對象。
MPEG-4系統的一般框架是:對自然或合成的視聽內容的表示;對視聽內容數據流的管理,如多點、同步、緩沖管理等;對靈活性的支持和對系統不同部分的配置。
與MPEG-1、MPEG-2相比,MPEG-4具有如下獨特的優點:
(1) 基於內容的交互性
MPEG-4提供了基於內容的多媒體數據訪問工具,如索引、超級鏈接、上下載、刪除等。利用這些工具,用戶可以方便地從多媒體資料庫中有選擇地獲取自己所需的與對象有關的內容,並提供了內容的操作和位流編輯功能,可應用於互動式家庭購物,淡入淡出的數字化效果等。MPEG-4提供了高效的自然或合成的多媒體數據編碼方法。它可以把自然場景或對象組合起來成為合成的多媒體數據。
(2)高效的壓縮性
MPEG-4基於更高的編碼效率。同已有的或即將形成的其它標准相比,在相同的比特率下,它基於更高的視覺聽覺質量,這就使得在低帶寬的信道上傳送視頻、音頻成為可能。同時MPEG-4還能對同時發生的數據流進行編碼。一個場景的多視角或多聲道數據流可以高效、同步地合成為最終數據流。這可用於虛擬三維游戲、三維電影、飛行模擬練習等
(3)通用的訪問性
MPEG-4提供了易出錯環境的魯棒性,來保證其在許多無線和有線網路以及存儲介質中的應用,此外,MPEG-4還支持基於內容的的可分級性,即把內容、質量、復雜性分成許多小塊來滿足不同用戶的不同需求,支持具有不同帶寬,不同存儲容量的傳輸信道和接收端。
這些特點無疑會加速多媒體應用的發展,從中受益的應用領域有:網際網路多媒體應用;廣播電視;互動式視頻游戲;實時可視通信;互動式存儲媒體應用;演播室技術及電視後期製作;採用面部動畫技術的虛擬會議;多媒體郵件;移動通信條件下的多媒體應用;遠程視頻監控;通過ATM網路等進行的遠程資料庫業務等。MPEG-4主要應用如下:
(1)應用於網際網路視音頻廣播
由於上網人數與日俱增,傳統電視廣播的觀眾逐漸減少,隨之而來的便是廣告收入的減少,所以現在的固定式電視廣播最終將轉向基於TCP/IP的網際網路廣播,觀眾的收看方式也由簡單的遙控器選擇頻道轉為網上視頻點播。視頻點播的概念不是先把節目下載到硬碟,然後再播放,而是流媒體視頻(streaming video),點擊即觀看,邊傳輸邊播放。
現在網際網路中播放視音頻的有:Real Networks公司的 Real Media,微軟公司的 Windows Media,蘋果公司的 QuickTime,它們定義的視音頻格式互不兼容,有可能導致媒體流中難以控制的混亂,而MPEG-4為網際網路視頻應用提供了一系列的標准工具,使視音頻碼流具有規范一致性。因此在網際網路播放視音頻採用MPEG-4,應該說是一個安全的選擇。
(2)應用於無線通信
MPEG-4高效的碼率壓縮,交互和分級特性尤其適合於在窄帶移動網上實現多媒體通信,未來的手機將變成多媒體移動接收機,不僅可以打移動電視電話、移動上網,還可以移動接收多媒體廣播和收看電視。
(3)應用於靜止圖像壓縮
靜止圖像(圖片)在網際網路中大量使用,現在網上的圖片壓縮多採用JPEG技術。MPEG-4中的靜止圖像(紋理)壓縮是基於小波變換的,在同樣質量條件下,壓縮後的文件大小約是JPEG壓縮文件的十分之一。把網際網路上使用的JPEG圖片轉換成MPEG-4格式,可以大幅度提高圖片在網路中的傳輸速度。
(4)應用於電視電話
傳統用於窄帶電視電話業務的壓縮編碼標准,如H261,採用幀內壓縮、幀間壓縮、減少象素和抽幀等辦法來降低碼率,但編碼效率和圖像質量都難以令人滿意。MPEG-4的壓縮編碼可以做到以極低碼率傳送質量可以接受的聲像信號,使電視電話業務可以在窄帶的公用電話網上實現。
(5)應用於計算機圖形、動畫與模擬
MPEG-4特殊的編碼方式和強大的交互能力,使得基於MPEG-4的計算機圖形和動畫可以從各種來源的多媒體資料庫中獲取素材,並實時組合出所需要的結果。因而未來的計算機圖形可以在MPEG-4語法所允許的范圍內向所希望的方向無限發展,產生出今天無法想像的動畫及模擬效果。
(6)應用於電子游戲
MPEG-4可以進行自然圖像與聲音同人工合成的圖像與聲音的混合編碼,在編碼方式上具有前所未有的靈活性,並且能及時從各種來源的多媒體資料庫中調用素材。這可以在將來產生象電影一樣的電子游戲,實現極高自由度的互動式操作。
(三)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板。2003年3月正式發布。
H.264和以前的標准一樣,也是DPCM加變換編碼的混合編碼模式。但它採用回歸基本的簡潔設計,不用眾多的選項,獲得比H.263++好得多的壓縮性能;加強了對各種信道的適應能力,採用網路友好的結構和語法,有利於對誤碼和丟包的處理;應用目標范圍較寬,以滿足不同速率、不同解析度以及不同傳輸(存儲)場合的需求;它的基本系統是開放的,使用無需版權。
在技術上,H.264標准中有多個閃光之處,如統一的VLC符號編碼,高精度、多模式的位移估計,基於4×4塊的整數變換、分層的編碼語法等。這些措施使得H.264演算法具有很的高編碼效率,在相同的重建圖像質量下,能夠比H.263節約50%左右的碼率。H.264的碼流結構網路適應性強,增加了差錯恢復能力,能夠很好地適應IP和無線網路的應用。 H.264的演算法在概念上可以分為兩層:視頻編碼層(VCL:Video Coding Layer)負責高效的視頻內容表示,網路提取層(NAL:Network Abstraction Layer)負責以網路所要求的恰當的方式對數據進行打包和傳送。在VCL和NAL之間定義了一個基於分組方式的介面,打包和相應的信令屬於NAL的一部分。這樣,高編碼效率和網路友好性的任務分別由VCL和NAL來完成。
VCL層包括基於塊的運動補償混合編碼和一些新特性。與前面的視頻編碼標准一樣,H.264沒有把前處理和後處理等功能包括在草案中,這樣可以增加標準的靈活性。
NAL負責使用下層網路的分段格式來封裝數據,包括組幀、邏輯信道的信令、定時信息的利用或序列結束信號等。例如,NAL支持視頻在電路交換信道上的傳輸格式,支持視頻在Internet上利用RTP/UDP/IP傳輸的格式。NAL包括自己的頭部信息、段結構信息和實際載荷信息,即上層的VCL數據。(如果採用數據分割技術,數據可能由幾個部分組成)。 H.264支持1/4或1/8像素精度的運動矢量。在1/4像素精度時可使用6抽頭濾波器來減少高頻雜訊,對於1/8像素精度的運動矢量,可使用更為復雜的8抽頭的濾波器。在進行運動估計時,編碼器還可選擇增強內插濾波器來提高預測的效果。
在H.264的運動預測中,一個宏塊(MB)可以按圖2被分為不同的子塊,形成7種不同模式的塊尺寸。這種多模式的靈活和細致的劃分,更切合圖像中實際運動物體的形狀,大大提高了運動估計的精確程度。在這種方式下,在每個宏塊中可以包含有1、2、4、8或16個運動矢量。
在H.264中,允許編碼器使用多於一幀的先前幀用於運動估計,這就是所謂的多幀參考技術。例如2幀或3幀剛剛編碼好的參考幀,編碼器將選擇對每個目標宏塊能給出更好的預測幀,並為每一宏塊指示是哪一幀被用於預測。 H.264與先前的標准相似,對殘差採用基於塊的變換編碼,但變換是整數操作而不是實數運算,其過程和DCT基本相似。這種方法的優點在於:在編碼器中和解碼器中允許精度相同的變換和反變換,便於使用簡單的定點運算方式。也就是說,這里沒有反變換誤差。 變換的單位是4×4塊,而不是以往常用的8×8塊。由於用於變換塊的尺寸縮小,運動物體的劃分更精確,這樣,不但變換計算量比較小,而且在運動物體邊緣處的銜接誤差也大為減小。為了使小尺寸塊的變換方式對圖像中較大面積的平滑區域不產生塊之間的灰度差異,可對幀內宏塊亮度數據的16個4×4塊的DC系數(每個小塊一個,共16個)進行第二次4×4塊的變換,對色度數據的4個4×4塊的DC系數(每個小塊一個,共4個)進行2×2塊的變換。
H.264為了提高碼率控制的能力,量化步長的變化的幅度控制在12.5%左右,而不是以不變的增幅變化。變換系數幅度的歸一化被放在反量化過程中處理以減少計算的復雜性。為了強調彩色的逼真性,對色度系數採用了較小量化步長。 在先前的H.26x系列和MPEG-x系列標准中,都是採用的幀間預測的方式。在H.264中,當編碼Intra圖像時可用幀內預測。對於每個4×4塊(除了邊緣塊特別處置以外),每個像素都可用17個最接近的先前已編碼的像素的不同加權和(有的權值可為0)來預測,即此像素所在塊的左上角的17個像素。顯然,這種幀內預測不是在時間上,而是在空間域上進行的預測編碼演算法,可以除去相鄰塊之間的空間冗餘度,取得更為有效的壓縮。
如圖4所示,4×4方塊中a、b、...、p為16 個待預測的像素點,而A、B、...、P是已編碼的像素。如m點的值可以由(J+2K+L+2)/ 4 式來預測,也可以由(A+B+C+D+I+J+K+L)/ 8 式來預測,等等。按照所選取的預測參考的點不同,亮度共有9類不同的模式,但色度的幀內預測只有4類模式。 H.264 草案中包含了用於差錯消除的工具,便於壓縮視頻在誤碼、丟包多發環境中傳輸,如移動信道或IP信道中傳輸的健壯性。
為了抵禦傳輸差錯,H.264視頻流中的時間同步可以通過採用幀內圖像刷新來完成,空間同步由條結構編碼(slice structured coding)來支持。同時為了便於誤碼以後的再同步,在一幅圖像的視頻數據中還提供了一定的重同步點。另外,幀內宏塊刷新和多參考宏塊允許編碼器在決定宏塊模式的時候不僅可以考慮編碼效率,還可以考慮傳輸信道的特性。
除了利用量化步長的改變來適應信道碼率外,在H.264中,還常利用數據分割的方法來應對信道碼率的變化。從總體上說,數據分割的概念就是在編碼器中生成具有不同優先順序的視頻數據以支持網路中的服務質量QoS。例如採用基於語法的數據分割(syntax-based data partitioning)方法,將每幀數據的按其重要性分為幾部分,這樣允許在緩沖區溢出時丟棄不太重要的信息。還可以採用類似的時間數據分割(temporal data partitioning)方法,通過在P幀和B幀中使用多個參考幀來完成。
在無線通信的應用中,我們可以通過改變每一幀的量化精度或空間/時間解析度來支持無線信道的大比特率變化。可是,在多播的情況下,要求編碼器對變化的各種比特率進行響應是不可能的。因此,不同於MPEG-4中採用的精細分級編碼FGS(Fine Granular Scalability)的方法(效率比較低),H.264採用流切換的SP幀來代替分級編碼。
四、H.264的性能比較
TML-8為H.264的測試模式,用它來對H.264的視頻編碼效率進行比較和測試。測試結果所提供的PSNR已清楚地表明,相對於MPEG-4(ASP:Advanced Simple Profile)和H.263++(HLP:High Latency Profile)的性能,H.264的結果具有明顯的優越性。
H.264的PSNR比MPEG-4(ASP)和H.263++(HLP)明顯要好,在6種速率的對比測試中,H.264的PSNR比MPEG-4(ASP)平均要高2dB,比H.263(HLP)平均要高3dB。6個測試速率及其相關的條件分別為:32 kbit/s速率、10f/s幀率和QCIF格式;64 kbit/s速率、15f/s幀率和QCIF格式;128kbit/s速率、15f/s幀率和CIF格式;256kbit/s速率、15f/s幀率和QCIF格式;512 kbit/s速率、30f/s幀率和CIF格式;1024 kbit/s速率、30f/s幀率和CIF格式。

8. C語言jpg解碼問題(文件讀取)

mgdecmp庫是WINCE 系統提供一改咐個解碼BMP,GIF,PNG,JPG的文件的庫,這個庫的缺陷是兄升不能解出MASK 圖片.具體用法如下:
1.把imgdecmp.h加入工程,imgdecmp.h文件內容如羨殲老下:
/*---------------------------------------------------------------------------*/
*
* (c) Copyright Microsoft Corp. 1997-98 All Rights Reserved
*
* mole: imgdecmp.h
* date:
* author: jaym
*
* purpose:
*
/*---------------------------------------------------------------------------*/
#ifndef __IMGDECMP_H__
#define __IMGDECMP_H__
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
#include "imgrendr.h"
typedef void (CALLBACK *PROGRESSFUNC)(IImageRender *pRender, BOOL bComplete, LPARAM lParam);
typedef DWORD (CALLBACK *GETDATAFUNC)(LPSTR szBuffer, DWORD dwBufferMax, LPARAM lParam);
typedef struct tagDecompressImageInfo {
DWORD dwSize; // Size of this structure
LPBYTE pbBuffer; // Pointer to the buffer to use for data
DWORD dwBufferMax; // Size of the buffer
DWORD dwBufferCurrent; // The amount of data which is current in the buffer
HBITMAP * phBM; // Pointer to the bitmap returned (can be NULL)
IImageRender ** ppImageRender; // Pointer to an IImageRender object (can be NULL)
int iBitDepth; // Bit depth of the output image
LPARAM lParam; // User parameter for callback functions
HDC hdc; // HDC to use for retrieving palettes
int iScale; // Scale factor (1 - 100)
int iMaxWidth; // Maximum width of the output image
int iMaxHeight; // Maxumum height of the output image
GETDATAFUNC pfnGetData; // Callback function to get more data
PROGRESSFUNC pfnImageProgress; // Callback function to notify caller of progress decoding the image
COLORREF crTransparentOverride; // If this color is not (UINT)-1, it will override the
// transparent color in the image with this color. (GIF ONLY)
} DecompressImageInfo;
#define IMGDECOMP_E_NOIMAGE 0x800b0100
COLORREF *
GetHalftonePalette();
COLORREF *
Get332Palette();
HRESULT
DecompressImageIndirect(DecompressImageInfo *pParams);
#ifdef __cplusplus
};
#endif // __cplusplus
#endif // !__IMGDECMP_H__
2.按照下面的方法使用.
HDC hdc = CreateCompatibleDC(NULL);
DecompressImageInfo dii;
BYTE szBuffer[1024] = {0};
HANDLE hFile = INVALID_HANDLE_VALUE;
// Fill in the 'DecompressImageInfo' structure
dii.dwSize = sizeof( DecompressImageInfo ); // Size of this structure
dii.pbBuffer = szBuffer; // Pointer to the buffer to use for data
dii.dwBufferMax = 1024; // Size of the buffer
dii.dwBufferCurrent = 0; // The amount of data which is current in the buffer
dii.phBM = &hBitmap; // Pointer to the bitmap returned (can be NULL)
dii.ppImageRender = NULL; // Pointer to an IImageRender object (can be NULL)
dii.iBitDepth = GetDeviceCaps(hdc,BITSPIXEL); // Bit depth of the output image
dii.lParam = ( LPARAM ) &iCeBMPFile;//hFile; // User parameter for callback functions
dii.hdc = hdc; // HDC to use for retrieving palettes
dii.iScale = 100; // Scale factor (1 - 100)
dii.iMaxWidth = 10000; // Maximum width of the output image
dii.iMaxHeight = 10000; // Maxumum height of the output image
dii.pfnGetData = GetImageData; // Callback function to get image data
dii.pfnImageProgress = ImageProgress; // Callback function to notify caller of progress decoding the image
dii.crTransparentOverride = ( UINT ) -1; // If this color is not (UINT)-1, it will override the
// transparent color in the image with this color. (GIF ONLY)
// Process and decompress the image data
typedef HRESULT (CALLBACK* ULPRET)( DecompressImageInfo* pParams );
HINSTANCE hLib;
ULPRET lpfnDLLProc;
hLib = LoadLibrary ( L"Imgdecmp.dll" );
if ( hLib )
{
lpfnDLLProc = (ULPRET) GetProcAddress ( hLib, L"DecompressImageIndirect" );
hr = (*lpfnDLLProc) ( &dii );
FreeLibrary ( hLib );
}
// Clean up
DeleteDC( hdc );

9. c語言 的功能比較弱,是不是因為C語言的庫比較少

正如樓上所說 c語言只是工具
你說的 c語言庫少,應該是片面理解了
從c語言官方標准來說 c89 c99 這都是 20世紀的東西了(1999年),都是基本庫,到現在都沒有更新了
如果這樣理解 你沒有錯
但是 有很多開源或者收費的庫,可以實現很多的功能
那日常生活來說 暴風影音
openssl 實現的網路數據加密
ffmpeg庫 實現的 視頻解碼
還有 你看到的界面 都是使用的 開源,或者是收費的 界面庫

所以語言沒有強弱之別,只有程序員的功力深淺
補充:我不是做軟體開發的,錯誤之處見諒