mp3文件格式详解

Mp3文件格式:

参考:https://www.cnblogs.com/ranson7zop/p/7655474.html

https://www.cnblogs.com/ranson7zop/p/7655474.html

 

下面对根据一个mp3文件讲解下,如下图所示:

 

 

 

 

如下图十个字节代表ID3V2.4的标签头,;0x49 44 33 代表ID3,0x04代表ID3的版本号(4代表ID3V2.4;  0x 00 00 00 23代表标签大小(不包括标签头的十个字节),通过计算标签大小就可以偏移到数据帧。如下代表标签大小为0x23+10=45。

 

如下图所示:标签帧为鼠标选择的部分,大小为35个字节。0x54 53 53 45代表TSSE这中音频标识(不同音频文件不同)。0x 00 00 00 0F代表帧大小,0x00 00 存放标志。后面的几个0x000000000用来扩展。

 

 

如下图所示为第一个数据帧:帧头为FFFBD000

1111  1111 1111 1011 1101 0000 0000 0000

前11位位固定的1,

12-13,版本 11-》MPEG1

14-15  01->Layer3

16  CRC校验   1-》不校验

17-20,位率(码率) 1101-》256k/s

21到22:采样率 00  =>44100

第23位:帧长调节,其值为0 ->无需调整 

第24位:未使用

第25到26位:声道模式,其值为00->立体声Stereo

第27到28位:扩充模式,当声道模式为01(联合立体声)时才使用,此处未使用

第29位:版权,其值为0->无版权

第30位:原版标志,其值为9->不是原版文件

第31到32位:强调方式,其值为00->未定义

 

帧大小和帧长度。帧大小即每帧采样数表示一帧中采样的个数,这是恒定值。其值如下表所示

 

MPEG 1

MPEG 2(LSF)

MPEG 2.5(LSF)

Layer 1

384

384

384

Layer 2

1152

1152

1152

Layer 3

1152

576

576

 

 

 

 

 

帧长度是压缩时每一帧的长度,包括帧头。它将填充的空位也计算在内。LayerI的一个空位长4字节,LayerII和LayerIII的空位是1字节。当读取MPEG文件时必须计算该值以便找到相邻的帧。注意:因为有填充和比特率变换,帧长度可能变化。

从头中读取比特率,采样频率和填充的值后可以进行计算,

LyaerI使用公式:

帧长度(字节) = (( 每帧采样数/ 8 * 比特率 ) / 采样频率 ) + 填充 * 4

LyerII和LyaerIII使用公式:

帧长度(字节)= (( 每帧采样数/ 8 * 比特率 ) / 采样频率 ) + 填充

例:

LayerIII 比特率 128000,采样频率 44100,填充0  =〉帧大小 417字节;

如图 2.3中,比特率为128K,采样率为44.1K,填充0,则其帧长度为:

(1152 / 8 * 128K)/44.1K = 417 (字节)

 

2)每帧的持续时间

每帧的持续时间可以通过计算获得,下面给出计算公式

每帧持续时间(毫秒) = 每帧采样数 / 采样频率 * 1000

如图 2.3中,其每帧时间为:

1152 / 44.1K * 1000 = 26.12 (约等于26ms)

如果是MPEG2 Layer III 采样率为16KHz的话那一帧要持续36毫秒,这个相差还是蛮大的,所以还是应该通过计算来获的。

 

3)CRC校验

如果帧头的校验位为0,则帧头后就有一个16位的CRC值,这个值是big-endian的值,把这个值和该帧通过计算得出的CRC值进行比较就可以得知该帧是否有效。

 

4帧数据

在帧头后边是Side Info(姑且称之为通道信息)。对标准的立体声MP3文件来说其长度为32字节。通道信息后面是Scale factor(增益因子)信息。当解码器在读到上述信息后,就可以进行解码了。图 2.3中地址为0x880到0x89F(含),此处数据全为0。

对于mp3来说现在有两种编码方式,一种是CBR,也就是固定位率,固定位率的帧的大小在整个文件中都是是固定的(公式如上所述),只要知道文件总长度,和从第一帧帧头读出的信息,就都可以通过计算得出这个mp3文件的信息,比如总的帧数,总的播放时间等等,要定位到某一帧或某个时间点也很方便,这种编码方式不需要文件头,第一帧开始就是音频数据。另一种是VBR,就是可变位率,VBR是XING公司推出的算法,所以在MP3的FRAME里会有“Xing"这个关键字(也有用"Info"来标识的,现在很多流行的小软件也可以进行VBR压缩,它们是否遵守这个约定,那就不得而知了),它存放在MP3文件中的第一个有效帧的数据区里,它标识了这个MP3文件是VBR的。同时第一个帧里存放了MP3文件的帧的总个数,这就很容易获得了播放总时间,同时还有100个字节存放了播放总时间的100个时间分段的帧索引,假设4分钟的MP3歌曲,240S,分成100段,每两个相邻INDEX的时间差就是2.4S,所以通过这个INDEX,只要前后处理少数的FRAME,就能快速找出我们需要快进的帧头。其实这第一帧就相当于文件头了。不过现在有些编码器在编码CBR文件时也像VBR那样将信息记入第一帧,比如著名的lame,它使用"Info"来做CBR的标记。

 

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: MP3格式是一种音频文件格式,可以在各种设备上播放,如电脑、MP3音乐播放器、智能手机等。MP3文件格式包含音频数据和元数据,封装和解析工具是用于创建和解码MP3文件的软件程序。封装工具将音频数据和元数据组装在一起,以便与音频播放器兼容。解析工具将MP3文件读取为音频数据和元数据,以便播放器软件能够对其进行解码和播放。 封装工具主要将音频数据压缩为MP3格式,并添加元数据,如歌曲标题、歌手名、专辑名称、曲目编号等。这些元数据可以让播放器软件在播放时显示相关信息。另外,封装工具还可以调整音频文件的音量、剪辑音频、去除背景噪音等。 解析工具则负责读取MP3文件并将其解码为音频数据。解析工具需要支持多种编码格式,包括CBR和VBR。CBR是恒定比特率编码,VBR是可变比特率编码。CBR编码可以生成一致的文件大小,但音质会受到限制;VBR编码可以提供更好的音质,在相同的文件大小下,更少的空间被使用。 总之,封装和解析工具是MP3格式媒体文件的制作和播放的重要工具,它们能够帮助我们创建和播放高质量的音频文件。 ### 回答2: MP3格式封装解析工具是一种软件工具,用于处理MP3文件的封装和解封装操作。MP3音乐文件是由多个数据帧组成的,而封装就是将这些数据帧打包成一个容器内,以便于读取和管理。解封装则是将这些数据帧从容器中分离出来,以便于进行音频处理或播放。MP3格式封装解析工具能够处理MP3文件的封装格式,常见的有ID3v1、ID3v2和APE等格式MP3格式封装解析工具的主要功能包括:读取MP3文件格式信息,解析MP3文件中的元数据信息,提取MP3音频数据,支持多种MP3封装格式的读取、编辑和修改,以及支持多种音频格式的转换和处理。 通常,MP3格式封装解析工具用于制作、编辑、转换MP3文件以及管理音频库等场合。在音乐制作过程中,制作人可以使用MP3格式封装解析工具对MP3文件进行编码、压缩、合并等操作。在音频处理过程中,音频工程师可以使用MP3格式封装解析工具对MP3文件进行剪切、重采样、加速、降噪等处理。在音频库管理过程中,MP3格式封装解析工具可以帮助管理人员对音频文件进行分类、过滤、批量处理等操作,从而提高工作效率、优化操作流程。 总之,MP3格式封装解析工具是一种必备的工具,既方便了MP3文件的处理和管理,又提高了工作效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值