-
一、概述
二、整个
MP3
文件结构
三、
MP3
帧格式
1.
帧头格式
2. MAIN_DATA
四、
p>
ID3
标准
1.
ID3V1
2. ID3V2
p>
五、
MP3
文件实例剖析
< br>
六、资料
一、
概述
MP3
文件是由帧
(frame)<
/p>
构成的
,
帧是
MP3
文件最小的组成单位。
MP3
的全称应为
MPEG1
Layer-3
音频
文件
,MPEG(Moving Picture
Experts Group)
在汉语中译为活动图像专家组
,
特指活动影
音压缩标准
,MPEG
音频文件是
MPEG1
标准中的声音部分
,
也叫
MPEG
音频层
,
< br>它根据压缩质量和编码复杂
程度划分为三层
,
即
Layer-1
、<
/p>
Layer2
、
Layer3,
且分别对应
MP1
、
MP2
、
MP3
这三种声音文件
,
并根据不同
的用
途
,
使用不同层
次的编码。
MPEG
音频编码的层次
越高
,
编码器越复杂
,
压缩率也越高
,MP1
和
MP2
的压
缩率分别为
4:1
和
6:1-8:1,
而
MP3
的压缩率则高达
10:1-12:1,
也就是说
,
一分钟
CD
音质的音乐<
/p>
,
未经
压缩需要
10MB
的存储空间
,
而经过
MP3
压缩编码后只有
1MB
左右。
不过
MP3
对音频信号采用的是有
损压缩
方式
,
为了降
低声音失真度
,MP3
采取了
“
感官编码技术
”,
即编码时先对音频文件进行频谱分析
,
然后用
< br>过滤器滤掉
噪音电平
,
接着通过量化的方式将剩下的每一位打散排列
,
最后形成具有较高压缩比的
MP3
文件
,
并使压
缩后的文件在回放时能够达到比较接近原音源的声音效果。
二、整个
MP3
< br>文件结构
MP3
文件大体分为
三部分:
TAG_V2(ID3V2)
,
Frame, TAG_V1(ID3V1)
ID3V2
包含了作者,作曲,专辑等信息,长度不固定,扩展了
ID3V1
的信息量。
Frame
.
.
.
Frame
一系列的帧,个数由文件大小和帧长决定
每个
FRAME
的长度可能不固定,也可能固定,由位率<
/p>
bitrate
决定
< br>每个
FRAME
又分为帧头和数据实体两部分
帧头记录了
mp3
的位
率,采样率,版本等信息,每个帧之间相互独立
ID3V1
包含了作者,作曲,专辑等信息,长度为
128BYTE
。
三、
MP3
帧格式
1.
帧头格式
帧头长
4
字节,对于固定位率的
MP3
文
件,所有帧的帧头格式一样其数据结构如下:
typedef FrameHeader {
unsigned int sync: 11;
//
同步信息
unsigned int version: 2;
//
版本
unsigned int layer: 2;
//
层
unsigned int error protection: 1;
// CRC
校验
unsigned int bitrate_index: 4;
//
位率
unsigned int sampling_frequency: 2;
//
采样频率
unsigned int padding: 1;
//
帧长调节
unsigned int private: 1;
//
保留字
unsigned int mode: 2;
//
声道模式
unsigned int mode extension: 2;
//
扩充模式
unsigned int copyright: 1;
//
版权
unsigned int original: 1;
//
原版标志
unsigned int emphasis: 2;
//
强调模式
}HEADER, *LPHEADER;
帧头
4
字节使用说明见表
1
。
MP
3
帧长取决于位率和频率,计算公式为:
. mpeg1.0
layer1 :
帧长
=
(48000*bitrate)/sampling_freq + padding
layer2&3:
帧长
=
(144000*bitrate)/sampling_freq + padding
. mpeg2.0
layer1 :
帧长
=
(24000*bitrate)/sampling_freq + padding
layer2&3 :
帧长
=
(72000*bitrate)/sampling_freq + padding
例如:位率为
64kbps
,采样频率为
44.1kHz
,
padding
(帧长调节)为
1
时,帧长
为
210
字节。
帧头后
面是可变长度的附加信息,对于标准的
MP3
文件来说,其长度
是
32
字节,紧
接其后的是压缩的声音
数据,当解码器读到此处时就进行解码了。
表
1
MP3
帧头字节使用说明
名称
同步
信息
版本
层
位长
11
第
1
、
2
2
2
字
说
明
所有位均为
1
,第
1
字节恒为
< br>FF
。
00-MPEG
2.5
01-
未定义
10-MPEG 2
11-MPEG 1
00-
未定义
01-Layer 3
10-Layer 2
11-Layer 1
CRC
校验
1
4
节
0-
校验
1-
不校验
取样率,单位是
kbps
,例如采用<
/p>
MPEG-1 Layer 3
,
64k
bps
是,值为
0101
。
bits
V1,L1
V1,L2
V1,L3
V2,L1
free
32
48
56
64
80
96
112
128
160
192
224
256
320
384
bad
free
32
40
48
56
64
80
96
112
128
160
192
224
256
320
bad
free
32(32)
64(48)
96(56)
128(64)
160(80)
192(96)
V2,L2
free
32(8)
48(16)
56(24)
64(32)
80(40)
96(48)
V2,L3
free
8 (8)
16
(16)
24
(24)
32
(32)
64
(40)
80
(48)
56
(56)
64
(64)
128
(80)
160
(96)
112
(112)
128
(128)
256
(144)
320
(160)
bad
0000
free
0001
32
0010
64
0011
96
0100
128
0101
160
0110
192
0111
224
224(112)
112(56)
256(128)
128(64)
288(144)
160(80)
320(160)
192(96)
352(176)
224(112)
384(192)
256(128)
416(224)
320(144)
448(256)
384(160)
bad
bad
位率
第
3<
/p>
字
节
1000
256
1001
288
1010
320
1011
352
1100
384
1101
416
1110
448
1111
bad
V1 - MPEG 1
V2 - MPEG 2
and MPEG 2.5
L1 - Layer 1
L2 - Layer 2
L3 - Layer
3
表示位率可变
表示不允许值
2
采样
频率
采
样频率,对于
MPEG-1
:
00-44.1kHz
01-48kHz
10-32kHz
11-
未定义
对于
MPEG-
2
:
00-22.05kHz
01-24kHz
10-16kHz
11-
未定义
对于
MPEG-
2.5
:
00-11.025kHz
01-12kHz
10-8kHz
11-
未定义
帧长
调节
保留
字
声道
模式
1
1
2
2
用来调整文件头长度,
0-
无需调整,
1-
调整,具体调整计算方法见下文。
没有使用。
表示声道,
00-
立体声
Stereo
01-Joint Stereo
10-
双声
道
11-
单声道
当声道模式为
01
是才使用。
Value
强度立体声
off
on
off
on
MS
立体声
off
off
on
on
00
01
10
11
扩充
模式
第
4
字
节
1
1
2
版权
原版
标志
强调
方式
文
件是否合法,
0-
不合法
1-
合法
是否原版,
0-
非原版
1-
原版
用
于声音经降噪压缩后再补偿的分类,很少用到,今后也可能不会用。
00-
未定义
01-50/15ms
10-
保留
11-CCITT J.17
2. MAIN_DATA
MAIN_DATA
部分长度是否变化决定于
FRAMEHEADER
的
bitrate
是否变化
,
一
首
MP3
歌曲
,
它有三个版
本
:96Kbps(96
千比特位每
秒
)
、
128Kbps
和
192Kbps
< br>。
Kbps(
比特位速率
),<
/p>
表明了音
乐每秒的数据量
,
Kbps
值越高
,
< br>音质越好
,
文件也越大
,MP3
标准规定
,
不变的
bitrate
的
MP3
文件称作
CBR,
大多数
MP3
文件都是
CBR
的
,
而变化的
bitrate
的
MP3
文件称作
VBR,
每个
FRAME
的长度都可
能是变化的。下面是
CBR
和
VBR
的不同点
:
1)CBR:
固定位率的
FRAME
的大小是固定的
(
公式如上所述
),
只要知道文件总长度
,
和帧
长即可由播放每帧需
< br>
26ms
计算得出
mp3
播放的总时间
,
也可通过计数帧的个数控制快
进、快退慢放等操作。注:有些时候,并不是所
有的帧都是等长的,有的帧可能多一个或几
个字节。
2)VBR:VBR
是
XING
公司推出的算法
,
所以在
MP3
的
FRAME
里会有
“XING
这个关
键字
p>
(
现在很多流行的
小软件也可以进行
VBR
压缩
,
它们是否遵守这个约定
< br>,
那就不得而知了
),
它存放在
MP3
文件中的第一个有效
FRAME <
/p>
里
,
它标识了这个
MP3
文件是
VBR
的。同时第一个
FRAME
里存放了
MP3
文件的
FRAME
的总个数
,
这就很容易获得了播放总时间
,
同时还
有
100
个字节存放了播放总时间的
100
个时间分段的
FRAME
的
INDEX,
假设
4
分
钟的
MP3
歌曲
,240S,
分成
100
段
,
每两个相邻
INDEX
的时间差就是
2.4S,
所以通过
这个
INDEX,
只要前后处理少数的
FRAME,
就能快速找出我们需要快进的
FRAME
头。
表
2
VBR
文件第一帧结构
字节
1
-
4
说
明
与
CBR
相同的标准声音帧头
存放
VBR
文件标识
“Xing”
(
58 69 6E 6
7
),此标识具体位置视采用的
MPEG
标准和声道
模式而定。标识的前后字节没有使用。
36
-
39
5
-
40
21
-
24
21
-
24
13
-
16
41
-
44
标志,
说明是否存储了帧数、
文件长度、
目录表和
VBR
规模信息,
如果存储
了,
则
01 02 04
08
。
MPEG-2
和单声道
MPEG-2
和非单声道
MPEG-1
和单声道
MPEG-1
和非单声道
(
常见
)
45
-
48
帧数(包括第一帧)
49
-
52
文件长度
53
-
152
153
-
156
另可参考下文
:
四、
ID3
标准
MP3
帧头中除了存储一些象
private
p>
、
copyright
、
< br>original
的简单音乐说明信息以外,
没有考虑存
放歌名、
作者、
专辑名、
年份等复杂信
息,
而这些信息在
MP3
应用中非常必
要。
1996
年,
FricKemp<
/p>
在
“Studio 3”
项目中提出了在
MP3
文件尾增加一块用于存放歌曲的
说明信息,形成了
ID3
标准,至今已制定出
< br>ID3 V1.0
,
V1.1
,
V2.0
,
V2.3
< br>和
V2.4
标
准。版本越高,记
录的相关信息就越丰富详尽。
1. ID3V1
ID3 V1.0
标准并不周全,
存放
的信息少,
无法存放歌词,
无法录入专辑封面、
图片等。
V2.0
是一个相当完备的标准,但给编写软
件带来困难,虽然赞成此格式的人很多,在软件
中真正实现的却极少。绝大多数
MP3
仍使用
ID3 V1.0
标准。此标准是将
MP3
文件尾的
最后
128
个字节用来存放
ID3
信息,这
128
个字节使用说明见表<
/p>
3
。
表
3 ID3
V1.0
文件尾说明
字节
1-3
4-33
34-63
64-93
94-97
98-127
128
0
1
长度
(
字节
)
说
明
3
30
30
30
4
30
1
'Blues'
'Classic
存放
“TAG”<
/p>
字符,表示
ID3
V1.0
标准,紧接其后的是歌曲信息。
歌名
作者
专辑名
年份
附注
MP3
音乐类别,共
147
种。
表
4
MP3
音乐类别:
20
'Alternative'
40
'AlternRock'
21
'Ska'
41
'Bass'
60
'Top 40'
61
'Christian
VBR
规模,用于位率变动
目录表,用来按时间进行字节定位。
Rock'
2
3
4
5
6
7
8
9
'Country'
'Dance'
'Disco'
'Funk'
'Grunge'
'Hip-Hop'
'Jazz'
'Metal'
22
'Death Metal'
42
'Soul'
23
'Pranks'
43
'Punk'
Rap'
62
'Pop/Funk'
63
'Jungle'
64
'Native
American'
24
'Soundtrack'
44
'Space'
25
'Euro-Techno' 45
'Meditative'
26
'Ambient'
27
'Trip-Hop'
28
'Vocal'
29
'Jazz+Funk'
31
'Trance'
32
'Classical'
34
'Acid'
35
'House'
36
'Game'
37
'Sound Clip'
38
'Gospel'
'Instrumental
Rock'
65
'Cabaret'
46
'Instrumental Pop' 66
'New
Wave'
47
67
'Psychadelic'
68
'Rave'
69
'Showtunes'
70
'Trailer'
72
'Tribal'
73
'Acid
Punk'
74
'Acid Jazz'
75
'Polka'
76
'Retro'
77
'Musical'
78
'Rock & Roll'
79
'Hard Rock'
83
Swing
87
Revival
91
Gothic
Rock
95
Slow Rock
99
Acoustic
103
Opera
107 Booty Bass
111
Slow Jam
115 Folklore
48
'Ethnic'
49
'Gothic'
50
'Darkwave'
52
'Electronic'
54
'Eurodance'
55
'Dream'
56
'Southern Rock'
57
'Comedy'
58
'Cult'
59
'Gangsta'
82
National Folk
86
Latin
90
Advantgarde
94
Symphonic Rock
98
Easy Listening
102 Chanson
106 Symphony
10
'New Age'
30
'Fusion'
11
'Oldies'
12
'Other'
13
'Pop'
14
'R&B'
15
'Rap'
16
'Reggae'
17
'Rock'
18
'Techno'
51
'Techno-Industrial' 71
'Lo-Fi'
33
'Instrumental' 53
'Pop-Folk'
19
'Industrial'
39
'Noise'
80
Folk
88
Celtic
92
81
Folk/Rock
89
Bluegrass
84
Fast-Fusion 85
Bebob
Progressive
Psychadelic
93
Rock
Rock
97
Chorus
101
Speech
105 Sonata
96
Big Band
100 Humour
Chamber
104
Music
108 Primus
112 Club
109 Porn Groove
110 Satire
113 Tango
114 Samba
Any other value should be considered as
'Unknown'
2.
ID3V2
ID3V2
到现在一共有
4
< br>个版本
,
但流行的播放软件一般只支持第
3
版
,
既
p>
ID3v2.3
。由
于
ID3V1
记录
-
-
-
-
-
-
-
-
-
上一篇:实用的语法知识—ほど【程】
下一篇:企业口号的意义