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

上傳人:冷*** 文檔編號(hào):22524291 上傳時(shí)間:2021-05-27 格式:DOCX 頁數(shù):3 大小:14.38KB
收藏 版權(quán)申訴 舉報(bào) 下載
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)化》由會(huì)員分享,可在線閱讀,更多相關(guān)《FFmpeg MP3解碼器的研究與優(yōu)化(3頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

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

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

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

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

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

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

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

8、DEC_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解碼器的名稱,注意要與解碼器注冊(cè)函數(shù)中相應(yīng)參數(shù)保持一致;CODEC_TYPE_AUDIO:說明解碼器解碼文件的類型,此處為MP3音頻文件;CODEC_ID_MP3v2.5:

9、對(duì)應(yīng)MP3解碼器的唯一ID,是解碼器的身份標(biāo)識(shí);Decode_init_mp3:對(duì)應(yīng)MP3解碼器的初始化接口;Decode_frame_mp3:對(duì)應(yīng)MP3解碼器的解碼數(shù)據(jù)接口;Decode_close_mp3:對(duì)應(yīng)MP3解碼器的析構(gòu)接口。(2)MP3解碼庫的接口API:Android中的MP3解碼庫函數(shù)接口主要有以下接口:void pvmp3_InitDecoder(tPVMP3DecoderExternal *pExt, void *pMem);MP3解碼庫的初始化接口,負(fù)責(zé)解碼庫基本參數(shù)的初始化以及分配解碼需要的buffer;ERROR_CODE pvmp3_framedecoder(tP

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

11、會(huì)根據(jù)ID來尋找對(duì)應(yīng)的編解碼器。在文件avcodec.h中的enum CodecID中實(shí)現(xiàn)注冊(cè):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)實(shí)現(xiàn)解碼器到解碼庫的接口對(duì)應(yīng):為新添加的MP3解碼庫實(shí)現(xiàn)一個(gè)封裝,封裝后接口為:void* Decodeinit_mp3v2.5(void);void Decoder_exit_mp3v

12、2.5(void* state);int Decode_frame_mp3v2.5(void *s,signed short *samples,const uint8 *buf, int buf_size,int *data_size) ;其中state是一個(gè)封裝層的結(jié)構(gòu)體實(shí)現(xiàn)MP3解碼器與解碼庫的數(shù)據(jù)交互,內(nèi)容如下:struct state_mp3tPVMP3DecoderExternal *mp3decoderdata;unsigned char* pMem;4優(yōu)化結(jié)果對(duì)比為了較為直觀的顯示ffmpegMP3解碼器優(yōu)化前后的不同,本文中找到MPv2.5b版本的不同采樣率的多個(gè)MP3文件測(cè)試

13、,用變量信噪比(Signal to Noise Ratio)顯示優(yōu)化前后區(qū)別,如表1:通過表格1我們可以看出,優(yōu)化后ffmpeg解碼MPv2.5版本的MP3文件信噪比明顯提升,達(dá)到預(yù)期效果。5總結(jié)本文介紹了多媒體編解碼庫ffmpeg,以及MP3文件格式,主要討論了改進(jìn)ffmpeg對(duì)mpv2.5 MP3音頻文件的支持,實(shí)現(xiàn)對(duì)ffmpeg中MP3解碼器的優(yōu)化。優(yōu)化后的ffmpeg MP3解碼器可以清楚、流暢、無失真播放mpv2.5 MP3音頻文件。參考文獻(xiàn):【1】Wikipedia: http:/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的視頻編碼存儲(chǔ)研究與實(shí)現(xiàn),浙江:杭州電子科技大學(xué),2006.

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

相關(guān)資源

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

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

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


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