MP3基本概念及MP3的头信息

MP3 的全称为MPEG1 Layer-3 音频文件

每帧采样数(帧时间戳):

我们首先区分两个术语:帧大小和帧长度。帧大小即每帧采样数表示一帧中采样的个数,这是恒定值。其值如下表所示

 

MPEG 1

MPEG 2 (LSF)

MPEG 2.5 (LSF)

Layer I

384

384

384

Layer II

1152

1152

1152

Layer III

1152

576

576

  

 

采样率(单位:Hz),2 bits

每秒采集信息的次数,例如:44100Hz, 每秒取44100次,每1/44100秒取一次(计算一次音频振幅的位置)

bits

MPEG1

MPEG2

MPEG2.5

00

44100

22050

11025

01

48000

24000

12000

10

32000

16000

8000

11

保留

 

 

 

比特率(单位:Kbps)

索引值

MPEG 1

MPEG 2, 2.5 (LSF)

Layer I

Layer II

Layer III

Layer I

Layer II & III

0000

Free

0001

32

32

32

32

8

0010

64

48

40

48

16

0011

96

56

48

56

24

0100

128

64

56

64

32

0101

160

80

64

80

40

0110

192

96

80

96

48

0111

224

112

96

112

56

1000

256

128

112

128

64

1001

288

160

128

144

80

1010

320

192

160

160

96

1011

352

224

192

176

112

1100

384

256

224

192

128

1101

416

320

256

224

144

1110

448

384

320

256

160

1111

Bad

Free表示空闲,如果固定比特率(这种文件不能变换比特率)和上表定义的不同,应该有应用程序决定。这种情况的实现应该只用于内部目的因为第三方应用程序是没有办法找出正确比特率的。但是这么做并不是很重要况且还浪费精力。

Bad表示该值无效。

 

 

帧长:

LyaerI使用公式:

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

LyerII和LyaerIII使用公式:

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

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

MPEG1                                                   MPEG2

1152                                                     576

最大帧长:144*320/32 = 1440         最大帧长:72*160/22.05=522.45

最小帧长:144*32/44.1=104.49        最小帧长:72*8/16=36

 

每帧持续时间(单位:毫秒) :

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

MPEG1 Layer III 采样率为44.1KHz,一帧持续时间为26.12...不是整数,约等于 26ms。

MPEG2 Layer III 采样率为16KHz,    一帧持续时间为72ms.

 

1152/44.1=26.12ms

1152/48=24ms

1152/32=36ms

 

576/22.05=26.12ms

576/24=24ms

576/16=36ms

 

帧频 (单位:HZ):

帧频 = 采样频率 / 每帧采样数

采样率为44.1KHz,帧频38.12帧/s。

MPEG2 Layer III 采样率为16KHz,    一帧持续时间为72ms.

44100/1152=38.28125

48000/1152=41.67

32000/1152=27.78

 

22050/576=38.28125

24000/576=41.67

16000/576=27.78

 

 

 

LayerIII

MPEG 1

MPEG 2 (LSF)

比特率Kbps

 

 

0000

Free

0001

32

8

0010

40

16

0011

48

24

0100

56

32

0101

64

40

0110

80

48

0111

96

56

1000

112

64

1001

128

80

1010

160

96

1011

192

112

1100

224

128

1101

256

144

1110

320

160

1111

Bad

每帧采样数Hz

 

 

 

1152

576

采样频率Hz

 

 

00

44100

22050

01

48000

24000

10

32000

16000

11

保留

 

 

 

MP3头结构:

AAAAAAAA    AAA  BB CC D    EEEE  FFGH    II JJ K L MM

11111111    111  11 00 0    1000  0001    00 00 1 1 00

11111111    111  11 01 0    1001  0001    00 00 1 1 00

11111111    111  11 01 1    1111  0001    00 00 1 1 00

 

符号i

长度(bits)

位置(bits)

描述

例子

A

11

(31-21)

帧同步(所有位置1)

&0xFFF2 11位同步+MPEG2

&0xFFFA 11位同步+MPEG1

1111 1111 111

B

2

(20,19)

MPEG 音频版本ID

00 – MPEG 2.5 01 – 保留

10 – MPEG 2 (ISO/IEC 13818-3)

11 – MPEG 1 (ISO/IEC 11172-3)

注:MPEG 2.5不是官方标准。帧头第20个比特用来表示2.5版本。不支持该版本的应用程序一般认为该比特位置位为帧同步位,也就是说帧同步(A)的长度为12而不是这里规定的11,这样B也就变成了1位(第19个位)。推荐使用该表的方法因为这样允许你可以区分三个版本以获得最高兼容性。

11


C

2

(18,17)

Layer描述

00 - 保留

01 - Layer III

10 - Layer II

11 - Layer I

01

D

1

(16)

校验位 0 - 紧跟帧头后有16位即2个字节用作CRC校验

1 - 没有校验

1

E

4

(15,12)

位率索引

索引值

MPEG 1

MPEG 2, 2.5 (LSF)

 

Layer I

Layer II

Layer III

Layer I

Layer II & III

0000

Free

 

0001

32

32

32

32

8

0010

64

48

40

48

16

0011

96

56

48

56

24

0100

128

64

56

64

32

0101

160

80

64

80

40

0110

192

96

80

96

48

0111

224

112

96

112

56

1000

256

128

112

128

64

1001

288

160

128

144

80

1010

320

192

160

160

96

1011

352

224

192

176

112

1100

384

256

224

192

128

1101

416

320

256

224

144

1110

448

384

320

256

160

1111

Bad

 

             

注:所有值单位为kbps,而且1kbit=1000bit而不是1024bit

Free表示空闲,如果固定比特率(这种文件不能变换比特率)和上表定义的不同,应该有应用程序决定。这种情况的实现应该只用于内部目的因为第三方应用程序是没有办法找出正确比特率的。但是这么做并不是很重要况且还浪费精力。

Bad表示该值无效。 MPEG文件可以有VBR。表示文件的比特率可以变化。我已经知道了两种惯用方法: 比特率变换(bitrate switching):每一帧都创建成不同的比特率。可以应用在任何层。LayerIII解码器必须支持该方法。LayerI和LayerII也可以支持。 比特池(bit reservoir):比特率可以使从前面的帧中借来的(受限),以便腾出空间来容纳输入信号部分。然而这样就导致各帧之间不再相互独立,意味着不能随便分割文件。这种方法只有LayerIII支持。 LyaerII中有一些不被允许比特率组合和模式。下表是允许的组合。

bitrate

allowed modes

free

all

32

single channel

48

single channel

56

single channel

64

all

80

single channel

96

all

112

all

128

all

160

all

192

all

224

stereo, intensity stereo, dual channel

256

stereo, intensity stereo, dual channel

320

stereo, intensity stereo, dual channel

384

stereo, intensity stereo, dual channel

1001


F

2

(11,10)

采样频率(单位:Hz)

bits

MPEG1

MPEG2

MPEG2.5

00

44100

22050

11025

01

48000

24000

12000

10

32000

16000

8000

11

保留

11

G

1

(9)

填充位 0 – 没有填充

1 – 填充了一个额外的空位 填充用来达到正确的比特率。

例如:128k 44.1kHz LayerII使用了很多418bit或417bit长的帧来达到正确的128k比特率。LyaerI的空位有32bit长,LayerII和LayerIII的空位有8bit长。

0

H

1

(8)

私有bit,可以用来做特殊应用。例如可以用来触发应用程序的特殊事件。

1

I

2

(7,6)

声道 00 立体声 01 联合立体声(立体声) 10 双声道(立体声) 11 单声道(单声)

注:双声道文件由二个独立的单声道组成。 每一个声道使用整个文件一半的位率。大多数的解码器把它当作立体声来输出,但是它并不总是这种情况。按我的理解就是是两个声道的信息是完全相同的,并不能把它当作立体声看待。

01

J

2

(5,4)

扩展模式(仅在联合立体声时有效) 扩展模式用来连接对立体声效果无用的信息,来减少所需的资源。这两个位在联合立体声模式下有编码器动态指定。 完整的MPEG文件的频率序列分成有32个子带。在LayerI和LayerII中这两个位确定强度立体声应用的频带。 LayerIII中这两个位确定应用了哪一种联合立体声(M/S stereo或者Intensity stereo)频带由解压算法决定。

Layer I & II

Layer III

M/S stereo

Intensity stereo

00

bands 4 to 31

off

off

01

bands 8 to 31

off

on

10

bands 12 to 31

on

off

11

bands 16 to 31

on

on

00

K

1

(3)

版权

0无版权

1有版权

1

L

1

(2)

原创

0 原创拷贝

1 原创

1

M

2

(1,0)

强调

00 - 无

01 - 50/15 ms

10 - 保留 11 - CCIT J.17

00

 

文档:

http://mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm

http://www.mp3-tech.org/

https://tools.ietf.org/html/rfc2250

https://tools.ietf.org/html/rfc1889

https://tools.ietf.org/html/rfc2038

https://tools.ietf.org/html/rfc3119

https://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header

https://blog.csdn.net/yu_yuan_1314/article/details/9112509

https://blog.csdn.net/cpq37/article/details/11213323

https://www.datavoyage.com/mpgscript/mpeghdr.htm

https://id3.org/mp3Frame

http://www.mp3-tech.org/tests/wma9/index.html MP3样例下载

https://blog.csdn.net/houxiaoni01/article/details/78810674

http://wiki.hydrogenaud.io/index.php?title=MP3

posted @ 2020-06-20 08:21  撒欢  阅读(1846)  评论(0编辑  收藏  举报