MP3文件格式剖析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文章编号:1006-5342(2002)06-0077-03
MP3文件格式剖析
Ξ
范建军
(咸宁师范高等专科学校 计算机系,湖北 咸宁 437005)
摘 要:MP3的全称是MPEG Audio Layer -31由于MP3具有压缩程度高、音质好的特点,所以MP3是目前最
为流行的一种音乐文件1文章以国际标准化组织(IS O )和国际电工委员会(IEC )联合颁布的IS O/IEC 11172-3(MPEG-1第三部分:音频)标准为依据,结合MP3的特点,详细剖析MP3文件的格式结构1关键词:MPEG;MP3文件;MP3解码器中图分类号:TP37 文献标识码:A
1 MP3解码器的组成和工作原理[1]
一个基本的
MP3解码器组成如图1所示:
图1 IS O/MPEG audio 层3(MP3)解码器的结构 它一般包括分流器(M UX )、霍夫曼解码器、逆量化器、逆M DCT 器、合成滤波器组和边信号解码器1其工作
流程是从输入的MP3比特流中查找第一个帧头部进行同
步、接着进行边信号解码、比例因子解码、霍夫曼数据解
码、逆量化频谱、频谱重新排序(动态去窗口)、逆M DCT 处理、通过多相滤波器组合成,最后产生PC M 数据流并送往音箱播放声音1
2 MP3文件的格式结构[2]
MP3音频文件的结构如图2所示:
帧帧111帧
T ag
图2 MP3音频文件的结构
一个MP3音频文件被分成若干个称为帧的小块,每一个帧都是独立的1每一个帧都有自己的头部和音频信息1MP3音频文件没有头部1因此,可以切割MP3音频文件的任何部分并正确地播放它1
当希望读取有关MP3音频文件的信息时,通常是查找
第一个帧就足以获得,读这第一个帧的头部,同时假定其它帧也有同样的信息(并不总是这样的)1T ag 常常被用于描述MP3音频文件1MP3帧结构如图3所示:帧头
CRC 校验(可选)边信号信息比例因子音频数据
图3 MP3帧结构
在一个帧中,其头部是由最前面的4个字节(32位)组成1头部最前面的11位总是被设置为1并称它为“帧同步”1因此,可以搜索整个文件以确定第一次出现连续11个被设置为1的地方,然后读整个头部并检测其值是否正确1在下面的表中你将了解到在头部的每一位的精确含义,以对每个值检测其有效性1被指定为保留,无效,坏和不允许的每一个值说明这是一个无效的头部1
帧可以有一个CRC 校验,但这较为罕见1如果存在CRC 校验,这个CRC 是16位长,它跟在帧的头部之后;如果你需要读其它帧的头部或仅仅希望计算这个帧的CRC
Ξ收稿日期:2002-09-20
第22卷第6期 咸 宁 师 专 学 报 V ol.22,N o.62002年12月 Journal of Xianning T eachers College Dec.2002
以比较从文件中读出的帧,你可以计算帧的长度并使用它1这实际上是一个非常好的检测MP3头部有效性的方法1在CRC的后面就是S ide In fo(边信号信息)1边信号信息后面是Scale factor(比例因子)信息1再之后就是音频数据1 211 帧头部详细剖析
每个帧头部的长度为4字节1其数据结构如下:
typedef struct-tagHeader{
unsigned int sync:11;//同步信息
unsigned int version:2;//版本
unsigned int layer:2;//层
unsigned int error2protection:1;//CRC校正
unsigned int bit2rate2index:4;//位率索引
unsigned int sam ple2rate2index:2;//采样率索引
unsigned int padding:1;//空白字
unsigned int extension:1;//私有标志
unsigned int channel2m ode:2;//立体声模式
unsigned int m ode extension:2;//保留
unsigned int copyright:1;//版权标志
unsigned int original:1;//原始媒体
unsigned int em phasis:2;//强调方式
}HE ADER,3LPHE ADER;
其中:
sync(同步信息):11位,全部被设置为11
Version(版本):2位,设置如下:
00-MPEG版本2151
01-保留1
10-MPEG版本21
11-MPEG版本11
layer(层):2位,设置如下:
00-保留1
01-层III1
10-层II1
11-层I1
error-protection(出错保护):1位,设置如下:
0-CRC保护(在帧头后面允许16位CRC校验码)1
1-无保护1
bit2rate2index(位率索引):4位,设置如下:
设置值V1,L1V1,L2V1,L3V2,L1V2,L2V2,L3
0000free free free free free free
000132323232328(8)
0010644840644816(16)
0011965648965624(24)
010012864561286432(32)
010116080641608064(40)
011019296801929680(48)
01112241129622411256(56)
100025612811225612864(64)
1001288160128288160128(80)
1010320192160320192160(96)
设置值V1,L1V1,L2V1,L3V2,L1V2,L2V2,L3
1011352224192352224112(112)
1100384256224384256128(128)
1101416320256416320256(144)
1110448384320448384320(160)
1111bad bad bad bad bad bad
注释:所有的值单位是kbps
V1-MPEG版本11
V2-MPEG版本2和版本2151
L1-层I1
L2-层II1
L3-层III1
“free”意味着可变位率1
“bad”意味着这不是一个允许的值1
sam ple2rate2index(采样率索引):2位,设置如下:
设置值MPEG1MPEG2MPEG215 00441002205011025
01480002400012000
1032000160008000
11保留保留保留
注释:所有的值单位是H z1
Padding(空白字):1位,设置如下:
0-帧没有填充位1
1-帧带有一个额外的填充位1
Extension(私有标志):1位,目前此位的作用未知1 channel2m ode(立体声通道模式):2位,设置如下: 00-立体声1
01-Joint立体声(S tereo)1
10-Dual立体声(S tereo)1
11-S ingle立体声(M ono)1
m ode extension(模式扩展):2位,仅对Joint立体声通道模式有效,设置如下:
设置值Intensity stereo MS stereo 00off off
01on off
10off on
11on on
C opyright(版权标志):1位,设置如下:
0-音频数据没有版权保护1
1-音频数据有版权保护1
Original(原始媒体):1位,设置如下:
0-原始媒体的拷贝1
1-原始媒体1
Em phasis(强调方式):2位,设置如下:
00-无
01-50/15ms
10-保留
11-CCIT J117
212 MPEG音频T ag的MP3v1详细剖析
它包含的信息有艺术家(Artist),标题(T itle),影集
87咸宁师专学报 第22卷
(Album),出版年份(Y ear)和音乐风格(G enre)1对于注释(C omments)还有额外的空间1T AG的大小始终是128字节长,并且位于所有音频数据之后1可以通过读MP3音频文件的最后128个字节而获取T ag1
T ag各相关信息分配如下:
长度(字节)
位置
(字节)
描 述
3(0-2)T ag标识1必须包含‘T AG’,如果T ag存在并且正确1
30(3-32)T itle 30(33-62)Artist 30(63-92)Album
长度
(字节)
位置
(字节)
描 述
4(93-96)Y ear
30(97-126)C omment
1(127)G enre
规范要求所有的填充域都用NU LL字符(ASCII0)填充;然而,并不是所有的应用程序都遵守这个规定(一个例子是WinAm p用空格<space>ASCII32,填充填充域)1在MP3v111结构中,有一小部分被建议改变1注释域的最后一个字节可以被用于指定在一个影集中歌曲的音轨数1如果信息是未知,则它包含一个NU LL字符(ASCII0)1 MP3文件对音乐的风格进行了限制,共254种1G enre 返回的只是MP3风格的序列号,具体还需要定位,在这里把所有类型以常数形式列出:
0’Blues’20’Alternative’40’AlternR ock’60’T op40’
1’Classic R ock’21’Ska’41’Bass’61’Christian Rap’2’C ountry’22’Death Metal’42’S oul’62’P op/Funk’3’Dance’23’Pranks’43’Punk’63’Jungle’
4’Disco’24’S oundtrack’44’S pace’64’Native American’5’Funk’25’Euro-T echno’45’Meditative’65’Cabaret’
6’G runge’26’Ambient’46’Instrumental P op’66’New Wave’7’Hip-H op’27’T rip-H op’47’Instrumental R ock’67’Psychadelic’8’Jazz’28’V ocal’48’E thnic’68’Rave’
9’Metal’29’Jazz+Funk’49’G othic’69’Showtunes’10’New Age’30’Fusion’50’Darkwave’70’T railer’
11’Oldies’31’T rance’51’T echno-Industrial’71’Lo-Fi’
12’Other’32’Classical’52’E lectronic’72’T ribal’
13’P op’33’Instrumental’53’P op-F olk’73’Acid Punk’14’R&B’34’Acid’54’Eurodance’74’Acid Jazz’15’Rap’35’H ouse’55’Dream’75’P olka’
16’Reggae’36’G ame’56’S outhern R ock’76’Retro’
17’R ock’37’S ound Clip’57’C omedy’77’Musical’
18’T echno’38’G ospel’58’Cult’78’R ock&R oll’19’Industrial’39’N oise’59’G angsta’79’Hard R ock’任何其它的值都被认为是“Unknown”1
MPEG音频T ag MP3v2
这是新建议的T AG格式,它与MP3v1和MP3v111不同1有关它的信息请查看网站http://w w w1id31com/1
参考文献:
[1]林福宗1多媒体技术基础[M]1北京:清华大学出版社,20011136~1431
[2]余崇智,李存珠,张志力等1运动图像及其伴音的压缩与编码[M]1南京:南京大学出版社,19951235~250197
第6期 范建军 MP3文件格式剖析。