一.概述:
MP3文件是由帧(frame)构成的,帧是MP3文件最小的组成单位。MP3的全称应为MPEG1 Layer-3音频文件,MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG音频文件是MPEG1标准中的声音部分,也叫MPEG音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer-1、Layer2、Layer3,且分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码。MPEG音频编码的层次越高,编码器越复杂,压缩率也越高,MP1和MP2的压缩率分别为4:1和6:1-8:1,而MP3的压缩率则高达10:1-12:1,也就是说,一分钟CD音质的音乐,未经压缩需要10MB的存储空间,而经过MP3压缩编码后只有1MB左右。不过MP3对音频信号采用的是有损压缩方式,为了降低声音失真度,MP3采取了“感官编码技术”,即编码时先对音频文件进行频谱分析,然后用过滤器滤掉噪音电平,接着通过量化的方式将剩下的每一位打散排列,最后形成具有较高压缩比的MP3文件,并使压缩后的文件在回放时能够达到比较接近原音源的声音效果。
二.整个MP3文件结构:
MP3文件大体分为三部分:TAG_V2(ID3V2),Frame, TAG_V1(ID3V1)
| ID3V2 | 包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。 |
| Frame . . . Frame | 一系列的帧,个数由文件大小和帧长决定 每个FRAME的长度可能不固定,也可能固定,由位率bitrate决定 每个FRAME又分为帧头和数据实体两部分 帧头记录了mp3的位率,采样率,版本等信息,每个帧之间相互独立 |
| ID3V1 | 包含了作者,作曲,专辑等信息,长度为128BYTE。 |
三.MP3的FRAME格式:
每个FRAME都有一个帧头FRAMEHEADER,长度是4BYTE(32bit),帧头后面可能有两个字节的CRC校验,这两个字节的是否存在决定于FRAMEHEADER信息的第16bit,为0则帧头后面无校验,为1则有校验,校验值长度为2个字节,紧跟在FRAMEHEADER后面,接着就是帧的实体数据了,格式如下:
| FRAMEHEADER | CRC(free) | MAIN_DATA |
| 4 BYTE | 0 OR 2 BYTE | 长度由帧头计算得出 |
1.帧头FRAMEHEADER格式如下:
AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM
13个帧头字符的含义如下:
| Sign | Length (bits) | Position (bits) | Description |
| A | 11 | (31-21) | Frame sync (all bits set) |
| B | 2 | (20,19) | MPEG Audio version 00 - MPEG Version 2.5 01 - reserved 10 - MPEG Version 2 11 - MPEG Version 1 |
| C | 2 | (18,17) | Layer description 00 - reserved 01 - Layer III 10 - Layer II 11 - Layer I |
| D | 1 | (16) | Protection bit 0 - Protected by CRC (16bit crc follows header) 1 - Not protected |
| E | 4 | (15,12) | Bitrate index | bits | V1,L1 | V1,L2 | V1,L3 | V2,L1 | V2,L2 | V2,L3 | | 0000 | free | free | free | free | free | free | | 0001 | 32 | 32 | 32 | 32 | 32 | 8 (8) | | 0010 | 64 | 48 | 40 | 64 | 48 | 16 (16) | | 0011 | 96 | 56 | 48 | 96 | 56 | 24 (24) | | 0100 | 128 | 64 | 56 | 128 | 64 | 32 (32) | | 0101 | 160 | 80 | 64 | 160 | 80 | 64 (40) | | 0110 | 192 | 96 | 80 | 192 | 96 | 80 (48) | | 0111 | 224 | 112 | 96 | 224 | 112 | 56 (56) | | 1000 | 256 | 128 | 112 | 256 | 128 | 64 (64) | | 1001 | 288 | 160 | 128 | 288 | 160 | 128 (80) | | 1010 | 320 | 192 | 160 | 320 | 192 | 160 (96) | | 1011 | 352 | 224 | 192 | 352 | 224 | 112 (112) | | 1100 | 384 | 256 | 224 | 384 | 256 | 128 (128) | | 1101 | 416 | 320 | 256 | 416 | 320 | 256 (144) | | 1110 | 448 | 384 | 320 | 448 | 384 | 320 (160) | | 1111 | bad | bad | bad | bad | bad | bad | NOTES: All values are in kbps V1 - MPEG Version 1 V2 - MPEG Version 2 and Version 2.5 L1 - Layer I L2 - Layer II L3 - Layer III "free" means variable bitrate. "bad" means that this is not an allowed value The values in parentheses are from different sources which claim that those values are valid for V2,L2 and V2,L3. If anyone can confirm please let me know. |
| F | 2 | (11,10) | Sampling rate frequency index (values are in Hz) | bits | MPEG1 | MPEG2 | MPEG2.5 | | 00 | 44100 | 22050 | 11025 | | 01 | 48000 | 24000 | 12000 | | 10 | 32000 | 16000 | 8000 | | 11 | reserv. | reserv. | reserv. |
|
| G | 1 | (9) | Padding bit 0 - frame is not padded 1 - frame is padded with one extra bit |
| H | 1 | (8) | Private bit (unknown purpose) |
| I | 2 | (7,6) | Channel Mode 00 - Stereo 01 - Joint stereo (Stereo) 10 - Dual channel (Stereo) 11 - Single channel (Mono) |
| J | 2 | (5,4) | Mode extension (Only if Joint stereo) | value | Intensity stereo | MS stereo | | 00 | off | off | | 01 | on | off | | 10 | off | on | | |