【正文】
DirectShow 音視頻編碼解碼研究 –11– 4.解碼器模型 由此可知音視頻解碼模塊工作原理:文件系統(tǒng)作為 Source Filter,采用 Zlib 技術(shù)的解碼算法作為 Transform Filter,聲卡、顯卡作為 Render Filter。 圖 DirectShow 工作原理圖 3.編碼器模型 由此可知音視頻編碼模塊工作原理:音視頻采集 卡作為 Source Filter,采用 Zlib 技術(shù)的編碼算法作為 Transform Filter,文件系統(tǒng)作為 Render Filter。過濾器前后相連,連接點(diǎn)也是 COM 對(duì)象,被稱為針腳( Pin)。這一整套過濾器集合被稱為過濾器圖 (Filter Graph)。 DirectShow 是基于 COM(組件對(duì)象模型 )規(guī)范的。 DirectShow 應(yīng)用程序中主要包含以下 5 種過濾器:源過濾器( Source Filter)、轉(zhuǎn)換過濾器( Transform Filter)、呈現(xiàn)過濾器( Render Filter),分別負(fù)責(zé)獲取數(shù)據(jù)流、處理數(shù)據(jù)流和播放數(shù)據(jù)流。 DirectShow 提供了很多標(biāo)準(zhǔn)過濾器,用戶可以直接使用。 工作模型 DirectShow 使用模塊化的體系結(jié)構(gòu),最主要的組件是過濾器( Filter)把一系列過濾器組合起來形成 DirectShow 應(yīng)用程序??梢詫?shí)現(xiàn)高質(zhì)量的音視頻采集、編輯、編碼、解碼、格式轉(zhuǎn)換、播放。它是微軟公司對(duì)早先 Windows 視頻科技的一次更新 [9]。這個(gè)算法使用很少的系統(tǒng)資源,對(duì)各種數(shù)據(jù)提供很好的壓縮效果 [7]。 zlib 使用抽象化的 DEFLATE 算法,最初是為 libpng函式庫所寫的,后來普遍為許多軟件所使用 。 音視頻編碼解碼研究 –9– 三 、 音 視頻 編碼解碼實(shí)現(xiàn) 經(jīng)過以上研究, 本文將 探索新的 一種音視頻編碼解碼, 對(duì)音視頻編碼原理進(jìn)行驗(yàn)證,并 加深對(duì)音視頻編碼解碼原理的理解。 ( 八 )音頻解碼原理 音頻解碼一般是音頻編碼的逆過程,它將對(duì)應(yīng)編碼格式的數(shù)碼流解碼成 PCM 數(shù)碼流,數(shù)碼流傳送的是的是量化實(shí)際音頻信息而得到的頻率系數(shù),數(shù)碼流的基本單位是同步幀 。最大的閃爍點(diǎn)就是這種格式可以根據(jù)聽眾的帶寬來控制自己的碼率,在保證流暢的前提下盡可能提高音質(zhì)。一般使用 Windows Media Audio 編碼格式的文件以 WMA 作為擴(kuò)展名,一些使用 Windows Media Audio 編碼格式編碼其所有內(nèi)容的純音頻 ASF 文 件也使用 WMA 作為擴(kuò)展名。 音視頻編碼解碼研究 –8– 4. WMA WMA(Windows Media Audio),它是微軟公司推出的與 MP3 格式齊名的一種新的音頻格式。與其他會(huì)造成立體空間感減弱的編碼模型相比,這兩種技術(shù)都可以在保持編碼器的靈活性的同時(shí)而不損害本來的立體聲空間 音 像,而且實(shí)現(xiàn)的復(fù)雜程度比聯(lián)合立體聲方式要低。 3. OGG OggVorbis 的主要算法是利用 MDCT(修飾離散余弦變換 Modified Discrete Cosine Transform)而不是用現(xiàn)在比較時(shí)興的小波( wavelet)技術(shù)。壓縮音樂文件時(shí),人們通常會(huì)說以多大的壓縮比率進(jìn)行壓縮,壓縮比率的單位為 Kbps(千字節(jié) /秒 )。編碼軟件能將代表這類聲音的文件找 出來并加以刪除。 2. MP3 MP3 音樂的 編碼 原理說得簡(jiǎn)單些, 就是將 音頻文件壓縮成 MP3 文件,其實(shí)就是找到并刪除音頻文件中人耳聽不到的聲音。 ( 七 )主流音頻編碼框架 1. WAVE WAV 文件格式是一種由微軟和 IBM 聯(lián)合開發(fā) 的用于音頻數(shù)字存儲(chǔ)的標(biāo)準(zhǔn),它采用RIFF 文件格式結(jié)構(gòu),非常接近于 AIFF 和 IFF 格式。我音視頻編碼解碼研究 –7– 們而習(xí)慣性的把 MP3 列入有損音頻編碼范疇,是相對(duì) PCM 編碼的。在計(jì)算機(jī)應(yīng)用中,能夠達(dá)到最高保真水平的就是 PCM 編碼,被廣泛用 于素材保存及音樂欣賞, CD、 DVD 以及我們常見的 WAV 文件中均有應(yīng)用。 PCM 通過 采樣 、量化、編碼三個(gè)步驟將連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為數(shù)字編碼 [7]。 視頻解碼 地方法一般包括 熵解碼,反量化,反變換,插值,重建,濾波,參考幀插入等 。 ( 四 )視頻解碼原理 視頻解碼就是將編碼后的文件或數(shù)據(jù)流,沒有損失的或者最大限度的還原成原始圖像。 5. Real Media Real Media 是 Real Networks 公司創(chuàng)造出來的一種互聯(lián)網(wǎng)流媒體格式的統(tǒng)稱,它的主要特點(diǎn)是針對(duì)低帶寬應(yīng)用(最低 )進(jìn)行動(dòng)態(tài)(聲音、視頻)媒體傳輸 。 4. QuickTime 視頻編碼有 Sorenson Video Apple MPEG Apple 。 3. 微軟 windows media 視頻編碼有 Mpeg4 v1/v2/v3(基于 MPEG4, DIVX3 的來源)、 Windows Media Video 7/8/9/10。 2. 系列:由 ITU(國(guó)際電傳視訊聯(lián)盟 )主導(dǎo),側(cè)重網(wǎng)絡(luò)傳輸 。 1. MPEG MPEG 由 ISO( 國(guó)際標(biāo)準(zhǔn)組織機(jī)構(gòu) ) 下屬的 MPEG( 運(yùn)動(dòng)圖象專家組 ) 開發(fā) 。 ( 4)子帶編碼 子帶編碼先將先將原圖用數(shù)字濾波器分解成不同頻率的成分的分量,在對(duì)這些分量進(jìn)行亞抽樣,形成子帶 圖像,最后對(duì)不同的子帶圖像分別用與其相匹配的方法進(jìn)行編碼。 ( 2)變化編碼 圖像經(jīng)過正交變換后,能夠?qū)崿F(xiàn)圖像數(shù)據(jù)壓縮的物理本質(zhì)在于經(jīng)過多為坐標(biāo)系的適當(dāng)坐標(biāo)旋轉(zhuǎn)和變換,能夠把散布在各個(gè)坐標(biāo)軸上的原始圖像數(shù)據(jù),在新的坐標(biāo)系中集中到少數(shù)坐標(biāo)軸上,因而有可能用較少的編碼比特?cái)?shù)來表示一副子圖像,實(shí)現(xiàn)圖像的壓縮編碼 。 ( 1)預(yù)測(cè)編碼方法 如果已知圖像一 個(gè)像素離散值,利用其相鄰像素的相關(guān)性,預(yù)測(cè)它下一個(gè)像素(水平方向或垂直方向)的可能性,求其兩者差,再量化、編碼,這種方法稱為預(yù)測(cè)編碼方法簡(jiǎn)稱預(yù)測(cè)法。第二種是為輸入數(shù)據(jù)創(chuàng)建一個(gè)短語字典,如果在當(dāng)前等待進(jìn)行壓縮的數(shù)據(jù)流中發(fā)現(xiàn)字典,則利用該短語在字典中的索引值代替原始數(shù)據(jù)。 ( 3)字典壓縮方法 目前廣泛采用的字典壓縮方法包括兩種類型。 ( 2) Huffman 編碼壓縮 Huffman 編碼是一種長(zhǎng)度不均的、平均碼可以接近信息源 熵 值的一種編碼。 編碼 ( 1)行程編碼( RunLength)技術(shù) 行程編碼是相對(duì)簡(jiǎn)單的一種編碼,是指在一行掃描的像素中,比較相鄰像素的幅度(如亮度)。在這種新的基下,大部分的系數(shù)都接近于零,可以忽略,于是可以將余下的信息存儲(chǔ)在一個(gè)較小的數(shù)據(jù)包中。 ( 3)時(shí)間相關(guān)性:在數(shù)字視頻中,在時(shí)間上相鄰的兩幀圖像的大部分像素值變化很小。 ( 1)空間 相關(guān)性:可以根據(jù)圖像中的某一點(diǎn)的像素值推斷出其相鄰點(diǎn)的像素值。實(shí)際中存在著很多種數(shù)據(jù)相關(guān)性。 任何編碼機(jī)制的目的都是去除數(shù)據(jù)中存在的相關(guān)性。有損編碼機(jī)制的優(yōu)點(diǎn)是可以得到比無損編碼更加高的壓縮比,但是它只能用近似的數(shù)據(jù)代替原始數(shù)據(jù),而這種相似數(shù)據(jù)由市容易被壓縮的。無損編碼通常用于文本文件的壓縮中,其中沒有信息損失的數(shù)據(jù)精確度重建是讓人們關(guān)心的問題。 輸入的符號(hào)可能包括量化的變換系數(shù) , 運(yùn)動(dòng)向量 (對(duì)于每個(gè)運(yùn)動(dòng)補(bǔ)償塊的向量值 x 和 y), 標(biāo)記 (在序列中用來表示重同步位的點(diǎn) ), 頭 (宏塊頭 ,圖象頭 ,序列的頭等 )以及附加信息 (對(duì)于正確解碼來說不重要的信息 )。它對(duì)變換、量化后得到的系數(shù)和運(yùn)動(dòng)信息,進(jìn)行進(jìn)一步的壓縮[3]。這一過程導(dǎo)致精度的降低。目前常用的正交變換有:傅立葉 (Fouries)變換、沃爾什 (Walsh)變換、哈爾 (Haar)變換、斜 (Slant)變換、余弦變換、正弦變換、 KL(KarhunenLoeve)變換等。 變換編碼不是直接對(duì)空域圖像信號(hào)進(jìn)行編碼,而是首先將空域圖像信號(hào)映射變換到另一個(gè)正交 矢量空間(變換域或頻域),產(chǎn)生一批變換系數(shù),然后對(duì)這些變換系數(shù)進(jìn)行編碼處理。 2. 去 幀 域冗余信息 主要使用幀 內(nèi) 編碼技術(shù)和熵編碼技術(shù): 音視頻編碼解碼研究 –3– ( 1) 變換編碼 幀內(nèi)圖像和預(yù)測(cè)差分信號(hào)都有很高的空域冗余信息。 運(yùn)動(dòng)估計(jì)算法是視頻壓縮編碼的核心算法之一。 運(yùn)動(dòng)估計(jì)的基本思想是將圖像序列的每一幀分成許多互不重疊的宏塊,并認(rèn)為宏塊內(nèi)所有象素的位移量都相同,然后對(duì)每個(gè)宏塊到參考幀某一給定特定搜索范圍內(nèi)根據(jù)一定的匹配 準(zhǔn)則找出與當(dāng)前塊最相似的塊,即匹配塊,匹配塊與當(dāng)前塊的相對(duì)位移即為運(yùn)動(dòng)矢量。運(yùn)動(dòng)矢量通過熵編碼進(jìn)行壓縮。這種方法經(jīng)常被視頻壓縮 /視頻編解碼器用來減少視頻序列中的空域冗余。 1. 去時(shí)域冗余信息 使用幀間編碼技術(shù)可去除時(shí)域冗余信息,它包括以下三部分: ( 1) 運(yùn)動(dòng)補(bǔ)償 運(yùn)動(dòng)補(bǔ)償是通過先前的局部圖像來預(yù)測(cè)、補(bǔ)償當(dāng)前的局部圖像,它是減少 幀 序列冗余信息的有效方法。其中冗余信息可分為 幀 域冗余信息和時(shí)域冗余信息。 音視頻編碼解碼研究 –2– 二、 音 視頻編 解 碼原理 (一) 視頻編碼原理 所謂視頻編碼 就是指通過特定的壓縮技術(shù),將某個(gè)視頻格式的文件轉(zhuǎn)換成另一種視頻格式文件的方式。信息壓縮的動(dòng)機(jī)是很明顯的 , 如果能用一種壓縮了的形式來表示信息,將會(huì)有以下幾點(diǎn)好處:節(jié)省存儲(chǔ)空間、節(jié)省 CPU 時(shí)間、節(jié)省 傳輸時(shí)間。 ( 2)一 段 10 秒鐘 的 音頻取樣頻率為 44KHz 的 16 位立體聲 WAV 格式音頻 需要 的空間 ( WAV 格式文件所占容量 (bit) =取樣頻率 量化位數(shù) 聲道 時(shí)間/8 即 44K 16 2 10/8=KB) 。但是從以下事實(shí)仍可以看出,編碼技術(shù)仍有一段路要走。 首先,硬件方面的革新使這些方面發(fā)展成為可能。 在過去的 20 年里,需要存儲(chǔ)、傳輸和處理的信息數(shù)量成指數(shù)級(jí)的增加。為了壓縮音、視頻數(shù)據(jù),出現(xiàn)了各種不同的編碼方法,并都取得了一定成效。 由于音、視頻數(shù)據(jù)量非常大,若未經(jīng)過處理,其存放、網(wǎng)絡(luò)傳輸都存在很大問題。 大量的音視頻數(shù)據(jù)被廣泛使用,如常見的 VCD、 DVD 都是將大量的音、視頻數(shù)據(jù)經(jīng)過處理后供用戶使用的。 Encoding。 關(guān)鍵詞: 音頻 ; 視頻 ; 編碼;解碼 音視頻編碼解碼研究 II The Research on Audio and Video Encoding and Decoding Abstract There are three main coding meaning: the digital simulation signal process, data pression process and data encryption process. This paper studies the range of audio and video Encoding and Decoding. The purpose is to research that basis on the existing of video encoding and decoding, try to be applied to audio and video with nondestructive pressed video encoding and decoding, developed a new kind of encoding and decoding method, in the process of encoding and decoding principle, verify and explore deeper understanding audio and video codec used in real life, the value of bining theory with practice. This paper first to research and summarize the video and audio codec principle, mechanism and mainstream decoding frame, and then based on the principle and new ideas to develop an audio and video codec encoding and decoding method, using VC + +, DirectShow as development t