MP2帧格式介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012741756/article/details/64471514

  MP2是MP1-Layer2的缩写,要理解MP2的数据格式,首先我们要知道帧的概念,帧是MPEG-1处理的最小单元,一帧处理1152个PCM的样值,对于48KHz的采样率,一帧对应声音样本时间1152/48000=0.024s=24ms。(不能理解的,原谅我解释的不好)
  winhex软件可以查看MP2文件的16进制数据,这有利于我们将MP2帧的实际数据和理论格式进行对比,加深印象。下面给出test.mp2(采样率48KHz,比特率64kbps/s,立体声)的第1帧数据截图。24ms一帧,由比特率Bitrate(Kbps)计算可知一帧数据大小 = ( Bitrate*1000(bps)/1000ms ) *24(ms) /8(bit) (Byte),本例MP2比特率64kbps/s,代入得一帧数据大小192字节。
  

  下面讲解最重要的MP2帧格式标准,对照上面截取的一帧数据验证看,加深印象。下图是一帧的结构。
  
这里写图片描述

首先来看MPEG Audio frame header: 帧头(32 bit):

  • 同步字(12 bit):1111 1111 1111 (转为16进制:FF F)
  • ID(1 bit):这1位标志用来识别音频编码算法,如下(例子中是1):
     0: ISO/IEC 13818-3 [11] or MPEG-2 Audio extension to lower sampling frequencies;
     1: ISO/IEC 11172-3 [3].
  • Layer(2 bit):这2位指示用了哪一层,对应如下(例子中是10):
Code Layer
11 not used in DAB
10 Layer II
01 not used in DAB
00 reserved

- 保护位(1bit):这一位比较重要,表明该音频是否有CRC校验,如果是0,说明有,1则说明没有CRC校验。例子中是0.
- 比特率指示(4bit):指示该音频的比特率,如下(只对应48KHz采样率,24KHz的表这里没有给出),示例音频可以看到这里是16进制的4对应二进制0100,比特率为64kbit/s:

这里写图片描述

  • 采样频率(2bit):指示该音频的采样频率,还和前面的ID位有关,对应表格如下(例子中是01,前面ID是1,对照表格知采样率48KHz):

这里写图片描述

  • 填充位(1bit):顾名思义,这一位没有意义,填充位,固定为0。
  • Private_bit (1bit): 这一位随意,留给用户拓展用。不管该位是 0还是1,对标准编解码器没有影响。
  • 音频模式(2bit):指示该音频的模式,对应表格如下:

mode  Audio mode specified

  • 音频模式拓展(2bit):这两位用来指示音频模式是joint_stereo的情况下,哪些子带是intensity_stereo,其它子带都是stereo mode。如下:

这里写图片描述

  • 版权标志位(1bit):1意味着有版权保护,0则没有。
  • 原创/复制位(1bit):1表明该音频是原创的,0表明该音频是复制的。
  • 加重类型(2bit):表明解码器应该使用的去加重类型。00代表没有加重。
    至此,MP2帧头介绍完毕,一共32 bit。

接下来看CRC

CRC占2个字节(16bit),用来存放循环冗余校验的结果,MP2标准规定CRC校验的位包括:32位帧头的最后16位,以及CRC后面的bit allocation和ScFSI。如果你要深入了解CRC校验的过程,那么就去MP2的标准规范文件里面找,这里不再介绍。

音频数据

从bit allocation开始到ancillary data之前,都属于音频数据,这里不详细介绍。

辅助字节

ancillary data,辅助数据,可以在编码中设置最后保留的辅助字节数,留给自己存放其他数据用。

猜你喜欢

转载自blog.csdn.net/u012741756/article/details/64471514