Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1605864
  • 博文数量: 585
  • 博客积分: 14610
  • 博客等级: 上将
  • 技术积分: 7402
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-15 10:52
文章存档

2013年(5)

2012年(214)

2011年(56)

2010年(66)

2009年(44)

2008年(200)

分类: C/C++

2012-01-27 16:45:52

mp3: ID3 和帧速率 (2007-02-24 16:23)转载
分类: 读书笔记

ID3

在一个mp3文件的头部,可能会有ID3标签信息。ID3标签信息可以包含的内容有:作家名字,标题,版权,使用条款,所有权信息,缩略图,以及评论。 ID3标准有两个版本:ID3v1和ID3v2。虽然这两个版本之间的差别不小,但是目前的绝大多数mp3播放器都能正确处理这两个版本的ID3标签信 息。ID3v2标签能够储存的信息必v1的要多很多,而且被放置在文件的头部,而不是像v1标签那样被放在尾部。原因很简单:mp3文件刚刚开始被播放的 时候就需要显示这些信息,总不能等播放结束再显示这些吧

ID3v1标签在一开始的时候被用到,却被放在mp3文件尾部。如果这些标签也能被放在文件头部,我们的生活会变得美好很多。虽然真正完全按照ISO MPEG标准开发的mp3播放器应该能够处理任何类型的ID3标签,但ISO MPEG标准本身在这一点上说的含含糊糊。MPEG标准只规定一个播放器应该试图找到一个“同步标志”,却没说清楚这个搜寻过程应该从哪里开始,到哪里结 束。所幸,ID3v2标签的规范在这一点上做的很好,说的很详细。

帧速率

电影行业规定了标准电影每秒钟放映的胶片帧数,以保证任何放映机都能以恒定的标准速度放映标准的胶片。Mp3标准也使用了一个通用标准。不管mp3文件本 身的比特率是多少,一个MPEG-1帧播放的时间是26毫秒,也就是说大约38帧每秒。如果比特率更高,帧大小会增加,但是帧速率并不增加,仍然是26毫 秒每帧,或者说38帧每秒。此外,mp3的一个帧中保存的样本个数也是固定的:1152样本每帧。

记住:我们提到过,每一个mp3帧中包含了一个帧头,38帧每秒意味着们需要存储和读取很多的冗余信息。每一个帧头是32bit,按照38帧每秒的速率, 这意味着每秒大约总共要读取1223bit的冗余信息。一个128kbps的mp3文件的数据速率是128000bit每秒,相比之下帧头数据的量就很小 了。对任何一个给定的mp3帧来说,其大小可以用下面的公式计算:
FrameSize = 144 * BitRate / (SampleRate + Padding ) 
Bitrate: 比特率,bits每秒,记住1kbps=1000 bits/second。
Sample rate: 源音频数据的抽样频率
Padding: 有时编码过程不能写满一帧,会加入一些填充bit。例如当以128kbps的速率对一个声音文件进行编码,源数据的抽样频率是44100Hz,没有填充,这样的一个mp3帧大小可以计算如下:
144 * 128000 / (44100 + 0) = 417.96 bytes

我的更多文章
阅读(1144) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~