MP3文件格式解析
MP3文件格式剖析

文章编号:1006-5342(2002)06-0077-03MP3文件格式剖析Ξ范建军(咸宁师范高等专科学校 计算机系,湖北 咸宁 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 文献标识码:A1 MP3解码器的组成和工作原理[1]一个基本的MP3解码器组成如图1所示:图1 IS O/MPEG audio 层3(MP3)解码器的结构 它一般包括分流器(M UX )、霍夫曼解码器、逆量化器、逆M DCT 器、合成滤波器组和边信号解码器1其工作流程是从输入的MP3比特流中查找第一个帧头部进行同步、接着进行边信号解码、比例因子解码、霍夫曼数据解码、逆量化频谱、频谱重新排序(动态去窗口)、逆M DCT 处理、通过多相滤波器组合成,最后产生PC M 数据流并送往音箱播放声音12 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位,全部被设置为11Version(版本):2位,设置如下: 00-MPEG版本2151 01-保留1 10-MPEG版本21 11-MPEG版本11layer(层):2位,设置如下: 00-保留1 01-层III1 10-层II1 11-层I1error-protection(出错保护):1位,设置如下: 0-CRC保护(在帧头后面允许16位CRC校验码)1 1-无保护1bit2rate2index(位率索引):4位,设置如下:设置值V1,L1V1,L2V1,L3V2,L1V2,L2V2,L30000free free free free free free000132323232328(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,L31011352224192352224112(112)1100384256224384256128(128)1101416320256416320256(144)1110448384320448384320(160)1111bad bad bad bad bad bad 注释:所有的值单位是kbpsV1-MPEG版本11V2-MPEG版本2和版本2151L1-层I1L2-层II1L3-层III1“free”意味着可变位率1“bad”意味着这不是一个允许的值1sam ple2rate2index(采样率索引):2位,设置如下:设置值MPEG1MPEG2MPEG215 0044100220501102501480002400012000103200016000800011保留保留保留 注释:所有的值单位是H z1Padding(空白字):1位,设置如下: 0-帧没有填充位1 1-帧带有一个额外的填充位1Extension(私有标志):1位,目前此位的作用未知1 channel2m ode(立体声通道模式):2位,设置如下: 00-立体声1 01-Joint立体声(S tereo)1 10-Dual立体声(S tereo)1 11-S ingle立体声(M ono)1m ode extension(模式扩展):2位,仅对Joint立体声通道模式有效,设置如下:设置值Intensity stereo MS stereo 00off off01on off10off on11on onC opyright(版权标志):1位,设置如下: 0-音频数据没有版权保护1 1-音频数据有版权保护1Original(原始媒体):1位,设置如下: 0-原始媒体的拷贝1 1-原始媒体1Em phasis(强调方式):2位,设置如下: 00-无 01-50/15ms 10-保留 11-CCIT J117212 MPEG音频T ag的MP3v1详细剖析它包含的信息有艺术家(Artist),标题(T itle),影集87咸宁师专学报 第22卷(Album),出版年份(Y ear)和音乐风格(G enre)1对于注释(C omments)还有额外的空间1T AG的大小始终是128字节长,并且位于所有音频数据之后1可以通过读MP3音频文件的最后128个字节而获取T ag1T ag各相关信息分配如下:长度(字节)位置(字节)描 述3(0-2)T ag标识1必须包含‘T AG’,如果T ag存在并且正确130(3-32)T itle 30(33-62)Artist 30(63-92)Album长度(字节)位置(字节)描 述4(93-96)Y ear30(97-126)C omment1(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”1MPEG音频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文件格式剖析。
mp3文件格式

MP3文件格式一.概述: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)三.MP3的FRAME 格式:每个FRAME 都有一个帧头FRAMEHEADER,长度是4BYTE(32bit),帧头后面可能有两个字节的CRC 校验,这两个字节的是否存在决定于FRAMEHEADER 信息的第16bit,为0则帧头后面无校验,为1则有校验,校验值长度为2个字节,紧跟在FRAMEHEADER 后面,接着就是帧的实体数据了,格式如下:FRAMEHEADERCRC(free) MAIN_DATA 4 BYTE0 OR 2 BYTE 长度由帧头计算得出 1.帧头FRAMEHEADER 格式如下:AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM13个帧头字符的含义如下:Sign Length (bits) Position (bits)DescriptionA11 (31-21) Frame sync (all bits set) B 2 (20,19) MPEG Audio version00 - MPEG Version 2.501 - reserved ID3V2包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。
常见的文件格式与扩展名解析

常见的文件格式与扩展名解析随着信息技术的快速发展,各类文件的使用频率逐渐增加。
对于计算机用户而言,了解并熟悉常见文件格式与扩展名是至关重要的。
本文将对常见的文件格式与扩展名进行解析,以帮助读者更好地理解和应用。
一、文本文件格式与扩展名解析1. TXT(纯文本文件):TXT是一种纯文本文件格式,通常用于存储简单的文本信息,不包含任何格式、样式和嵌入的对象。
其扩展名为.txt,可以通过各种编辑器或文本处理软件打开和编辑。
2. DOC/DOCX(Word文档):DOC是微软Word 97-2003版本的文档文件格式,扩展名为.doc;而DOCX是微软Word 2007及以上版本的文档文件格式,扩展名为.docx。
这两种格式是最常见的用于存储文字、图片、表格和其他内容的办公文档格式。
3. RTF(富文本格式):RTF是一种跨平台的文本文件格式,可以在不同操作系统和各种文本编辑器之间共享文本文件。
RTF支持丰富的文本样式和格式设置,扩展名为.rtf。
二、图像文件格式与扩展名解析1. JPEG/JPG(联合图像专家组):JPEG是一种用于压缩和存储图像的常见格式,既能保持图像质量又能减小文件大小。
其扩展名可以是.jpeg或.jpg,适用于数字相机、手机摄影以及网页上的图像显示等。
2. PNG(便携式网络图形):PNG是一种无损压缩的图像格式,适用于存储图像的优质副本。
与JPEG相比,PNG不会导致图像失真,但文件大小通常较大。
其扩展名为.png,常用于网页设计、图像编辑和图标制作等。
3. GIF(图形交换格式):GIF是一种支持动画和透明度的图像格式。
GIF文件通常较小,适用于制作简单动画、表情包和网页上的小图标等。
其扩展名为.gif。
三、音频文件格式与扩展名解析1. MP3(MPEG音频层3):MP3是一种常见的音频文件格式,通过压缩技术将音频数据压缩为较小的文件。
MP3文件通常用于存储和传输音乐、有声书以及其他形式的音频内容,扩展名为.mp3。
音频编码格式比较MPFLAC和WAV

音频编码格式比较MPFLAC和WAV音频编码格式比较 MP3、FLAC 和 WAV随着数字音频的快速发展,人们对音频编码格式的需求也越来越多。
在众多音频编码格式中,MP3、FLAC 和 WAV 是最常用的几种格式。
本文将对这三种格式进行比较,包括其特点、优缺点以及适用场景。
通过了解它们的差异,读者可以更好地选择适合自己需求的音频编码格式。
1. MP3MP3(MPEG-1 Audio Layer 3)是最流行的音频编码格式之一。
它具备以下特点:- 压缩比高:MP3 通过去除音频信号中的冗余部分,实现对音频数据的高压缩比。
这使得 MP3 的文件大小相对较小,方便存储和传输。
- 相对较低的音质损失:尽管 MP3 使用了有损压缩算法,但通过合理的压缩参数设置,音质损失可以控制在较低的程度。
- 广泛兼容性:MP3 格式得到了广泛的应用和支持,在各类设备和平台上都能得到良好的兼容。
然而,MP3 也存在一些缺点:- 原始音质较差:由于 MP3 使用了有损压缩算法,相比无损格式,如 FLAC 和 WAV,原始音质会有所损失。
- 频谱细节丢失:为了减小文件大小,MP3 在压缩过程中会丢失一些频谱细节。
对于非专业音频需求,这个损失可能并不明显。
适用场景:- 在存储空间有限或带宽有限的情况下,选择 MP3 格式可以减小音频文件大小,方便网络传输和存储。
- 对音频质量要求一般,例如背景音乐、在线广播等。
2. FLACFLAC(Free Lossless Audio Codec)是一种无损音频编码格式,其特点包括:- 无损压缩:FLAC 通过压缩音频数据,但不损失任何音质信息,实现了无损的音频编码。
解码后的音质与原始音频完全一致。
- 高保真音质:相比于有损压缩格式,FLAC 能够还原音频的原始质量,提供更高保真的音质体验。
- 高兼容性:FLAC 格式在各类音频设备和软件中都得到了良好的支持,可以广泛应用。
然而,FLAC 的缺点也不容忽视:- 文件大小较大:由于是无损压缩,FLAC 文件大小通常较大,占用较多的存储空间和带宽。
(转)mp3文件格式解析-天道酬勤-C博客

(转)mp3文件格式解析-天道酬勤-C博客mp3文件格式解析一.概述: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)三.MP3的FRAME 格式:每个FRAME 都有一个帧头FRAMEHEADER ,长度是4BYTE (32bit ),帧头后面可能有两个字节的CRC 校验,这两个字节的是否存在决定于FRAMEHEADER 信息的第16bit ,为0则帧头后面无校验,为1则有校验,校验值长度为2个字节,紧跟在FRAMEHEADER 后面,接着就是帧的实体数据了,格式如下:1.帧头FRAMEHEADER 格式如下:AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM13个帧头字符的含义如下:Sign Length (bits) Position (bits)DescriptionA11 (31-21) Frame sync (all bits set) B 2 (20,19) MPEG Audio version00 - MPEG Version 2.501 - reserved10 - MPEG Version 211 - MPEG Version 1C 2 (18,17) Layer description00 - reserved01 - Layer III10 - Layer II11 - Layer ID 1 (16) Protection bit0 - Protected by CRC (16bit crc followsheader)1 - Not protectedE 4 (15,12) Bitrate indexbits V1,L1 V1,L2 V1,L3 V2,L1 V2,L2 V2,L30000 f ree free free free free free0001 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 b ad bad bad bad bad badNOTES: All values are in kbpsV1 - MPEG Version 1V2 - MPEG Version 2 and Version 2.5L1 - Layer IL2 - Layer IIL3 - Layer III"free" means variable bitrate."bad" means that this is not an allowedvalueThe values in parentheses are fromdifferent sources which claim that thosevalues are valid for V2,L2 and V2,L3. Ifanyone can confirm please let me know.F 2 (11,10) Sampling rate frequency index (values arein Hz)bits M PEG1 MPEG2 MPEG2.500 44100 22050 1102501 48000 24000 1200010 32000 16000 800011 reserv. r eserv. r eserv.G 1 (9) Padding bit0 - frame is not padded1 - frame is padded with one extra bitH 1 (8) Private bit (unknown purpose)I 2 (7,6) Channel Mode00 - Stereo01 - Joint stereo (Stereo)10 - Dual channel (Stereo)11 - Single channel (Mono)J 2 (5,4) Mode extension (Only if Joint stereo)value I ntensity stereo M S stereo00 off off01 on off10 off on11 on onK 1 (3) Copyright0 - Audio is not copyrighted1 - Audio is copyrightedL 1 (2) Original0 - Copy of original media1 - Original mediaM 2 (1,0) Emphasis00 - none01 - 50/15 ms10 - reserved11 - CCIT J.171)每帧的播放时间:无论帧长是多少,每帧的播放时间都是26ms;2)数据帧大小:FrameSize = (((MpegVersion == MPEG1 ? 144 : 72) * Bitrate) / SamplingRate) + PaddingBit例如: Bitrate =128000, a SamplingRate =44100, and PaddingBit = 1FrameSize = (144 * 128000) / 44100 + 1 = 417 bytes2.MAIN_DATA:MAIN_DATA部分长度是否变化决定于FRAMEHEADER的bitrate是否变化,一首MP3歌曲,它有三个版本:96Kbps(96千比特位每秒)、128Kbps和192Kbps。
MP3格式

MP3格式MP3播放器MP3是一种音频压缩技术,由于这种压缩方式的全称叫MPEG Audio Layer3,所以人们把它简称为MP3。
MP3是利用 MPEG Audio Layer 3 的技术,将音乐以1:10 甚至 1:12 的压缩率,压缩成容量较小的file,换句话说,能够在音质丢失很小的情况下把文件压缩到更小的程度。
而且还非常好的保持了原来的音质。
正是因为MP3体积小,音质高的特点使得MP3格式几乎成为网上音乐的代名词。
每分钟音乐的MP3格式只有1MB左右大小,这样每首歌的大小只有3-4兆字节。
使用MP3播放器对MP3文件进行实时的解压缩(解码),这样,高品质的MP3音乐就播放出来了。
MP3格式缺点MP3格式缺点就是为了压缩而破坏了音乐的质量,不过似乎广大的听众不在乎这个(音乐发烧友可能例外),我们从他的普及速度和面就可以得出。
MP3格式分类MP3(MPEG Audio LayerⅢ)音频格式诞生于20世纪80年代,是伴随着MPEG-1而开发的。
在MPEG-1标准中,音频压缩标准按复杂性和压缩质量分为三个独立层次:(1)MPEG Audio LayerⅠ,它最为简单,码流为每通道384kb/s,主要用于数字卡座(Digital Compact Cassette,DCC)。
(2)MPEG Audio Layer Ⅱ,它具有中等复杂度,码流为每通道192kb/s,主要用于数字音频广播、数字演播室和VCD等方面数字音频的制作、交流、存储和传送。
(3)MPEG Audio Layer Ⅲ,它最为复杂,是综合了MPEG Audio LayerⅡ和ASPEC优点的一种混合压缩技术,其音频质量最好,主要用于MP3音频压缩,码流为每通道64kb/s。
MP3编码虽不适用于实时传送,但能在低编码速率下提供较高的音质,所以成为网上音乐的宠儿。
MP3压缩编码原理在MPEG-1的音频压缩中,采样频率可为32kHz、44.1kHz和48kHz,可支持单声道(Monophonic)、双单声道(DualMonophonic)、立体声模式(Stereo Mode)、联合立体声(JointStereo)等。
mp3 十六进制解析

mp3 十六进制解析全文共四篇示例,供读者参考第一篇示例:MP3 是一种数字音频格式,其音频数据以十六进制形式存储,通过解析这些十六进制数据,我们可以了解音频文件的结构和内容。
本文将介绍如何解析MP3 文件的十六进制数据,以及其中的一些关键信息。
我们需要明白MP3 文件是如何组织的。
一个典型的MP3 文件由多个帧(frame)组成,每个帧包含一段音频数据。
每个帧的开头是一个帧同步字(frame sync),用于标识帧的开始。
帧同步字的值为0xFF,即十进制的255,表示帧的开始。
在帧同步字之后的一部分是帧头(frame header),用于描述帧的一些重要信息,包括比特率、采样率、声道模式等。
帧头通常占据一个字节,我们可以通过解析这个字节来获取这些信息。
帧头字节的格式如下:- 最高两位为帧同步字的保留位,固定为11;- 接下来四位为MPEG 版本(Version ID),用于指示MPEG 标准的版本;- 接下来两位为层信息(Layer),表示音频数据的编码层;- 接下来一位为保护位(CRC check),用于指示是否启用CRC 校验。
接着是帧头中的比特率(bitrate)字段,用于表示音频数据的比特率。
比特率字段的取值与MPEG 版本、层信息有关,不同的组合对应不同的比特率。
在十六进制数据中,我们可以通过解析比特率字段来获取比特率信息。
在帧头中还包括声道模式(channel mode)字段,用于表示音频数据的声道模式,包括单声道、立体声、双声道和立体声(joint stereo)模式。
解析声道模式字段可以帮助我们了解音频数据的声道配置。
通过解析MP3 文件的十六进制数据,我们可以获取关于音频文件的详细信息,包括比特率、采样率和声道模式等。
这些信息对于音频文件的解码和播放非常重要,通过深入了解MP3文件的十六进制结构,我们可以更好地理解数字音频文件的工作原理。
MP3 文件的十六进制解析是一个有趣且重要的技术,通过解析帧头的一些关键字段,我们可以了解MP3文件的结构和内容,进一步探索数字音频文件的工作原理。
MP3文件格式分析

一、MP3文件头bits name comments--------------------------------------------------12 sync 0xFFF1 version 1=mpeg1.0, 0=mpeg2.02 lay 4-lay = layerI, II or III1 error protection 0=yes, 1=no4 bitrate_index see table below2 sampling_freq see table below1 padding1 extension see table below2 mode see table below2 mode_ext used with "joint stereo" mode1 copyright 0=no 1=yes1 original 0=no 1=yes2 emphasis see table below--------------------------------------------------1、bitrate_index(编码速率)(1). mpeg1.01 2 3 4 5 6 7 8 9 10 11 12 13 14 layer1 32 64 96 128 160 192 224 256 288 320 352 384 416 448 layer2 32 48 56 64 80 96 112 128 160 192 224 256 320 384 layer3 32 40 48 56 64 80 96 112 128 160 192 224 256 320(2). mpeg2.01 2 3 4 5 6 7 8 9 10 11 12 13 14 layer1 32 48 56 64 80 96 112 128 144 160 176 192 224 256 layer2 8 16 24 32 40 48 56 64 80 96 112 128 144 160 layer3 8 16 24 32 40 48 56 64 80 96 112 128 144 1602、sampling_freq(采样率)(1). mpeg1.00 1 244100 48000 32000(2). mpeg2.00 1 222050 24000 160003、mode(声音模式)0 "stereo" (立体声)1 "joint stereo"(联合立体声)2 "dual channel"(双通道)3 "single channel"(单通道)4、mode extension(声音模式扩展)0 MPG_MD_LR_LR1 MPG_MD_LR_I2 MPG_MD_MS_LR3 MPG_MD_MS_I5、jsbound :mode_ext 0 1 2 3layer1 4 8 12 162 4 8 12 163 04 8 166、emphasis:0 "none"1 "50/15 microsecs"2 "reserved" must not be used !3 "CCITT J 17"二、MP3标签1(放在文件尾部128字节)offset type len name--------------------------------------------0 char 3 "TAG"3 char 30 title33 char 30 artist63 char 30 album93 char 4 year97 char 30 comments127 byte 1 genre--------------------------------------------- genre :0 "Blues"1 "Classic Rock"2 "Country"3 "Dance"4 "Disco"5 "Funk"6 "Grunge"7 "Hip-Hop"8 "Jazz"9 "Metal"10 "New Age"11 "Oldies"12 "Other"13 "Pop"14 "R&B"15 "Rap"16 "Reggae"17 "Rock"18 "Techno"19 "Industrial"20 "Alternative"21 "Ska"22 "Death Metal"23 "Pranks"24 "Soundtrack"25 "Euro-Techno"26 "Ambient"27 "Trip-Hop"28 "Vocal"29 "Jazz+Funk"30 "Fusion"31 "Trance"32 "Classical"33 "Instrumental"34 "Acid"35 "House"36 "Game"37 "Sound Clip"38 "Gospel"39 "Noise"40 "AlternRock"41 "Bass"42 "Soul"43 "Punk"44 "Space"45 "Meditative"46 "Instrumental Pop"47 "Instrumental Rock"48 "Ethnic"49 "Gothic"50 "Darkwave"51 "Techno-Industrial"52 "Electronic"53 "Pop-Folk"54 "Eurodance"55 "Dream"56 "Southern Rock"57 "Comedy"58 "Cult"59 "Gangsta"60 "Top 40"61 "Christian Rap"62 "Pop/Funk"63 "Jungle"64 "Native American"65 "Cabaret"66 "New Wave"67 "Psychadelic"68 "Rave"69 "Showtunes"70 "Trailer"71 "Lo-Fi"72 "Tribal"73 "Acid Punk"74 "Acid Jazz"75 "Polka"76 "Retro"77 "Musical"78 "Rock & Roll"79 "Hard Rock"80 "Unknown"三、MP3帧长度计算参考:1. mpeg1.0layer1 :(48000*bitrate)/sampling_freq + padding layer2&3:(144000*bitrate)/sampling_freq + padding2. mpeg2.0layer1 :(24000*bitrate)/sampling_freq + padding layer2&3 :(72000*bitrate)/sampling_freq + padding。
计算机常用声音文件格式

计算机常用声音文件格式计算机中常用的声音文件格式有很多种,每种格式有其特定的用途和优势。
以下是一些常见的声音文件格式:1. WAV(Waveform Audio File Format):WAV 是一种无损音频文件格式,通常用于存储高质量的音频。
它支持多种音频编解码器,因此可以存储各种音频数据。
2. MP3(MPEG Audio Layer III):MP3 是一种有损音频压缩格式,它可以显著减小文件大小而保持相对较高的音质。
由于其高度的压缩率,MP3 是在线音乐和音频传输中广泛使用的格式。
3. AAC(Advanced Audio Coding):AAC 是一种有损音频编码标准,通常用于在相对较低的比特率下提供较高的音频质量。
它是许多音频和视频格式(例如MP4)的默认音频编码。
4. FLAC(Free Lossless Audio Codec):FLAC 是一种无损音频压缩格式,它可以保持原始音频质量而不损失任何数据。
FLAC 文件相对较大,但适用于对音质要求较高的场景,例如专业音乐制作。
5. OGG(Ogg Vorbis):OGG 是一个开放的、免费的多媒体容器格式,其中包括音频编码格式Vorbis。
OGG Vorbis 提供了一种有损的音频压缩方案,类似于MP3,但通常在相同比特率下提供更好的音质。
6. MIDI(Musical Instrument Digital Interface):MIDI 不是一种音频文件格式,而是一种包含音符、音量和乐器信息的数字音乐标准。
MIDI 文件很小,用于存储音符和乐器信息,而不是音频本身。
7. AIFF(Audio Interchange File Format):AIFF 是一种无损音频文件格式,常用于Mac平台。
与WAV类似,AIFF支持高质量音频数据。
这些格式的选择取决于具体的应用场景、存储需求、音频质量要求等因素。
例如,对于音乐制作和专业录音,无损格式如WAV、FLAC可能更为适用;而对于在线音乐流媒体,有损格式如MP3、AAC更为常见。
mp3是什么格式的文件

mp3是什么格式的文件MP3 是什么格式的文件在我们日常的数字生活中,经常会接触到各种各样的文件格式,其中 MP3 就是一种极为常见且广泛使用的格式。
但你真的了解 MP3 到底是什么格式的文件吗?MP3 全称为 MPEG Audio Layer 3,是一种音频压缩技术的产物。
简单来说,它就是一种能把音频文件压缩得比较小,同时还能基本保持较好音质的格式。
为什么会有 MP3 这种格式出现呢?这得从数字音频的发展说起。
在早期,音频文件的存储和传输是个大问题。
因为未经压缩的原始音频数据量非常大,比如说一首几分钟的高质量 WAV 格式的歌曲,可能就会占用几十甚至上百兆的存储空间,这对于存储设备的容量和网络传输的带宽都是巨大的挑战。
于是,聪明的技术人员就开始研究如何对音频进行压缩,以便更有效地存储和传输。
MP3 就是在这样的需求下应运而生的。
MP3 格式的压缩原理可不简单。
它主要是通过去除人耳不太敏感的音频信息来实现压缩的。
比如说,一些非常高或者非常低的频率,以及声音中的一些细微差别,在一定程度上被舍弃,但是这些舍弃并不会让我们在正常聆听时感觉到明显的音质损失。
这也就意味着,同样一首歌曲,如果以 MP3 格式保存,其文件大小可能只有几兆,相比原始的未压缩格式,大大节省了存储空间和传输时间。
这使得我们可以在有限的存储空间里存储更多的歌曲,或者更快速地在网络上下载和分享音乐。
那么,MP3 文件有哪些特点呢?首先,它具有较高的压缩比。
这使得它在存储和传输方面具有很大的优势。
其次,MP3 的兼容性非常好。
几乎所有的音频播放设备和软件都支持播放 MP3 格式的文件,无论是电脑、手机、MP3 播放器,还是车载音响等等。
再者,MP3 格式的音质在一定程度上能够满足大多数人的需求。
虽然它不是无损压缩,音质比不上一些未压缩的格式,但对于普通用户来说,已经足够清晰和动听。
然而,MP3 格式也并非完美无缺。
由于它是有损压缩,所以在多次编码和解码的过程中,可能会导致音质逐渐下降。
mp3格式解析-和解析出图片文件

关于网上抄来抄去的MP3格式解析,个人表示很头疼。
记得我当时遇到要解析MP3 格式文件,上网上去查,却发现几乎所有的资料都是一样的。
后来自己在软件里面写代码,测试,发现网上的资料很多不准确,许多是错误的。
我先指正错误的地方。
然后解析出图片。
错误之处就是关于标签帧头部中的表示标签帧大小的计算方法。
关于标签帧头部的5-8个字节表示大小的计算法在网上是这样的:total_size = (Size[0]&0x7F)*0x200000+(Size[1]&0x7F)*0x400+(Size[2]&0x7F)*0x80+(Size[3]&0x7F)其实这个大小是不对的,还要乘以2 就是实际长度是total_size * 2 才是实际长度。
下面是如何解析出图片。
首先要找到帧标示为“APIC”的帧。
此语言是java 其他语言也是一样,原理懂就行。
File file = new File("text.mp3");long length = 0;RandomAccessFile raf = new RandomAccessFile(file, "r");//首先标签头是10个字节,跳过去。
这个直接就是奔着ID3V2去了不判断是否是ID3V2标准了。
int location = 10;byte[] b = new byte[4];int i = -1;//循环执行找4个字节,直到找到标示符为APIC为止while(true){raf.seek(location);if((i = raf.read(b)) == -1){break;}String pid = new String(b);if(pid.equals("APIC")){//找到了,跳过这个标示符退出循环location += 4;break;}location ++;}//继续跳到指定位置,读取下一条内容raf.seek(location);//读取4个字节,也就是表示帧大小的4个字节。
MP3文件标签格式分析与详解

文献标识  ̄ i U - j : A
文章编 号 : 1 0 0 7 — 9 4 1 6 ( 2 0 1 4 ) 0 4 . 0 2 0 6 — 0 2
I D 3 v 2 的结 构 比 I D 3 V1 要复杂得多 , 长 度 不 固定 , 可扩展 , 存 储 每个字段 的长度可伸缩 , 可 以 自定 义字段 。 到 目前为 MP 3 是MP E G 1 影音压缩标 准下的L a y e r 一 3 音频压 缩编 码技术 的信息量大 , I D 3 V 2 一共发展 了4 个版本 , 但流行 的播放软件 只支持第3 版, 即 或 技术 标 准 , 被称作第三代编码技术 , 压缩率可高达 1 : 1 0 -1 : 1 2 , 是 止, D3 v 2. 3 。 种高效有损压 缩编码格式。 在损失少量的不重要的音频数据情 况 I I D 3 V 2 . 3 标签长度不固定, 位于文件的起始处 , 由一个标签头和 下, 能将文件压缩 到最小程度 , 而且 还原时能较好地保持原来的音 若干个标签 帧或一个扩展标签头及标签尾组成 I D 3 V2 . 3 标签包含 质, 是 目前最流行 的数字音频格 式之一 。 的标签帧数量 不是固定的 , 但至少要有一 个标签帧。 可以没有 扩展 2 MP 3 文件结构 标签头和标签尾。 标签头 的格 式如表2 : 标签 长度字段说 明 MP 3 文件是 由一 系列的数据 帧和 曲 目标签 两部分构成 的。 其 ◆标签长度字段的 四个字节 , 每个字节 只用低7 位, 最高位恒为 中: 数据帧含有歌曲的压缩数据 , 是MP 3 文件必须有 的。 曲 目标签保 存的是与歌 曲相 关的信息如歌 曲名 、 演唱者 、 专辑、 发行年份 、 歌词 0 , 得到的是~个以2 8 位二进制数表示 的标签长度。 转换成十进 制数 等等 。 最 早 的MP 3 文件 只有 数 据 帧 , 曲 目标 签 是 对 早 期 MP 3 格 式 的 的算 法 如 下 : I D 3 s i z e = S i z e ( 0 )+&H2 0 0 0 0 0+ S i z e ( 1 ) &H4 0 0 0 + S i z e ( 2 ) 扩展 , 由I D3 v l 、 I D3 v 2 、 AP E V2 几 部分组成 。 其 中: I D 3 v l 标签格 式是于1 9 9 6 年 由E r i c Ke mp ¥ j  ̄ 定 并标 准化 的 , 长 ¥&H8 0 +S i z e ( 3 ) ◆所 计算 的标签 长度值 不包 括标签头本身的l O 4 " 字节 。 度1 2 8 字节 , 放在文件的最 后1 2 8 字 节中。 I D3 v 2 标签格 式诞生于 1 9 9 8 ◆标签长度值所指定的空间可 以大于标签帧实 际占用的空间, 年, 放在文件 的起始处 , 长度不 固定 。 AP E V 2 是最新 出现的一种标 签, 长度不 固定 , 位置 也不 固定 , 比较 常见 的是位 于数据 帧之后 未用 的部分 空间以O 填充 , 可用于扩展新增 的标签信 息。 ◆去掉各字节 的最高位 , 可避免 出现形如F FF 这样 的数字组 I D 3 v l 之前 。 这几 种形 式的标签都是可选 的, 然而在MP 3 的应用与管 合, 而F F E 或F F F 恰恰是数据帧的 同步标志。 因此这样处理 的结果 , 理 中是 非 常 重 要 的 。 可 以避 免 出现 假 同 步信 号 。 3 I D 3 v l 标签 格 式 I D 3 V 2 标 签 帧 格 式 标 签 长度 为 1 2 8 个字 节 , 标 识 符 为 字符 串“ T AG ” 。 各 字 段 的 长度 每 个 标签 帧相 当于 I D 3 V1 标 签 中的 一个 字段 , 含 有一 条 与 曲 目 和位置是 固定的。 格式如表 1 : 相 关的信 息。 每个标签帧是 由一个标签帧头和 帧体组成 。 帧头长 l 0 应用 中发 现, 有的文件I D 3 V1 标识字段 为字符串“ TA G” , 而其 个字节 。 标签帧体至少含有一个字节 , 长度不 固定 。 帧头格式如 图3 、 它字段全为0 或为空 , 歌 曲风格为0 x FF , 这样 的标签不是 曲目制作 发 图4 : 行 时所提供的标签 。 O TC O N风 格 或 流 派有 的直 接 用字 符 串表 示 , 如“ Ho u s e ” , 有 的 当各 字 段 信 息实 际长 度 小 于字 段 长度 时 , 其 余部 分 须 用 0 填充。 是用编号表示 。 歌 曲风格编号有效值范 围为0 —1 4 7 , 所代表 的风格或类别可在 ◆T RC K音轨 的格 式为 : N/ M。 其中 , M表示歌 曲总数 , N代表
MP3解码过程说明

MP3解码过程说明MP3解码是将MP3文件中的音频数据转换为可听的音频信号的过程。
MP3是一种有损压缩格式,它通过去除音频信号中的感知较小的部分来减少文件的大小,同时保持较高的音频质量。
解码过程涉及多个步骤,包括解压缩、还原、重建和输出等。
下面是MP3解码过程的详细说明。
1.文件解析:MP3文件的解码过程首先需要对文件进行解析,确定文件的格式和结构。
这包括读取文件头信息,如文件标识符、比特率、采样率和声道数等。
解析还会确定音频数据的位置,以便后续的解码过程。
2.比特流解析:解析器会读取MP3文件中的压缩比特流数据。
比特流是通过比特位流传输的压缩音频数据,其中包含了音频信号的频域表示。
解析器会解码比特流,获取其中的音频数据。
3.帧解析:MP3文件被划分为一系列的帧,每个帧包含一小段音频数据。
音频数据被分为不同的频带,其中低频信息用较少的比特表示,而高频信息则用较多的比特表示。
解析器会逐帧解析比特流,确定每个帧的大小和帧头信息。
帧头信息包括采样率、声道模式和比特率等。
4.预处理:在解码音频数据之前,需要进行一些预处理操作。
这包括去掉数据中的噪声和混响等不需要的成分,以及处理音频数据的平滑和补偿等。
预处理还可以对音频数据进行均衡化和动态范围控制,以改善音频的听感。
5.频域到时域转换:MP3文件中的音频数据是以频域表示的,需要将其转换为时域信号。
这涉及到使用反变换算法将频域数据转换为时域数据。
常用的反变换算法包括离散余弦变换(DCT)和快速傅里叶变换(FFT)等。
6.量化和还原:在频域到时域转换后,音频数据被量化为一系列的样本值。
量化算法将连续的音频信号离散化为一系列的数字样本。
解码过程会恢复这些量化样本,使用逆量化算法将其还原为原始的音频信号。
逆量化算法会根据帧头信息以及比特率等参数来恢复音频数据的动态范围。
7.瞬态保护:解码过程还需要对音频信号进行瞬态保护,以减小解码过程中的失真。
瞬态保护算法会根据帧头信息和帧中的瞬态信息,采用一些处理方法来处理瞬态信号。
常见音频格式盘点分析

常见音频格式盘点分析
音频格式是指在进行数字音频存储时所用的文件格式,它用来描述音
频文件的特性,压缩方式,支持的技术及其他格式信息。
常见的音频格式
有WAV、AIFF、MP3、OGG、FLAC、WMA等。
1、WAV格式
WAV格式是一种比较常用的数字音频格式,它是由微软公司和IBM开
发的,主要用于存储CD上播放的音频文件。
WAV文件是无损的,能够恰
到好处的保存原始录制的音频数据,但是WAV文件大小很大,不利于传输
和存储。
2、AIFF格式
AIFF格式(Audio Interchange File Format)是苹果公司开发的一
种无损音频格式,主要用于存储音频数据,它也可以用来创建音频CD,
类似于WAV格式,AIFF文件也很大,且不方便存放和传输。
3、MP3格式
MP3是一种经过索尼公司和编码艺术家开发的音频压缩格式,它利用
了哈夫曼编码、时间冗余和混合编码等技术,使音频文件体积大大缩小,
很适合于在网络上传输和存储。
MP3质量和文件大小之间通常是成反比的,一般而言MP3格式的质量要比WAV格式低。
4、OGG格式
OGG格式是一种开放的、免费的带有许可证的压缩音频格式,它提供
比MP3更高的压缩比,并具有较好的声音质量,现在被广泛应用到了网络
和智能手机上。
5、FLAC格式
FLAC格式(Free Lossless Audio Codec)是一种无损压缩的音频格式。
了解电脑中常见的音频文件格式转换方法和工具

了解电脑中常见的音频文件格式转换方法和工具在电脑应用领域,音频文件的格式转换是非常常见的操作。
不同的音频格式适用于不同的场合和设备,因此了解音频文件格式转换方法和工具对于用户来说是非常重要的。
本文将介绍一些常见的音频文件格式转换方法和工具,并提供一些实用的技巧和建议。
一、了解音频文件格式在开始讨论音频文件格式转换的方法和工具之前,我们首先需要了解一些常见的音频文件格式。
常见的音频文件格式包括MP3、WAV、FLAC、AAC、OGG等。
每种格式都有其特定的特点和用途。
1. MP3(MPEG-1 Audio Layer III):是一种常见的音频压缩格式,其压缩率高,文件大小小,适合用于存储和传输音频文件。
然而,由于压缩过程中的数据损失,MP3格式的音频质量相对较低。
2. WAV(Waveform Audio File Format):是Windows系统中常见的无损音频格式,它可以保留原始音频数据,因此具有较高的音质。
然而,由于文件体积较大,传输和存储成本较高。
3. FLAC(Free Lossless Audio Codec):是一种无损音频压缩格式,它可以在保持音质不损失的同时,降低文件大小。
因此,FLAC格式适用于需要高音质但希望文件保持较小的情况。
4. AAC(Advanced Audio Coding):是一种广泛应用于音频压缩的格式,常见于苹果设备和iTunes。
AAC格式在保持音质的同时,文件大小相对较小。
5. OGG:是一种自由、开放的音频容器格式,常用于网络流媒体和游戏背景音乐等。
OGG格式在音质和文件大小之间取得了一定的均衡。
了解了这些常见的音频文件格式后,我们可以根据具体的需求和设备要求来选择合适的格式进行转换。
二、常见的音频文件格式转换方法1. 使用专业音频转换工具:市面上有许多专业的音频转换工具,它们提供了丰富的功能和选项,能够满足不同用户的需求。
比如,Format Factory、Freemake Video Converter、手工转换等。
mp3 十六进制解析

mp3 十六进制解析
将MP3文件转换为十六进制进行解析,可以按照以下步骤进行:
读取MP3文件的全部数据。
由于音频文件的大小不一,所需的存储空间可能很大,因此需要设置足够大的缓冲区来存储全部数据。
将读取的数据转换为十六进制格式。
可以使用编程语言中的相关函数或方法,将每个字节转换为对应的十六进制表示。
对转换后的十六进制数据进行解析。
可以根据MP3文件的格式规范,对十六进制数据进行逐位分析,提取出音频文件的各种信息,如声道数、采样率、压缩编码等。
需要注意的是,MP3文件的格式规范比较复杂,需要对音频编码和文件格式有一定的了解才能进行正确的解析。
同时,转换和解析过程中也需要注意数据的正确性和完整性,以避免出现错误或遗漏。
常见文件格式解析及其适用软件推荐

常见文件格式解析及其适用软件推荐随着科技的不断发展,我们在日常生活和工作中经常会接触到各种不同的文件格式。
这些文件格式有不同的特点和用途,了解它们的特点和使用方法对我们的工作和生活都有很大的帮助。
在本文中,我们将对一些常见的文件格式进行解析,并推荐适用的软件。
一、文本文件格式1. TXT格式:TXT是最常见的文本文件格式,它只包含纯文本内容,没有任何格式和样式。
它可以被几乎所有的文本编辑器和处理软件打开和编辑,如Windows自带的记事本、Notepad++等。
2. DOC/DOCX格式:DOC是微软Word的文件格式,而DOCX是其新版本的文件格式。
这两种格式都支持文本、图像、表格等内容的编辑和排版。
DOC格式可以被Microsoft Word、OpenOffice等软件打开和编辑,而DOCX格式则需要较新的版本的Word或其他兼容软件。
3. PDF格式:PDF是一种便携式文档格式,它可以在不同操作系统和设备上保持相同的显示效果。
PDF格式适用于需要保持原始格式和布局的文档,如合同、报告等。
Adobe Acrobat Reader是最常用的PDF阅读器,Adobe Acrobat Pro和Foxit Reader则可以进行编辑和转换。
二、图像文件格式1. JPEG/JPG格式:JPEG是一种常见的图像文件格式,它采用有损压缩算法,可以在保持较高图像质量的同时减小文件大小。
JPEG格式适用于存储和传输照片、图像等。
Windows自带的照片查看器、Adobe Photoshop等软件都可以打开和编辑JPEG格式的图像。
2. PNG格式:PNG是一种无损压缩的图像文件格式,它支持透明背景和更多的颜色。
PNG格式适用于需要保持图像质量和透明背景的场景,如图标、网页设计等。
Windows自带的照片查看器、Adobe Photoshop等软件都可以打开和编辑PNG格式的图像。
3. GIF格式:GIF是一种支持动画的图像文件格式,它可以显示连续的图像帧,形成动态效果。
MP3文件格式解析

MP3文件格式解析MP3文件数据由多个帧组成,帧是MP3文件最小组成单位。
每个帧又由帧头、附加信息和声音数据组成。
每个帧播放时间是0.026秒,其长度随位率的不同而不等。
有些MP3文件末尾有些额外字节存放非声音数据的说明信息。
MP3文件结构如图1所。
第1帧第2帧图1 MP3文件结构1.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。
MP3帧长取决于位率和频率,计算公式为:. mpeg1.0 layer1 : 帧长= (48000*bitrate)/sampling_freq + paddinglayer2&3: 帧长= (144000*bitrate)/sampling_freq + padding. mpeg2.0 layer1 : 帧长= (24000*bitrate)/sampling_freq + paddinglayer2&3 : 帧长= (72000*bitrate)/sampling_freq + padding例如:位率为64kbps,采样频率为44.1kHz,padding(帧长调节)为1时,帧长为210字节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MP3文件格式解析Peter Lee 2008-06-05目录一、概述二、整个MP3文件结构三、MP3帧格式1. 帧头格式2. MAIN_DATA四、ID3标准1. ID3V12. ID3V2五、MP3文件实例剖析六、资料一、概述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帧格式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。
MP3帧长取决于位率和频率,计算公式为:. mpeg1.0 layer1 : 帧长= (48000*bitrate)/sampling_freq + paddinglayer2&3: 帧长= (144000*bitrate)/sampling_freq + padding. mpeg2.0 layer1 : 帧长= (24000*bitrate)/sampling_freq + paddinglayer2&3 : 帧长= (72000*bitrate)/sampling_freq + padding例如:位率为64kbps,采样频率为44.1kHz,padding(帧长调节)为1时,帧长为210字节。
帧头后面是可变长度的附加信息,对于标准的MP3文件来说,其长度是32字节,紧接其后的是压缩的声音数据,当解码器读到此处时就进行解码了。
表1 MP3帧头字节使用说明名称位长说明同步信息11所有位均为1,第1字节恒为FF。
版本200-MPEG 2.5 01-未定义10-MPEG 2 11-MPEG 1层200-未定义01-Layer 3 10-Layer 2 11-Layer 1CRC校验1第1、2字节0-校验1-不校验位率4取样率,单位是kbps,例如采用MPEG-1 Layer 3,64kbps是,值为0101。
bits V1,L1V1,L2V1,L3V2,L1V2,L2V2,L30000free free free free free free000132323232(32)32(8)8 (8)001064484064(48)48(16)16 (16)001196564896(56)56(24)24 (24)01001286456128(64)64(32)32 (32)01011608064160(80)80(40)64 (40)01101929680192(96)96(48)80 (48)011122411296224(112)112(56)56 (56)1000256128112256(128)128(64)64 (64)1001288160128288(144)160(80)128 (80)1010320192160320(160)192(96)160 (96)1011352224192352(176)224(112)112(112) 1100384256224384(192)256(128)128(128) 1101416320256416(224)320(144)256(144) 1110448384320448(256)384(160)320(160) 1111bad bad bad bad bad badV1 - MPEG 1 V2 - MPEG 2 and MPEG 2.5L1 - Layer 1 L2 - Layer 2 L3 - Layer 3"free" 表示位率可变"bad" 表示不允许值采样频率2第3字节采样频率,对于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用来调整文件头长度,0-无需调整,1-调整,具体调整计算方法见下文。
保留字1没有使用。
声道模式2表示声道, 00-立体声Stereo 01-Joint Stereo 10-双声道11-单声道扩充模式2当声道模式为01是才使用。
Value强度立体声MS立体声00off off01on off10off on11on on版权1文件是否合法,0-不合法1-合法原版标志1是否原版,0-非原版1-原版强调方式2第4字节用于声音经降噪压缩后再补偿的分类,很少用到,今后也可能不会用。
00-未定义01-50/15ms 10-保留11-CCITT J.172. MAIN_DATAMAIN_DATA 部分长度是否变化决定于FRAMEHEADER 的bitrate 是否变化,一首MP3 歌曲,它有三个版本:96Kbps(96 千比特位每秒)、128Kbps 和192Kbps。
Kbps(比特位速率),表明了音乐每秒的数据量,Kbps 值越高,音质越好,文件也越大,MP3 标准规定,不变的bitrate 的MP3 文件称作CBR,大多数MP3文件都是CBR 的,而变化的bitrate 的MP3 文件称作VBR,每个FRAME 的长度都可能是变化的。
下面是CBR和VBR 的不同点:1)CBR:固定位率的FRAME 的大小是固定的(公式如上所述),只要知道文件总长度,和帧长即可由播放每帧需26ms 计算得出mp3 播放的总时间,也可通过计数帧的个数控制快进、快退慢放等操作。
注:有些时候,并不是所有的帧都是等长的,有的帧可能多一个或几个字节。
2)VBR:VBR 是XING 公司推出的算法,所以在MP3 的FRAME 里会有“XING"这个关键字(现在很多流行的小软件也可以进行VBR 压缩,它们是否遵守这个约定,那就不得而知了),它存放在MP3 文件中的第一个有效FRAME 里,它标识了这个MP3 文件是VBR 的。
同时第一个FRAME 里存放了MP3 文件的FRAME 的总个数,这就很容易获得了播放总时间,同时还有100 个字节存放了播放总时间的100 个时间分段的FRAME 的INDEX,假设4 分钟的MP3 歌曲,240S,分成1 00 段,每两个相邻INDEX 的时间差就是2.4S,所以通过这个INDEX,只要前后处理少数的FRAME,就能快速找出我们需要快进的FRAME 头。
表2 VBR文件第一帧结构字节说明1-4与CBR相同的标准声音帧头存放VBR文件标识“Xing”(58 69 6E 67),此标识具体位置视采用的MPEG标准和声道模式而定。
标识的前后字节没有使用。
36-39MPEG-1和非单声道(常见)21-24MPEG-1和单声道21-24MPEG-2和非单声道5-4013-16MPEG-2和单声道41-44标志,说明是否存储了帧数、文件长度、目录表和VBR规模信息,如果存储了,则01 02 04 08。
45-48帧数(包括第一帧)49-52文件长度53-152目录表,用来按时间进行字节定位。
153-156VBR规模,用于位率变动另可参考下文:This system was created to minimize file lengths and to preserve sound quality.Higher frequencies generally needs more space for encoding (thats why many codecs cut all frequencies above cca 16kHz) and lower tones requires less. So if some part of song doesnt consistof hig her tones then using eg. 192kbps is wasting of space. It should be enough to use only eg.96kbps.And it is the principle of VBR. Codec looks over frame and then choose bitrate suitable for itssound qualit y.It sounds perfect but it brings some problems:If you want to jump over 2 minutes in song, it is not a problem with CBR because you are ablesimply count amount of Bytes which is necessary to skip. But it is impossible with VBR. Framelengths should be arbitrary so you have to either go frame by frame and counts (time consumingand very unpractical) or use another mechanism for approximate count.If you want to cut 5 minutes from the middle of VBR file (all we know CDs where last song takes10 minutes but 5 minutes is a pure silence, HELL!) problems are the same.Result? VBR files are more difficult for controlling and adjusting. And I dont like feeling thatsound quality changes in every moment. And AFAIK many codecs have problems with creation VBR ingoo d quality.Personally I cant see any reason why to use VBR - I dont give a fuck if size of one CD in MP3is 55 MB with CBR or 51 MB with VBR. But everybody has a different taste... some people preferVBR.VBR File Structureis the same as for CBR. But the first frame doesnt contain audio data and it is used for specialinformation about VBR file.Structure of the first frame:Byte Content0-3 Standard audio frame header (as descripted above). Mostly it contains values FF FB 30 4C, from which you can count FrameLen = 156 Bytes. And thats exactly enoughspace for storing VBR info.This header contains some important information valid for the whole file:- MPEG (MPEG1 or MPEG2)- SAMPLING rate frequency index- CHANNEL (JointStereo etc.)4-x Not used till string "Xing" (58 69 6E 67). This string is used as a main VBR file identifier. If it is not found, file is supposed to be CBR. This string can be placedat different locations according to values of MPEG and CHANNEL (ya, these from afew lines upwards):36-39 "Xing" for MPEG1 and CHANNEL != mono (mostly used)21-24 "Xing" for MPEG1 and CHANNEL == mono21-24 "Xing" for MPEG2 and CHANNEL != mono13-16 "Xing" for MPEG2 and CHANNEL == monoAfter "Xing" string there are placed flags, number of frames in file and a sizeof file in Bytes. Each of these items has 4 Bytes and it is stored as 'int' numberin memory. The first is the most significant Byte and the last is the least.Following schema is for MPEG1 and CHANNEL != mono:40-43 FlagsValue Name Description00 00 00 01 Frames Flag set if value for number of frames in file is stored00 00 00 02 Bytes Flag set if value for filesize in Bytes is stored00 00 00 04 TOC Flag set if values for TOC (see below) are stored00 00 00 08 VBR Scale Flag set if values for VBR scale are storedAll these values can be stored simultaneously.44-47 FramesNumber of frames in file (including the first info one)48-51 BytesFile length in Bytes52-151 TOC (Table of Contents)Contains of 100 indexes (one Byte length) for easier lookup in file. Approximatelysolves problem with moving inside file.Each Byte has a value according this formula:(TOC[i] / 256) * fileLenInBytesSo if song lasts eg. 240 sec. and you want to jump to 60. sec. (and file is 5 000000 Bytes length) you can use:TOC[(60/240)*100] = TOC[25]and corresponding Byte in file is then approximately at:(TOC[25]/256) * 5000000If you want to trim VBR file you should also reconstruct Frames, Bytes and TOCproperly.152-155 VBR ScaleI dont know exactly system of storing of this values but this item probably doesnthave deeper meaning.四、ID3标准MP3帧头中除了存储一些象private、copyright、original的简单音乐说明信息以外,没有考虑存放歌名、作者、专辑名、年份等复杂信息,而这些信息在MP3应用中非常必要。