MPEG Audio Frame Header

来源:互联网 发布:2016双十一淘宝销售额 编辑:程序博客网 时间:2024/05/22 13:14

MPEG Audio Frame Header由4个字节组成。每个字节的含义如表1所示:

表1 MPEG Audio Frame Header结构


1、Bitrate Index表

Bitrate Index表如表2所示:

表2 Bitrate Index表

MPEG可以使用VBR(Variable Bitrate),这意味着每个frame的bit rate可能不一样。有两种使用VBR的方法:

(1)Bitrate Switching:每一帧都可能有一个不同的bitrate。Layer III解码器必须支持这种方法,而Layer I和Layer II可以支持这种方法。

(2)Bit Reservoir:为了提供更多的bit给demanding parts of the input signal,在限制范围内借用前面帧的bitrate。这将导致帧与帧之间不在是相互独立的。这种方法仅仅在LayerIII中支持。

2、Sample Rate Index表

Sample Rate Index表如表3所示:

表3 Sample Rate Index表


3、Padding Bit

当Padding Bit为1时,需要在frame的后面加一个slot。对于Layer I,slot是32位的,而对于Layer II和Layer III,slot是8位的。

4、Calculate Frame Length

首先说一下Frame Size和Frame Length的区别。Frame Size是指一帧数据中包含的采样点的个数,是一个常数。对于Layer I 来说,这个值通常为384,对于Layer II 和Layer III来说,这个值通常为1152。Frame Length是指一帧数据压缩后所包含的数据长度,并且需要将padding考虑进去。由于padding和Bitrate Switching,Frame Length在不同的帧之间,可能是不相同的。

Frame Length的计算方法如下所示。

Layer I:

FrameLengthInBytes = (12 * BitRate / SampleRate + Padding) * 4

Layer II 和Layer III:

FrameLengthInBytes = 144 * BitRate / SampleRate + Padding

5、一个简单的例子

一个MPEG Audio Frame的header为:0Xff fb b2 00,它对应的二进制码,从高位到低位的顺序如下所示:

1111 1111 | 1111 1011 | 1011 0010 | 0000 0000

根据表1所示的MPEG Audio Frame Header的结构及含义,可知:

(1)Version ID为11,即是MPEG Version 1。

(2)Layer Description为01,即是LayerIII。

(3)Bitrate Index为1011,根据Bitrate Index表,结合Version ID和Layer Description,可得bit rate为192kbps。

(4)Sample Rate Index为00,根据Sample Rate Index表,结合Version ID,可得sample rate为44100Hz。

(5)Padding bit为1,即在frame后面会有一个slot。

根据以上的分析,可以计算出该frame length的值:

FrameLengthInBytes = 144 * BitRate / SampleRate + Padding

                                       = 144 * 192 * 1000 / 44100 + 1

                                       = 627

原创粉丝点击