ffmpeg mp3解码器的研究与优化

ffmpeg mp3解码器的研究与优化

ID:23307997

大小:67.00 KB

页数:9页

时间:2018-11-06

ffmpeg mp3解码器的研究与优化_第1页
ffmpeg mp3解码器的研究与优化_第2页
ffmpeg mp3解码器的研究与优化_第3页
ffmpeg mp3解码器的研究与优化_第4页
ffmpeg mp3解码器的研究与优化_第5页
资源描述:

《ffmpeg mp3解码器的研究与优化》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、FFmpegMP3解码器的研究与优化关键词:中图分类号:TP302.1文献标识码:A:FFmpeg是如今多媒体领域用途非常广泛的一个开源免费跨平台的视频和音频流方案,MP3格式是一种常用的音频格式。但是ffmpeg对MP3v2.5规格的MP3音频文件解码支持不是很好,在播放时会有明显失真,而MP3v2.5规格的MP3多应用与低码率、低采样率的语音通信。本文介绍了MP3文件格式,以及其解码流程,主要讨论了改进ffmpegMP3解码器的方法,对ffmpegMP3解码器进行优化。中图分类号:TP801文献标识码:A:1.FFmpeg介绍FFmpeg是一个自

2、由软件,可以执行音讯和视讯多种格式的录影、转档、串流功能,包含了libavcodec---这是一个用于多个专案中音讯和视讯的解码器函式库,以及libavformat---一个音讯与视讯格式转换函式库[1]。这个项目最初是由FabriceBellard发起的,而现在是由MichaelNiedermayer在进行维护。许多FFmpeg的开发者同时也是MPlayer项目的成员,FFmpeg在MPlayer项目中是FFmpeg包含了大部分主流格式的音视频编解码,以及格式间转换,而且具有很好的可移植性,其主要由以下元件组成:(1)ffmpeg是一个命令列工具,

3、用来对视讯档案转换格式,也支援对电视卡即时编码;(2)ffserver是一个HTTP多媒体即时广播串流服务器,支援时光平移;(3)ffplay是一个简单的播放器,基于SDL与FFmpeg函式库;(4)4libavcodec包含了全部FFmpeg音讯/视讯编解码函式库;(5)libavformat包含demuxers和muxer函式库;(6)libavutil包含一些工具函式库;(7)libpostproc对于视讯做前处理的函式库;(8)libspeg结构主要是muxer/demuxer负责文件的组成/解析,decoder/encoder负责文件的编解

4、码,device负责音视频的输出,其解码结构图如下:图1FFmpeg解码结构图2.MP3文件格式解析及解码流程2.1MP3文件格式解析MovingPictureExpertsGroupAudioLayerIII(MPEG-1AudioLayer3,动态图像专家压缩标准音频层面3),经常称为MP3,是当今较流行的一种数字音频编码和有损压缩格式,它设计用来大幅度地降低音频数据量,而对于大多数用户的听觉感受来说,重放的音质与最初的不压缩音频相比没有明显的下降。它是在1991年,由位于德国埃尔朗根的研究组织Fraunhofer-Gesellschaft的一组

5、工程师发明和标准化的[2]。声音是一个模拟信号,对声音进行采样,量化,编码就会得到PCM数据,PCM数据也就是脉冲编码调制音频数据,是电脑可以直接播放的原始数据。但是在PCM数据中含有很多对人类听觉不重要的数据,为了节省存储空间同时还能保证很好的音效,MP3利用心理声学技术将PCM音频数据中人类不敏感的部分除去并压缩形成MP3音频文件。所以说MP3是一种有损压缩格式[3]。MP3文件是由帧(Frame)构成,帧是MP3文件的组成单位,其中每帧都有一个帧头,长4个字节,包含了MP3文件的版本,采样率,比特率等属性信息。MP3文件的版本及其对应的采样率如

6、表格1所示:表1mp3文件版本及其对应采样率由上表可以看出,MPv2.5对应的采样率较低,虽然其不是MPEG的标准规范,但是此版本的MP3文件在语音通话领域应用较为广泛,MP3解码器有必要做好对应的解码。2.2MP3解码流程MP3的解码总体上可分为9个过程[4]:比特流分解,哈夫曼解码,逆量化处理,立体声处理,频谱重排列,抗锯齿处理,IMDCT变换,子带合成,PCM输出。比特流分解也就是将MP3文件以二进制方式打开,根据MP3格式的定义,依次从MP3文件中读取头信息,边信息,比例因子等信息,这也就是demuxer所要做的工作。哈夫曼编码是一种无损压缩

7、编码,其解码属于decoder很重要的一部分。MP3音频文件的详细解码流程如下图二所示:图2MP3解码流程图3.改进ffmpeg对MPv2.5的支持3.1准备工作MPv2.5虽然不属于MPEG标准,但是广泛应用于低采样率的语音通信中,ffmpeg中的MP3解码器,并没有针对MPv2.5版本的decoder,本文在此另外添加一个decoder来解决失真的问题。谷歌的Android系统中的MP3解码库对MPv2.5有很好的支持,本文参考android的MP3解码器新构建一个MP3解码器到ffmpeg中。3.1准备工作(1)FFmpeg中MP3解码器格式:

8、按照structAVCodec的定义,本文添加的MP3解码器格式如下:AVCodecmpv2.5_mp3_d

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。