MPEG简介 + 如何计算CBR/VBR MP3的播放时间 - 1

 转自: http://blog.163.com/againinput4@yeah/blog/static/122764271200981972911855/

主题:MPEG简介 + 如何计算CBR/VBR MP3的播放时间 - 1

--------------------------------------------------------------------------------------------------

截止2011-04-24,最新版本为:MPEG简介 + 如何计算CBR/VBR MP3的播放时间 v1.4

请去这里下载或阅读:

下载地址1:

百度文库:http://wenku.baidu.com/view/ec4a4210a216147917112873.html

下载地址2:

csdn:MPEG简介 + 如何计算CBR VBR MP3的播放时间 v1.4

http://download.csdn.net/source/3222711

--------------------------------------------------------------------------------------------------

 

版本:20100425

作者:crifan

邮箱:green-waste(At)163.com

声明:

1.本文所写内容,多数整理自自互联网,版权归原作者所有。

2.笔者知识有限,文中难免有误,欢迎批评指正。

3.欢迎盗版,盗版不究。

--------------------------------------无敌分割线-------------------------------------------

【此文目的】

1.      了解MPEG相关知识

2.      了解MP3的常见术语含义

3.      详解VBR MP3的帧头格式及含义

4.      搞懂如何去计算CBR和VBR的MP3文件的播放时间(duration)

 

【目录】

1.MPEG的相关知识

1.1 MPEG是啥

1.2为啥没了MPEG-3

1.3 MPEG2.5又是啥

1.4 MPEG中不同帧之间的关系

1.5 MPEG-1MPEG-2音频特性

1.5.1 MPEG-1音频(ISO/IEC 11172-3)

1.5.2 MPEG-2音频(ISO/IEC 13813-3)

1.6 什么是ISO/IEC 11172-3ISO/IEC 13818-3

2 MP3中常见的术语

2.1 啥叫MP3

2.2 什么是LSF

2.3 什么是帧(frame

2.4 什么是帧头(header

2.5 啥是CBRVBR

2.6 比特率(bitrate

2.7 边信息(side information

3 VBR MP3的帧头格式详解

3.1 VBR MP3的帧头类型

3.2 MPEG音频帧格式及其含义介绍

4 MP3的播放时间的计算公式及XING和VBRI头介绍

4.1 CBRMP3的播放时间(duration)计算公式

4.2 VBRMP3的播放时间(duration)计算公式

4.2.1 Xing TAG / Xing头(header)

4.2.2 VBRI头(header)

5 计算CBR和VBR的MP3文件的播放时间的步骤

5.1 定位到MPEG的帧头的位置

5.2 解析MPEG帧头,获取必要信息

5.3 判断是VBR还是CBR,根据公式计算播放时间

5.3.1 定位出Xing头

5.3.2 如果有,解析Xing头,并计算播放时间

5.3.3 如果没XING头,定位出VBRI头位置,找VBRI头

5.3.4 如果都没找到,说明是CBR,则计算CBR的播放时间

6 MP3的文件的内容组织结构

7 后记

8 文章引用

 

【表格索引】

1  MPEG音频帧头的格式

比特率

每帧的采样数

4  MPEG不同版本对应的采样率

5  XING

6  VBRI

7  Layer III的边信息(side information

8  MP3文件的内容组织结构

 

1.MPEG的相关知识

想要了解如何计算VBR的MP3的播放时间之前,要简单了解一些MP3相关的一些基本概念,主要是MPEG的相关知识和编解码的一些知识:

1.1 MPEG是啥

MPEG全名Moving Pictures Experts Group,动态图像专家组,简单说就是一个专家组,专门研究一些音视频规范的,所以才叫专家,不是我们国家的“砖家”哦。这个专家组是在ISO/IEC(International Standards Organization/International Electrotechnical Commission,国际标准化组织/国际电工委员会)联合指导下成立的。这个组,专门去研究出一个数字音视频的压缩相关的规范,所以最后研究出适用于不同应用环境的N多规范。

和事物发展的过程类似,研究出这么多的规范也是,不同时期,不同的版本,针对不同的应用。也是由简到繁。并且,命名规则都是,按照阿拉伯数字从小到大的:MPEG 1,MPEG2,MPEG4,MPEG-7,最新版本,好像都有MPEG-21了。

1.2为啥没了MPEG-3

估计有人纳闷了,为啥中间的MPEG3咋没了呢?

是没MPEG3,当然,不是被刘谦变魔术变没了,而是由于当时设计者没有规划好,导致已经设计好的MPEG2,性能太好了,都能干本来打算让MPEG3干的活了,所以后来干脆就不去再设计MPEG3了,原定计划就取消了,也就没了MPEG3。看来这个MPEG3,待遇貌似不比胎死腹中好多少。对于很多人误解的,以为MP3就是MPEG-3,也就更错的离谱了。关于MP3的名称来历,下面会再解释。

1.3 MPEG2.5又是啥

MPEG2.5,简单说就是出身不正,不是官方推出的规范。MPEG 2.5是针对MPEG2的一个非官方的扩展版本,支持更低的采样率。关于其更多解释,网上找到这些:

MPEG声音标准提供三个独立的压缩层次:Layer I、Layer II和Layer III。用户具体选哪个Layer,可以根据自己的要求,在权衡复杂性和声音质量之后,做出自己的选择。

A.Layer I的编码器最为简单,编码器的输出数据率为384 kb/s,主要用于小型数字盒式磁带(digital compact cassette,DCC)。

B.Layer II的编码器的复杂程度属中等,编码器的输出数据率为256 kb/s~192 kb/s,其应用包括数字广播声音(digital broadcast audio,DBA)、数字音乐、CD-I(compact disc-interactive)和VCD(video compact disc)等。

C.Layer III的编码器最为复杂,编码器的输出数据率为64 kb/s,主要应用于ISDN上的声音传输。 MPEG-1 Layer III支持的采样率为32,44.1,48khz,比特率支持32---320kbps MPEG-2 Layer III支持的采样率为16,22.05,24khz,比特率支持8---160kbps

Fraunhofer对此又进行扩展,将原来MPEG-2所支持的低采样率再除以2,得到: 8, 11.025, 和 12 kHz,比特率跟MPEG-2相同,称为 "MPEG 2.5"。

1.4 MPEG中不同帧之间的关系

对于Layer I和Layer II,不同的帧之间,是互相独立的。也就意味着,你可以任意截取MPEG的音频文件,然后找到第一个正确的帧头,然后解码,然后接下来放余下的帧,这样都可以正确的播放。而对于Layer III,所有帧不保证都是互相独立的。由于可能用到“字节蓄水池(byte reservoir)”,即内部的一个数据缓存,这些帧,都是相关的,最差情况下,要连续缓冲保存9个帧,才能对第一帧解码。

1.5 MPEG-1和MPEG-2音频特性

1.5.1 MPEG-1音频(ISO/IEC 11172-3

其描述了三层音频编码,具有如下特性:

A. 一个或两个音频声道

B. 采样率32KHz、44.1KHz或48KHz

C.比特率从32Kbps到448Kbps

D.每一层都有其自己的其他特点。

1.5.2 MPEG-2音频(ISO/IEC 13813-3

其包含了对MPEG-1的两种扩展。通常称为MEGP-2/低采样率(LSF)和MPEG-2/多声道(Multichannel)。

1.5.2.1 MPEG-2/LSF的特性:

A. 一个或两个音频声道

B. 采样率只有MPEG-1的一半

C.比特率从8Kpbs到256Kbps

1.5.2.2 MPEG-2/多声道,的特性:

A. 多达5个全范围的音频声道和一个LFE(Low Frequency Enhancement,也叫做 重低音)声道

B. 采样率和MPEG-1相同

C.对于5.1声道,最高的比特率可达1Mpbs

1.6 什么是ISO/IEC 11172-3和ISO/IEC 13818-3

由于MPEG只是ISO/IEC下面的一个组织,所以,关于MPEG音频部分的规范,也多是出自ISO/IEC之手。

因此,ISO/IEC 11172和ISO/IEC 13818,其实就是MPEG1的音频部分和MPEG-2的别名。

另外,由于MPEG-1和MPEG-2,每个都分好几个部分,其中,第三部分是关于音频的。所以,ISO/IEC 11172-3和ISO/IEC 13818-3,就分别对应着MPEG-1的音频,MPEG-2的音频,也就是我们常常提到的MPEG的音频文件所对应的规范。

2 MP3中常见的术语

知道了MPEG的来龙去脉后,在了解MP3的播放时间如何计算之前,也要知道其他一些,和MP3相关的知识,和常见的术语:

2.1 啥叫MP3

注意,这个MP3,不是MPEG-3,但是为何叫MP3,是因为:

MPEG规范中规定了,每一个版本的MPEG,比如MPEG1,MPEG2等,都有三种不同的Layer,不同Layer的序号命令是以罗马数字的,所以叫做Layer I, Layer II, Layer III。

其中,最常见的就是MPEG 1 的Layer III,就是众所周知的MP3。

根据事物发展由简到繁的规律,我们知道,Layer III,相对Layer I和Layer II,其有着更复杂的压缩算法。正是其相对复杂,用了很多算法,比如声学上的掩蔽效应(masking effect),Huffman压缩等,使得尽可能保持音质的基础上,极大地减少了音频文件大小,也就是说,尽量让你听上去音频声音和音质都没啥变化,但是MP3的文件大小,相对于原先没处理的,或者其他格式的,比如WAV格式等,要小很多,方便大家互相传播交流。这也是MP3如此流行的主要原因之一。

2.2 什么是LSF

MPEG2/2.5 也常被简称为LSF(Low Sampling Frequencies),低采样率。

2.3 什么是帧(frame)

通俗点说,就是一段连续的数据块。对于MPEG音频文件本身,并没有什么文件头,而是由很多数据块所组成,这样的单个的数据块,就叫做一个(数据/音频)帧(frame)。MP3文件,同理,由很多个帧所组成。帧,也是其他很多音视频技术中的基本单位。

2.4 什么是帧头(header)

每一个帧里面,包含了帧头和音频数据。帧头,就是在帧的头部,有一定长度的数据,用于描述改帧音频的一些参数,用于解码器对此音频帧进行解码。对于MPEG的帧头,是固定的32 比特,即4字节。

2.5 啥是CBR和VBR

CBR(Constant bitrate)固定(/不变)比特率,VBR(Variable bitrate ),不定(/可变)比特率,变与不变,指的是MP3的比特率是否固定。音频文件可以被编码成CBR或VBR。VBR意思就是,每一帧的比特率不同。由于VBR可以在需要的时候,采用高比特率,所以,一般来说,VBR的音质比CBR的要好。

很多种音视频文件,都可以按照VBR来压缩,比如MP3、WMA、Vorbis OGG、AAC,MPEG-2的视频等。VBR的优点是,和CBR相比,用更小的空间,即文件更小,实现更高的音质。缺点是,编码复杂度增加,编码需要更长时间,而有些硬件编码器可能和VBR不兼容。

2.6 比特率(bitrate)

即每秒包含/播放了多少个比特的数据。比特率常用Kbps(kilo bits per second,千比特每秒)表示。此处的千字节=1000字节,而不是1024.

2.7 边信息(side information)

在MPEG音频的帧头后面,有一些解码器会用到的一些信息,用于解码器控制音频流的播放,它就叫做 边信息。不同版本的MPEG的Layer III的边信息的大小,详见后面的表。

3 VBR MP3的帧头格式详解

3.1 VBR MP3的帧头类型

VBR MP3的帧头主要有两种,XING和VBRI。

关于它们的具体格式和含义,下面会详细解释。

另外常常会提到的是,关于V1和V2两个版本的ID3 头信息,这个主要是用于记录音频文件的一些描述信息,比如歌手,专辑,曲风等,和对音频文件解码,没有直接关系。属于存储音频文件附属信息的头。

ID3的V1和V2,不会同时存在。如果存在ID3的话,一般ID3 V1会放在音频文件的最后,大小128个字节,其中前三个字节是字符“TAG”。ID3 V2放在音频文件的开头处,前三个字节是字符“ID3”。

关于ID3的具体格式,请参考附录中的引用文献。

由于此处介绍的内容,目的是尽快,尽可能精确地去估算MP3文件的(持续)播放时间。所以,此处不涉及,关于如何去编解码实际的音频数据。

3.2 MPEG音频帧格式及其含义介绍

MPEG音频文件,由一个个的帧(Frame)组成。每一帧都有个帧头(Frame Header),位于该帧的最开始处,接下来的是音频数据。音频数据多数都是包含了 固定数目 的 音频采样(Sample)。正是基于这个特性,才有后面的VBR的播放时间计算公式。

前面介绍过了,目前,存在的三种Layer的MPEG音频,尽管他们的压缩方法各不相同,但是帧头格式都一样。

这些帧,由一个个的Slot(槽)组成。

Layer I中,一个Slot是4个字节,在Layer II和Layer III中,一个Slot是一个字节。

MPEG帧头的格式及含义

 

位置

长度

含义

示例

0

11

用于同步帧,找到此帧头(所有位均置1)

1111 1111 111

11

2

音频版本ID (参见 表3.2)

00 - 版本是MPEG 2.5 (MPED-2的非官方扩展版本)
01 – 保留
10 – 版本是MPEG 2 (ISO/IEC 13818-3)
11 – 版本是MPEG 1 (ISO/IEC 11172-3)

11

13

2

Layer 的索引

00 – 保留
01 - Layer III
10 - Layer II
11 - Layer I

01

15

1

保护位(Protection bit)

0 – 包含16位的CRC校验
1 – 无CRC

1

16

4

比特率索引 (参见 表2.1.3)

1001

20

2

采样率索引 (参见表2.1.2)

11

22

1

填充位

如果设置了,就会对每帧数据填充一个slot (对于帧大小的计算很重要)

0

23

1

私有位 (仅用于标示性的)

1

24

2

声道的模式

00 – 立体声
01 – 混合立体声
10 – 双声道 (两个单声道)
11 – 一个声道 (单声道)

注: 双声道文件由两个独立的单声道所组成。大多数解码器把双声道输出成立体声,但是实际上,不是所有的双声道都是立体声的。

01

26

2

模式扩展 (仅用于联合立体声) (参见 表 2.1.6)

00

1  MPEG音频帧头的格式

注意,此处如果上表中的保护位Protection bit==0,那么紧跟着此MPEG的Header之后,会有16bit=2Bytes的CRC,

用于校验此帧头是否出错。主要目的是,以防万一,数据在传输过程中,或者常见的mp3文件拷贝来拷贝去的过程中,出现此帧头数据有些位出错了,此时,你收到此mp3文件,解码此帧头,用后面16bit的crc和你实际用crc算法算出来的进行比较,就会发现不一样,就说明此帧头有误。实际情况,很少出错。而且,实际中,很少用到此保护位,很少在帧头后面跟随16bit的CRC。

在MPEG标准中,描述了一种自由格式(free format),这种自由格式意思为用一个固定比特率对文件进行编码,而此固定的比特率不是我们表中预定义好的。一般的解码器都无法解码这类音频文件。


下面是比特率索引表,(单位:Kbit/sec)。

比特率

索引

MPEG 1

MPEG 2, 2.5 (LSF)

Layer I

Layer II

Layer III

Layer I

Layer II & III

0000

空闲

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

保留

2  比特率

为了计算帧大小,我们需要知道,每一帧里面包含多少个采样,即采样数/帧(sample per frame)。

 

MPEG 1

MPEG 2 (LSF)

MPEG 2.5 (LSF)

Layer I

384

384

384

Layer II

1152

1152

1152

Layer III

1152

576

576

3  每帧的采样数

根据MPEG帧头里面的索引,对应的,不同版本的MPEG的采样率也是不同的:

采样率索引

MPEG 1

MPEG 2 (LSF)

MPEG 2.5 (LSF)

00

44100 Hz

22050 Hz

11025 Hz

01

48000 Hz

24000 Hz

12000 Hz

10

32000 Hz

16000 Hz

8000 Hz

11

保留

4  MPEG不同版本对应的采样率


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值