mp3文件格式
7种常见的音频格式简析

7种常见的音频格式简析(MP3,WMA,WAV,APE,FLAC,OGG,AAC)MP3全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer Ⅲ),是当今最为流行的一种数字音频编码和有损压缩格式,在1991年由位于德国埃尔朗根的研究组织Fraunhofer-Gesellschaft的一组工程师发明和标准化的。
它设计用来大幅度地降低音频数据量,而对于大多数用户来说重放的音质与最初的不压缩音频相比感觉不到很大的下降。
简单地说,MP3就是一种音频压缩技术,由于这种压缩方式的全称叫MPEG Audio Layer3,所以人们把它简称为MP3。
MP3是利用MPEG Audio Layer 3 的技术,将音乐以1:10 甚至1:12 的压缩率,压缩成容量较小的文件。
换句话说,能够在音质丢失很小的情况下把文件压缩到更小的程度,而且还可以较好的保持了原来的音质。
另外,正是因为MP3体积小,音质高的特点使得MP3格式几乎成为网上音乐的代名词。
每分钟音乐的MP3格式只有1MB左右大小,这样每首歌的大小只有3-4兆字节。
使用MP3播放器对MP3文件进行实时的解压缩(解码),这样,高品质的MP3音乐就播放出来了。
● MP3格式特点MP3是一个有损数据压缩格式,它丢弃掉脉冲编码调制(PCM)音频数据中对人类听觉不重要的数据(类似于JPEG是一个有损图像压缩),从而达到了小得多的文件大小(其在较大的压缩率以及基本保持低音频部分不失真的情况下,以牺牲声音文件中12kHz到16kHz的高音频部分来实现小文件)。
MP3音频可以按照不同的位速进行压缩,提供了在数据大小和声音质量之间进行权衡的一个范围。
另外,MP3格式使用了混合的转换机制将时域信号转换成频域信号。
例如,我们平时在网上见到的一些低质的MP3有64kbps,但好的也有320kbps的,两者声音差距也相当明显。
mp3和mp4解压方式原理2000字

mp3和mp4解压方式原理2000字MP3和MP4是两种常见的音视频文件格式,它们的解压方式和原理有所不同。
下面将详细介绍MP3和MP4的解压方式和原理。
一、MP3解压方式和原理MP3是一种音频编码格式,它通过压缩音频数据来减小文件大小,从而节省存储空间和传输带宽。
MP3的解压方式主要包括以下几个步骤:1.读取文件头部信息:MP3文件的开头部分包含了一些元数据,如音频采样率、声道数等信息。
解压时首先需要读取这些信息。
2.解析帧数据:MP3文件由一个个帧组成,每个帧包含了一定长度的音频数据。
解压时需要逐帧地解析帧数据。
3.解码音频数据:MP3文件中的音频数据经过了特定的编码算法,解压时需要将编码后的数据解码为原始的音频数据。
4.重建音频信号:解码后的音频数据是经过量化和压缩的,需要进行反量化和逆变换来还原出原始的音频信号。
MP3的解压原理主要基于人耳对声音的感知特性。
MP3格式利用了人耳对一些高频信号的较低敏感度,通过减少这些高频信号的数据量来实现压缩。
在解压时,通过一些复杂的算法来还原出原始的音频信号,以达到高音质的播放效果。
二、MP4解压方式和原理MP4是一种常见的视频文件格式,它不仅可以存储音频数据,还可以存储视频数据和其他多媒体数据。
MP4的解压方式主要包括以下几个步骤:1.解析文件结构:MP4文件的结构比较复杂,包含了多个轨道,每个轨道又包含了多个媒体样本。
解压时首先需要解析文件结构,确定需要解压的轨道和样本。
2.解析媒体样本:MP4文件中的媒体样本包括音频帧和视频帧,解压时需要逐帧地解析这些样本数据。
3.解码媒体数据:MP4文件中的音频和视频数据经过了特定的编码算法,解压时需要将编码后的数据解码为原始的音频和视频数据。
4.重建音视频信号:解码后的音频和视频数据是经过压缩的,需要进行一系列的处理步骤来还原出原始的音视频信号,包括去压缩、去块效应等处理。
MP4的解压原理主要是基于视频编码和音频编码技术。
mp3上传

mp3上传MP3上传: 全面解读及使用指南引言在数字化时代,音频文件成为我们日常生活中不可或缺的一部分。
MP3,即MPEG-1 Audio Layer 3,是一种常见且广泛使用的音频文件格式。
MP3格式的优势在于其高压缩比和较小的文件大小,使得人们可以方便地存储、传输和分享音频文件。
本文将全面解读MP3上传的过程及使用指南,帮助您更好地管理和使用您的音频文件。
一、MP3文件格式简介1. MP3文件格式的历史和发展MP3格式最早于1987年由德国科学家卡尔海因茨·布兰特(Karlheinz Brandenburg)发明,其目的是为了提供一种高质量音频文件的压缩格式。
随着互联网的普及和数字音乐的兴起,MP3格式迅速成为流行的音频文件格式。
2. MP3格式的特点MP3格式使用可变比特率(VBR)来达到高压缩比,从而减小文件大小。
它可以提供高质量的音频,同时又不占用太多存储空间。
此外,MP3格式还支持元数据(metadata)的添加,可以包含歌曲的艺术家、专辑、标题等信息。
二、MP3上传的方法1. 通过计算机上传MP3文件最常见的MP3上传方式是通过计算机。
您可以将MP3文件从本地存储设备(如硬盘、U盘等)复制到计算机的特定文件夹中。
然后,您可以使用各种软件或在线平台来上传或转换您的MP3文件。
2. 通过移动设备上传MP3文件如今,移动设备(如智能手机和平板电脑)已成为人们使用MP3文件的主要方式之一。
您可以使用相应的应用程序或操作系统内置的功能,通过无线网络或数据线将MP3文件传输到移动设备。
三、MP3上传的工具和平台1. 本地软件计算机上常用的本地软件有Windows Media Player、iTunes、Winamp等。
这些软件提供了简单易用的界面和功能,可以方便地将音频文件上传到计算机,并进行整理和管理。
2. 云存储平台云存储平台(如Google Drive、Dropbox、OneDrive等)提供了便捷的方法来存储、共享和上传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文件格式解析

11-10 2 sampling_frequency, 00 – 44.1KHz, 01 – 48KHz
10 – 32 KHz, 11 –保留
9 1 padding_bit,1意味着帧里包含padding位,仅当采样频率为44.1KHz时发生。
8 1 private_bit
当144 * Bitrate / SamplingRate不能被8整除,则加上相应的paddingBit.
B,MAIN_DATA:
MP3的granule包含18 * 32个subband采样。每个数据帧含有两个granule的数据,其内容结如下:
- main_data_end pointer
- side info for both granules (scfsi)
在二进制文本编辑器里我们还可看到一个字符串“LAME”,并且后面清楚地跟着版本号。这就是20个字节的Zone B初始LAME信息,表示该文件是用LAME编码技术。接下来一直到该帧结束就是Zone C-LAME标签。
3,相关资料
×Mp3 Info Tag rev 1 specifications - draft 0
A,帧头结构如下:
位置长度描述
(BIT)(BITS)
————————————————————————————
31-19 12 Frame sync(0xFFF)
18/17 2 Layer, 00 – reserved, 01 – Layer III
10 – Layer II, 11-Layer I
16 1 protection_bit, 0意味着受CRC保护,帧头后面跟16位的CRC。
00-no emphasis, 01 – 50/15 microsec. Emphasis
APE、DTS、WAV、FLAC、MP3 常见音乐格式介绍

一、APE格式1、介绍APE是一种无损压缩音频格式。
庞大的WAV音频文件可以通过Monkey's Audio这个软件进行"瘦身"压缩为APE,同样,APE也可以通过Monkey's Audio还原成WAV,再刻录成CD。
很时候它被用做网络音频文件传输,因为被压缩后的APE文件容量要比WAV源文件小一半多,可以节约传输所用的时间。
更重要的是,通过Monkey's Audio解压缩还原以后得到的WAV文件可以做到与压缩前的源文件完全一致。
所以APE被誉为"无损音频压缩格式",Monkey's Audio被誉为"无损音频压缩软件"。
与采用WinZip或者WinRAR 这类专业数据压缩软件来压缩音频文件不同,压缩之后的APE音频文件是可以直接被播放的。
2、播放器:千千静听 Foobar2000 Winamp等二、DTS格式1、介绍DTS是“Digital Theatre System”的缩写,是“数字化影院系统”的意思。
从技术上讲,DTS与包括Dolby Digital在内的其它声音处理系统是完全不同的。
Dolby Digital 是将音效数据存储在电影胶片的齿孔之间,因为空间的限制而必须采用大量的压缩的模式,这样就不得不牺牲部分音质。
DTS公司用一种简单的办法解决了这个问题,即把音效数据存储到另外的CD-ROM中,使其与影像数据同步。
这样不但空间得到增加,而且数据流量也可以相对变大,更可以将存储音效数据的CD更换,来播放不同的语言版本。
2、播放:要输出DTS信号必须有DVD播放器。
大多数较新的播放器都具有此功能。
在接收的设备中必须有DTS解码器或在中间加入一个独立的处理系统。
用于播放DTS光盘的播放器必须有数码输出功能。
DTS光盘和DTS CD播放系统都必须具有DTS解码器。
三、WAV格式WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,该格式也支持MSADPCM,CCITT A LAW等多种压缩运算法,支持多种音频数字,取样频率和声道,标准格式化的WAV文件和CD格式一样,也是44.1K的取样频率,16位量化数字,因此在声音文件质量和CD相差无几! WAV打开工具是WINDOWS的媒体播放器。
mp3音频格式解析

MPEG2.5 384 1152 576
【每帧采样数表】
帧长度是压缩时每一帧的长度,包括帧头。它将填充的空位也计算在内。LayerI 的一个空位长 4 字节,LayerII 和 LayerIII 的空位是 1 字节。当读取 MPEG 文件时必 须计算该值以便找到相邻的帧。
注意:因为有填充和比特率变换,帧长度可能变化。 从头中读取比特率,采样频率和填充, LyaerI 使用公式: 帧长度(字节) = 每帧采样数 / 采样频率(HZ) * 比特率(bps)/ 8 +填充 * 4 LyerII 和 LyaerIII 使用公式: 帧长度(字节)= 每帧采样数 / 采样频率(HZ) * 比特率(bps)/ 8 + 填充 例: LayerIII 比特率 128000,采样频率 44100,填充 0 =〉帧大小 417 字节
每帧持续时间(秒) = 每帧采样数 / 采样频率(HZ)
可以这么理解:每帧采用数就是要采取的总数,采样率就是采取的速度,相除 就得到时间。 这样通过计算可知 MPEG1 Layer III 采样率为 44.1KHz 的一帧持续时间为 26.12...不是整数,不过我们权且认为它就是 26 毫秒吧。 如果是 MPEG2 Layer III 采样率为 16KHz 的话那一帧要持续 36 毫秒,这个相差 还是蛮大的,所以还是应该通过计算来获的,当然可以按 MPEG 版本,层数和采样 率来建一个表,这样直接查表就可以知道时间了。
G
1
(9) 填充位(填充用来达到正确的比特率。)
0 – 没有填充
1 – 填充了一个额外的空位
H
1
(8) 私有 bit,可以用来做特殊应用。例如可以
用来触发应用程序的特殊事件。
I
MP3文件格式简介

MP3⽂件格式简介1、概述Moving Picture Experts Group Audio Layer III(MPEG-1 Audio Layer 3,动态图像专家压缩标准⾳频层⾯3),经常称为MP3,是当今较流⾏的⼀种数字⾳频编码和有损压缩格式,它设计⽤来⼤幅度地降低⾳频数据量,⽽对于⼤多数⽤户的听觉感受来说,重放的⾳质与最初的不压缩⾳频相⽐没有明显的下降。
它是在1991年,由位于德国埃尔朗根的研究组织Fraunhofer-Gesellschaft的⼀组⼯程师发明和标准化的。
MP3是⼀个数据压缩格式。
它舍弃脉冲编码调制(PCM)⾳频数据中,对⼈类听觉不重要的数据(类似于JPEG是⼀个有损图像压缩),从⽽达到了压缩成⼩得多的⽂件⼤⼩。
MP3中使⽤了许多技术,其中包括⼼理声学,以确定⾳频的哪⼀部分可以丢弃。
MP3⾳频可以按照不同的⽐特率进⾏压缩,提供了权衡数据⼤⼩和⾳质之间的依据。
MP3格式使⽤了混合的转换机制将时域信号转换成频域信号:1)32波段多相积分滤波器(PQF)2)36或者12 tap 改良离散余弦滤波器(MDCT);每个⼦波段⼤⼩可以在0...1和2...31之间独⽴选择3)混叠衰减后处理根据MPEG规范的说法,尽管有许多创造和推⼴其他格式的重要努⼒,MPEG-4标准中的AAC(Advanced Audio Coding)将是MP3格式的接棒者。
然⽽,由于MP3的空前的流通,在⽬前来说,其他格式并未能威胁其地位。
MP3不仅有⼴泛的⽤户端软体⽀持,也有很多的硬件⽀持,⽐如便携式数位⾳频播放器(泛指MP3播放器)、DVD和CD播放器。
因为MP3是⼀种有损压缩格式,它提供了多种不同“⽐特率”(bit rate)的选项—也就是⽤来表⽰每秒⾳频所需的编码数据位数。
典型的速度介于128kbps和320kbps(kbit/s)之间。
与此对照的是,CD上未经压缩的⾳频⽐特率是1411.2 kbps(16 位/采样点 × 44100 采样点/秒 × 2 通道)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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的信息量。
Frame...Frame一系列的帧,个数由文件大小和帧长决定 每个FRAME 的长度可能不固定,也可能固定,由位率bitrate 决定 每个FRAME 又分为帧头和数据实体两部分 帧头记录了mp3的位率,采样率,版本等信息,每个帧之间相互独立ID3V1包含了作者,作曲,专辑等信息,长度为128BYTE。
10 - 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 follows header)1 - Not protectedE 4 (15,12) Bitrate indexbits V1,L1V1,L2V1,L3V2,L1V2,L2V2,L30000 free 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 bad 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 allowed valueThe values in parentheses are from different sources whichclaim that those values are valid for V2,L2 and V2,L3. Ifanyone can confirm please let me know.F 2 (11,10) Sampling rate frequency index (values are in Hz)bits MPEG1 MPEG2 MPEG2.500 44100 22050 1102501 48000 24000 1200010 32000 16000 800011 reserv.reserv.reserv.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 Intensity stereo MS 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。
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,分成100段,每两个相邻INDEX的时间差就是2.4S,所以通过这个INDEX,只要前后处理少数的FRAME,就能快速找出我们需要快进的FRAME头,可参考下文: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 consist of higher 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 its sound quality.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 able simply count amount of Bytes which is necessary to skip. But it is impossible with VBR. Frame lengths should be arbitrary so you have to either go frame by frame and counts (time consuming and 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 takes 10 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 that sound quality changes in every moment. And AFAIK many codecs have problems with creation VBR in good quality.Personally I cant see any reason why to use VBR - I dont give a fuck if size of one CD in MP3 is 55 MB with CBR or 51 MB with VBR. But everybody has a different taste... some people prefer VBR.VBR File Structureis the same as for CBR. But the first frame doesnt contain audio data and it is used for special information 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-47FramesNumber of frames in file (including the first info one)48-51BytesFile length in Bytes52-151TOC (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-155VBR ScaleI dont know exactly system of storing of this values but this item probably doesnthave deeper meaning.四.ID3v1ID3V1比较简单,它是存放在MP3文件的末尾,用16进制的编辑器打开一个MP3文件,查看其末尾的128个顺序存放字节,数据结构定义如下:typedef struct tagID3V1{char Header[3]; /*标签头必须是"TAG"否则认为没有标签*/char Title[30]; /*标题*/char Artist[30]; /*作者*/char Album[30]; /*专集*/char Year[4]; /*出品年代*/char Comment[28]; /*备注*/char reserve; /*保留*/char track;; /*音轨*/char Genre; /*类型*/}ID3V1,*pID3V1;ID3V1的各项信息都是顺序存放,没有任何标识将其分开,比如标题信息不足30个字节,则使用'\0'补足,否则将造成信息错误。