MP3文件格式怎样的?
MP3文件格式怎样的?
	MP3文件格式
注:笔者用C++编写了mp3文件信息(ID3V1和ID3V2)的读写程序,程序下载地址:http://yyhlm.ys168.com,源程序的索取请致信:yinwei_88@sina.com或留言。
一.概述:
	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 | 
						Position | 
						Description | |||||||||||||||||||||||||||||||||||||||||||||||
| 
						A | 
						11 | 
						(31-21) | 
						Frame sync (all bits set) | |||||||||||||||||||||||||||||||||||||||||||||||
| 
						B | 
						2 | 
						(20,19) | 
						MPEG Audio version | |||||||||||||||||||||||||||||||||||||||||||||||
| 
						C | 
						2 | 
						(18,17) | 
						Layer description | |||||||||||||||||||||||||||||||||||||||||||||||
| 
						D | 
						1 | 
						(16) | 
						Protection bit | |||||||||||||||||||||||||||||||||||||||||||||||
| 
						E | 
						4 | 
						(15,12) | Bitrate index 
 |