FFmpeg MP3解碼器的研究與優(yōu)化

上傳人:冷*** 文檔編號:22524291 上傳時間:2021-05-27 格式:DOCX 頁數(shù):3 大?。?4.38KB
收藏 版權(quán)申訴 舉報 下載
FFmpeg MP3解碼器的研究與優(yōu)化_第1頁
第1頁 / 共3頁
FFmpeg MP3解碼器的研究與優(yōu)化_第2頁
第2頁 / 共3頁
FFmpeg MP3解碼器的研究與優(yōu)化_第3頁
第3頁 / 共3頁

最后一頁預(yù)覽完了!喜歡就下載吧,查找使用更方便

0 積分

下載資源

資源描述:

《FFmpeg MP3解碼器的研究與優(yōu)化》由會員分享,可在線閱讀,更多相關(guān)《FFmpeg MP3解碼器的研究與優(yōu)化(3頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、FFmpeg MP3解碼器的研究與優(yōu)化 摘 要: 關(guān)鍵詞: 中圖分類號:TP302.1文獻標(biāo)識碼:A文章編號:FFmpeg是如今多媒體領(lǐng)域用途非常廣泛的一個開源免費跨平臺的視頻和音頻流方案,MP3格式是一種常用的音頻格式。但是ffmpeg對MP3v2.5規(guī)格的MP3音頻文件解碼支持不是很好,在播放時會有明顯失真,而MP3v2.5規(guī)格的MP3多應(yīng)用與低碼率、低采樣率的語音通信。本文介紹了MP3文件格式,以及其解碼流程,主要討論了改進ffmpeg MP3解碼器的方法,對ffmpeg MP3解碼器進行優(yōu)化。中圖分類號:TP801文獻標(biāo)識碼:A文章編號:1.FFmpeg介紹FFmpe

2、g是一個自由軟件,可以執(zhí)行音訊和視訊多種格式的錄影、轉(zhuǎn)檔、串流功能,包含了libavcodec ---這是一個用于多個專案中音訊和視訊的解碼器函式庫,以及 libavformat ---一個音訊與視訊格式轉(zhuǎn)換函式庫【1】。這個項目最初是由Fabrice Bellard發(fā)起的,而現(xiàn)在是由Michael Niedermayer在進行維護。許多FFmpeg的開發(fā)者同時也是MPlayer項目的成員,F(xiàn)Fmpeg在MPlayer項目中是FFmpeg包含了大部分主流格式的音視頻編解碼,以及格式間轉(zhuǎn)換,而且具有很好的可移植性,其主要由以下元件組成:(1)ffmpeg是一個命令列工具,用來對視訊檔案轉(zhuǎn)換格式,

3、也支援對電視卡即時編碼;(2)ffserver是一個 HTTP 多媒體即時廣播串流服務(wù)器,支援時光平移;(3)ffplay是一個簡單的播放器,基于 SDL 與 FFmpeg 函式庫;(4)4libavcodec包含了全部 FFmpeg 音訊/視訊 編解碼函式庫;(5)libavformat包含 demuxers 和 muxer 函式庫;(6)libavutil包含一些工具函式庫;(7)libpostproc對于視訊做前處理的函式庫;(8)libswscale對于影像作縮放的函式庫;FFmpeg結(jié)構(gòu)主要是muxer/demuxer負責(zé)文件的組成/解析,decoder/encoder負責(zé)文件的編解

4、碼,device負責(zé)音視頻的輸出,其解碼結(jié)構(gòu)圖如下:圖1 FFmpeg解碼結(jié)構(gòu)圖2. MP3文件格式解析及解碼流程2.1MP3文件格式解析Moving Picture Experts Group Audio Layer III(MPEG-1 Audio Layer 3,動態(tài)圖像專家壓縮標(biāo)準(zhǔn)音頻層面3),經(jīng)常稱為MP3,是當(dāng)今較流行的一種數(shù)字音頻編碼和有損壓縮格式,它設(shè)計用來大幅度地降低音頻數(shù)據(jù)量,而對于大多數(shù)用戶的聽覺感受來說,重放的音質(zhì)與最初的不壓縮音頻相比沒有明顯的下降。它是在1991年,由位于德國埃爾朗根的研究組織Fraunhofer-Gesellschaft的一組工程師發(fā)明和標(biāo)準(zhǔn)化的【

5、2】。聲音是一個模擬信號,對聲音進行采樣,量化,編碼就會得到PCM數(shù)據(jù),PCM數(shù)據(jù)也就是脈沖編碼調(diào)制音頻數(shù)據(jù),是電腦可以直接播放的原始數(shù)據(jù)。但是在PCM數(shù)據(jù)中含有很多對人類聽覺不重要的數(shù)據(jù),為了節(jié)省存儲空間同時還能保證很好的音效,MP3利用心理聲學(xué)技術(shù)將PCM音頻數(shù)據(jù)中人類不敏感的部分除去并壓縮形成MP3音頻文件。所以說MP3是一種有損壓縮格式【3】。MP3文件是由幀(Frame)構(gòu)成,幀是MP3文件的組成單位,其中每幀都有一個幀頭,長4個字節(jié),包含了MP3文件的版本,采樣率,比特率等屬性信息。MP3文件的版本及其對應(yīng)的采樣率如表格1所示: 表1 mp3文件版本及其對應(yīng)采樣率由上表可以看出,

6、MPv2.5對應(yīng)的采樣率較低,雖然其不是MPEG的標(biāo)準(zhǔn)規(guī)范,但是此版本的MP3文件在語音通話領(lǐng)域應(yīng)用較為廣泛,MP3解碼器有必要做好對應(yīng)的解碼。2.2MP3解碼流程MP3的解碼總體上可分為9個過程【4】:比特流分解,哈夫曼解碼,逆量化處理,立體聲處理,頻譜重排列,抗鋸齒處理,IMDCT變換,子帶合成,PCM輸出。比特流分解也就是將MP3文件以二進制方式打開,根據(jù)MP3格式的定義,依次從MP3文件中讀取頭信息,邊信息,比例因子等信息,這也就是demuxer所要做的工作。哈夫曼編碼是一種無損壓縮編碼,其解碼屬于decoder很重要的一部分。MP3音頻文件的詳細解碼流程如下圖二所示:圖2 MP3解碼

7、流程圖3.改進ffmpeg對MPv2.5的支持3.1 準(zhǔn)備工作MPv2.5雖然不屬于MPEG標(biāo)準(zhǔn),但是廣泛應(yīng)用于低采樣率的語音通信中,ffmpeg中的MP3解碼器,并沒有針對MPv2.5版本的decoder,本文在此另外添加一個decoder來解決失真的問題。谷歌的Android系統(tǒng)中的MP3解碼庫對MPv2.5有很好的支持,本文參考android的MP3解碼器新構(gòu)建一個MP3解碼器到ffmpeg中。3.1 準(zhǔn)備工作(1)FFmpeg中MP3解碼器格式:按照struct AVCodec的定義,本文添加的MP3解碼器格式如下:AVCodec mpv2.5_mp3_decoder ={"mpv2.

8、5_mp3",CODEC_TYPE_AUDIO,CODEC_ID_MP3v2.5,sizeof(MPADecodeContext),Decode_init_mp3,NULL,Decode_close_mp3,Decode_frame_mp3,CODEC_CAP_PARSE_ONLY,.flush= flush,.long_name= NULL_IF_CONFIG_SMALL("MP3 (MPEG audio layer 3)"),};其中各部分含義【5】:"mpv2.5_mp3":MP3解碼器的名稱,注意要與解碼器注冊函數(shù)中相應(yīng)參數(shù)保持一致;CODEC_TYPE_AUDIO:說明解碼器解碼文件

9、的類型,此處為MP3音頻文件;CODEC_ID_MP3v2.5:對應(yīng)MP3解碼器的唯一ID,是解碼器的身份標(biāo)識;Decode_init_mp3:對應(yīng)MP3解碼器的初始化接口;Decode_frame_mp3:對應(yīng)MP3解碼器的解碼數(shù)據(jù)接口;Decode_close_mp3:對應(yīng)MP3解碼器的析構(gòu)接口。 (2)MP3解碼庫的接口API:Android中的MP3解碼庫函數(shù)接口主要有以下接口:void pvmp3_InitDecoder(tPVMP3DecoderExternal *pExt, void *pMem);MP3解碼庫的初始化接口,負責(zé)解碼庫基本參數(shù)的初始化以及分配解碼需要的buffe

10、r;ERROR_CODE pvmp3_framedecoder(tPVMP3DecoderExternal *pExt, void *pMem);MP3解碼庫的解碼接口,負責(zé)解碼輸入的MP3數(shù)據(jù),輸出PCM數(shù)據(jù);3.2 主要步驟(1)注冊解碼器:在文件allcodecs.c中,實現(xiàn)所有ffmpeg支持格式的編解碼器的注冊,因此首先在此文件中實現(xiàn)添加MP3解碼器的注冊。解碼器注冊函數(shù)為:REGISTER_DECODER(MPV2.5_MP3,mpv2.5mp3);此函數(shù)是一個宏定義,實際會調(diào)用函數(shù):void avcodec_register(AVCodec *codec);(2)添加解碼器的ID

11、:編解碼器的ID為編解碼器的身份標(biāo)識,具有唯一性,在ffmpeg中,會根據(jù)ID來尋找對應(yīng)的編解碼器。在文件avcodec.h中的enum CodecID中實現(xiàn)注冊:enum CodecID {CODEC_ID_NONE, /* video codecs */CODEC_ID_MPEG1VIDEO,CODEC_ID_MPEG2VIDEO,……………………/* audio codecs */CODEC_ID_MP2= 0x15000,CODEC_ID_MP3,CODEC_ID_MP3v2.5,…………};(3)實現(xiàn)解碼器到解碼庫的接口對應(yīng):為新添加的MP3解碼庫實現(xiàn)一個封裝,封裝后接口為:voi

12、d* Decodeinit_mp3v2.5(void);void Decoder_exit_mp3v2.5(void* state);int Decode_frame_mp3v2.5(void *s,signed short *samples,const uint8 *buf, int buf_size,int *data_size) ;其中state是一個封裝層的結(jié)構(gòu)體實現(xiàn)MP3解碼器與解碼庫的數(shù)據(jù)交互,內(nèi)容如下:struct state_mp3{tPVMP3DecoderExternal *mp3decoderdata;unsigned char* pMem;};4.優(yōu)化結(jié)果對比為了較為直

13、觀的顯示ffmpegMP3解碼器優(yōu)化前后的不同,本文中找到MPv2.5b版本的不同采樣率的多個MP3文件測試,用變量信噪比(Signal to Noise Ratio)顯示優(yōu)化前后區(qū)別,如表1:通過表格1我們可以看出,優(yōu)化后ffmpeg解碼MPv2.5版本的MP3文件信噪比明顯提升,達到預(yù)期效果。5.總結(jié)本文介紹了多媒體編解碼庫ffmpeg,以及MP3文件格式,主要討論了改進ffmpeg對mpv2.5 MP3音頻文件的支持,實現(xiàn)對ffmpeg中MP3解碼器的優(yōu)化。優(yōu)化后的ffmpeg MP3解碼器可以清楚、流暢、無失真播放mpv2.5 MP3音頻文件。參考文獻:【1】Wikipedia: ht

14、tp://en.wikipedia.org/wiki/Ffmpeg【2】Cervera ,Teresa ,The effect of MPEG audio compression on multidimensional set of voice parameters ,Logopedics Phoniatrics Vocology ,2001.8 ,Vol.26,P.124.【3】林福宗. 多媒體技術(shù)基礎(chǔ),北京:清華大學(xué)出版社,2001.【4】張波. 嵌入式MP3解碼研究與優(yōu)化,上海:上海交通大學(xué),2009.【5】吳張順. 基于ffmpeg的視頻編碼存儲研究與實現(xiàn),浙江:杭州電子科技大學(xué),2006.

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!