博客首页 | 排行榜 |

lynn19861207的博客

个人档案
博文分类
MP3解码算法分析(1)——MP3文件解剖  2010-03-28 13:40
 
 

 

1. MP3 编码器(Encoder)常见问题
   - 什么是 MP3 编码器?
     一个 MP3 编码器是一个使用 MP3 编解码算法(压缩/解压)创建 mp3 文件的软件。 大部分编码器只转化一
     个 WAV 文件到 MP3 文件,尽管很多可以转化其他格式,如 WMA, Real Audio, Ogg, 等等。

     只有很小几个独立的编码器,此外的很多软件只是使用 4个主要的编码引擎,很大程度上因为 Fraunhofer
     Gesellschaft 和为 ISO 源提供帮助的几家公司拥有专利权。尽管没有一家公司拥有派他权,MP3软件开发
     商无论使用哪家专利的 MP3 编码器,都必须交付昂贵的许可费。主要的 MP3 编码引擎包括:LAME(非 ISO
     源), BladeEnc, Fraunhofer 和 Real Networks 的 Xing 编码器。

   - MP3 编码器如何工作?
     MP3编码器中包含着 MPEG-Layer 3 下的核心技术。解码程序通过使用一系列的压缩音频的算法和规则。编
     码器智能地发现那些对人耳太高或太低的音频数据,并把他们剔除掉。 它们也能发现那些同时发生的声音
     并试着排除任何能由其它声音“屏蔽掉”或“使其听不到”的声音。

   - 什么好的 MP3 编码器?
     在速度上 Xing 是最快的编码器,但是质量是最差的。要获得较小的文件尺寸,Fraunhofer 的 FastEnc可
     给出最好的质量。LAME是非常好的编码器,并且其一个版本都比上个版本快,BladeEnc 对大尺寸文件质量
     是最好的,但很慢。

2. MP3 文件解剖
   除熟练使用 MP3 编码器的基本选项之外,一般的用户不需要知道 MP3文件内部结构是如何编码的,正如面
   对 JPEG 或 DOC 文件时的情形一样。基于一种病态的好奇,这里给出 MP3 文件的 X 光视图:

   - 帧头(Frame Header)
     以前讲过,MP3文件是由成千上万的“帧 frame”组成,每帧包含一部分(第二部分)有价值的音频数据,以
     供解码器重构音频数据,其前的第一部分就是帧头(Frame Header),它有与其后的数据相关的 32bits的元
     数据组成,参见下图。MP3 头开始于一个11bits的“同步 sync”块,同步块可以让播放器搜索并锁定到第
     一个可用的合法帧,在 MP3 广播中这很有用,它可从播放源中快速移动或跳过 ID3块到一个正常的播放位
     置。但是,简单地发现同步块从理论上讲是不够的,因此头检查是必要的。

   - 锁定数据流
     MP3 的原始设计目标就是它可用于广播,结果就是 MP3 接受器可以在流中任何地方锁定信号变得很重要,
     这就是为什么帧头放在任何一帧数据流的头部,这样当 MP3 接受器“调谐”进数据流时,可以立即锁定信
     号并可立即播放。有趣的是,这个事实造成了可以切割 MPEG文件成小段,且每段都可独立播放。但是不幸
     的是它在 3层(MP3)文件中是不可能的,因为其中帧往往依赖于其它帧,因此你不能随意在音频编辑器中编
     辑你的 MP3 文件。

- 每秒帧数
     正如电影工业有一个标准规定电影中每秒帧数以保证在任何投影机上都能正确显示一样,MP3 标准中也使用
     了一个类似的标准,不管文件的比特率,MPEG-1 文件中一帧 26ms,大致每秒 38fps 帧。 如果比特率高一
     点,帧尺寸就相应大一点,反之亦然。另外,一帧 MP3 中所含的采样数是常数,每帧 1,152 个采样。

     任何给定帧的总尺寸可用下列公式计算:

      FrameSize = 144 * BitRate / (SampleRate + Padding).

     在此,比特率BitRate是以每秒多少比特计算,采样率 SampleRate是原始输入数据的采样率,对齐Padding
     是指该帧的额外数据,例如,如果你用128kbps 来编码,原始采样率44.1kHz, 没有设置对齐位,每帧总的
     尺寸为 417.96 bytes:

      144 * 128000 / (44100 + 0) = 417.96 bytes.

     记住,以上描述的每帧包含头信息,容易想到头信息是否会产生冗余。但是头仅占32bits长,在38fps下,
     意味着每秒总共才1,223bits 的数据,而文件是以 128kbps 编码,却包含着 128,000bits每秒的数据,实
     在只是个零头 1/100。

3. 关于“有损压缩”
   压缩格式,无论它们应用于音频、视频还是图象, 甚至随机的文件集合,都分为“无损”和“有损”,其区
   别也很简单,无损时,解压文件和原始文件完全一样,而有损压缩则不然。 无损压缩格式的一个很好示例就
   是到处使用的 .zip 档案压缩方法。当你把上个月的压缩档案 zip 文件解开时,一个比特的改变都是不可接
   受的。但另外类型的文件如偶尔丢点信息对你无所谓, 你甚至都不会注意到,也可能你愿意对不重要的信息
   牺牲点东西换取更高的压缩比,如图象、电影、音乐等。

   一个好的有损压缩的示例是 JPEG 图象文件格式。MP3 对于音乐也是有损压缩。

4. Open issue
   JPEG codec

   G.723.1(5.3k/6.3k), G.729, G.729a, G.729b, G.729ab, G.711A-Law, μ-Law, GSM610

   Compression codec standards comparison:
   G.723.1    Dual rate MP-MLQ/ACELP coder,   5.3, 6.3 kbps
   G.729      CS-ACELP codec,                 8 kbps
   GSM                                        13 kbps
   G.728      LD-CELP,                        16kbps
   G.726/727 ADPCM codec,                    64kbps to 40, 32, 24,16 kbps
   G.711      telephone, A-Law, μ-Law        64 kbps
   MPEG L3    MP3,                            56-128 kbps
   MPEG4      Video depends on content,       frame rate

   MP1 和 MP2 的压缩率分别为 4:1 和 6:1 - 8:1,而 MP3 的压缩率则高达 10:1 - 12:1。

5. Miscs
   SEDA solution = Algorithm Design + Processor Knowledge + System Know-how
   Know-how 实际知识、技术诀窍
   rundown 纲要
   morbidly curious 病态的好奇
   discrepancy 差异、矛盾
   mimics 模仿
   ripping 极好的

文件出处:

http://kware.blogbus.com/logs/30741919.html

类别:默认 |
上一篇:MP3解码算法分析(2)——MP3帧头(Frame Header)数据结构描述 | 下一篇:Shine mp3定点编码算法的WAV.C程序分析
以下网友评论只代表其个人观点,不代表本网站的观点或立场