首页 MPEG简介 + 如何计算CBR和VBR的MP3的播放时间 v1.5

MPEG简介 + 如何计算CBR和VBR的MP3的播放时间 v1.5

举报
开通vip

MPEG简介 + 如何计算CBR和VBR的MP3的播放时间 v1.5 MPEG 简介 + 如何计算 CBR 和 VBR 的 MP3的播放时间 版本:1.5 作者:crifan 邮箱:green-waste (at) 163.com 版本历史 版本 日期 内容说明 1.0 2009-09-19 简介 MPEG 相关知识 详细介绍如何计算 CBR 和 VBR的 MP3 的播放时间 1.4 2011-04-24 修正了 VBR 播放时间的计算公式(原中文说明部分有误) 添加了一些MP3 相关的知识点的解释 调整了排版格式 1.5 20...

MPEG简介 + 如何计算CBR和VBR的MP3的播放时间 v1.5
MPEG 简介 + 如何计算 CBR 和 VBR 的 MP3的播放时间 版本:1.5 作者:crifan 邮箱:green-waste (at) 163.com 版本历史 版本 日期 内容说明 1.0 2009-09-19 简介 MPEG 相关知识 详细介绍如何计算 CBR 和 VBR的 MP3 的播放时间 1.4 2011-04-24 修正了 VBR 播放时间的计算 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 (原中文说明部分有误) 添加了一些MP3 相关的知识点的解释 调整了排版格式 1.5 2011-07-02 详解两种 CBR 播放时间的计算公式 目录 1. 正文之前 ..................................................................................... 4 1.1. 声明 ......................................................................................................... 4 1.2. 此文目的 ................................................................................................. 4 2. MPEG 的相关知识 ..................................................................... 5 2.1. MPEG 是啥.............................................................................................. 5 2.2. 为啥没有了 MPEG-3 ............................................................................... 5 2.3. MPEG2.5 又是啥 ..................................................................................... 5 2.4. MPEG 中不同帧之间的关系 ................................................................... 6 2.5. MPEG-1 和 MPEG-2 音频特性 ............................................................... 6 2.5.1. MPEG-1 音频(ISO/IEC 11172-3)................................................................ 6 2.5.2. MPEG-2 音频(ISO/IEC 13813-3) ............................................................... 6 2.6. 什么是 ISO/IEC 11172-3 和 ISO/IEC 13818-3 ........................................ 6 3. MP3 中常见的术语 .................................................................... 8 3.1. 啥叫 MP3 ................................................................................................. 8 3.2. 什么是 LSF .............................................................................................. 8 3.3. 什么是帧(frame) ................................................................................. 8 3.4. 什么是帧头(Frame Header) ................................................................ 8 3.5. 啥是 CBR 和 VBR ................................................................................... 8 3.6. 比特率(Bitrate) ................................................................................... 9 3.7. 边信息(Side Information) ................................................................... 9 3.8. MP3 的 TAG ............................................................................................ 9 4. MPEG 的帧 Frame .................................................................. 10 4.1. MPEG 帧头(Frame Header) .............................................................. 10 4.1.1. 举例说明 MPEG 帧头的含义 ........................................................................ 12 4.2. MPEG 音频数据 .................................................................................... 12 4.3. MPEG 帧的大小 .................................................................................... 13 4.3.1. 常见 MPEG 帧的音频数据大小是 418 字节 ................................................ 14 5. MP3 的播放时间的计算公式及 XING 和 VBRI 头介绍 ........ 16 5.1. CBR 的 MP3 的播放时间(duration)计算方法 ....................................... 16 5.1.1. 计算 CBR 的 MP3 的播放时间的方法之一 ................................................. 16 5.1.2. 计算 CBR 的 MP3 的播放时间的方法之二 ................................................. 16 5.1.3. 计算 CBR 的 MP3 的播放时间的两种方法的总结 ..................................... 18 5.2. VBR 的 MP3 的播放时间(duration)计算方法 ....................................... 19 5.2.1. 平均比特率法 ................................................................................................. 19 5.2.2. 总帧数法 ......................................................................................................... 20 5.2.3. VBR 的两种 Header:XING 和 VBRI .......................................................... 21 5.2.4. Xing TAG / Xing 头(header) ..................................................................... 21 5.2.5. VBRI 头(header) ........................................................................................ 22 6. 计算 CBR 和 VBR 的 MP3 文件的播放时间的步骤 .............. 24 6.1. 定位到 MPEG 的帧头的位置 ................................................................ 24 6.2. 解析 MPEG 帧头,获取必要信息 ........................................................ 24 6.3. 判断是 VBR 还是 CBR,根据公式计算播放时间 ............................... 24 6.3.1. 定位出 Xing 头的位置 ................................................................................... 24 6.3.2. 如果有 Xing 头,则是 VBR,解析 XING 头,计算播放时间 .................. 25 6.3.3. 如果没 XING 头,定位出 VBRI 头位置,找 VBRI 头 .............................. 25 6.3.4. 如果也没找到 VBRI 头,则是 CBR,计算 CBR 的播放时间 ................... 25 7. MP3 相关的一些知识点的解释 ............................................... 27 7.1. MP3 的文件的内容组织结构 ................................................................ 27 7.2. MP3 帧的时长是 26ms 的来历 ............................................................. 28 7.3. 怎么算出来 MP3 的压缩比大概是 1:11 的 ........................................... 28 7.4. 问:每一个帧都包含帧头,会不会很浪费空间? .............................. 29 7.4.1. 原因之一 ......................................................................................................... 29 7.4.2. 原因之二 ......................................................................................................... 29 8. 后记 ........................................................................................... 30 9. 文章引用 ................................................................................... 31 表格 表 1 MPEG 音频的帧头的格式 ......................................................................................... 10 表 2 MPEG 比特率索引表(单位:Kbit/s) .................................................................. 11 表 3 MPEG 帧的采样率索引表(单位:Hz) ................................................................ 11 表 4 MPEG 帧的采样数索引表(单位:个/帧)............................................................ 12 表 5 XING 头的格式及含义 ............................................................................................. 22 表 6 VBRI 头的格式及含义 ............................................................................................... 23 表 7 MPEG Layer III 的边信息(side information)(单位:字节) .......................... 24 表 8 MP3 文件的内容组织结构 ........................................................................................ 27 图片: 图表 1MPEG 帧头含义举例 ................................................................................................ 12 1. 正文乊前 1.1. 声明  本文所写内容,多数整理自互联网,版权归原作者所有  笔者知识有限,文中难免有误,欢迎批评指正,green-waste (at) 163.com  觉得此文对你有帮助,想要发邮件来感谢的,也欢迎哈,^_^  欢迎盗版,盗版不究,但请转载时注明原作者 1.2. 此文目的  了解 MPEG 相关知识  了解 MP3 的常见术语的含义  详解 VBR MP3 的帧头格式及含义  搞懂如何去计算 CBR 和 VBR 的MP3 文件的播放时间(duration) 2. MPEG 的相关知识 想要了解如何计算 VBR的MP3的播放时间之前,要了解一些和MP3相关的一些基本概念, 其中主要是MPEG 的相关知识和编解码的一些基础知识。 2.1. MPEG 是啥 MPEG 全名 Moving Pictures Experts Group,动态图像专家组,简单说就是一个专家组, 专门研究一些音视频规范的,所以才叫专家,不是我们国家的“砖家”哦。这个专家组是在 ISO/IEC(International Standards Organization/International Electrotechnical Commission, 国际 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 化组织/国际电工委员会)联合指导下成立的。这个组,专门去研究出一个数字音 视频的压缩相关的规范,所以最后研究出适用于不同应用环境的 N 多规范。 和事物发展的过程类似,研究出这么多的规范也是,不同时期,不同的版本,针对不同的应 用。也是由简到繁。并且,命名 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 都是,按照阿拉伯数字从小到大的:MPEG 1,MPEG2, MPEG4,MPEG-7,最新版本,好像都有MPEG-21 了。 2.2. 为啥没有了 MPEG-3 估计有人纳闷了,中间的 MPEG3 咋没了呢? 是没 MPEG3,当然,不是被刘谦变魔术变没了,而是由于当时 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 者没有规划好,导致已 经设计好的MPEG2,性能太好了,都能干本来打算让 MPEG3 干的活了,所以后来干脆就 不去再设计MPEG3 了,原定 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 就取消了,也就没了 MPEG3。看来这个 MPEG3,待遇 貌似不比胎死腹中好多少。对于很多人误解的,以为MP3 就是 MPEG-3,也就错的离谱了。 关于 MP3 的名称来历,下面会再解释。 2.3. MPEG2.5 又是啥 MPEG2.5,简单说就是出身不正,不是官方推出的规范。 MPEG 2.5 是针对 MPEG2 的一个非官方的扩展版本,支持更低的采样率。 关于其更多解释,网上找到这些: MPEG 声音标准提供三个独立的压缩层次:Layer I、Layer II 和 Layer III。 用户具体选哪个 Layer,可以根据自己的要求,在权衡复杂性和声音质量之后,做出自己的 选择。  Layer I 的编码器最为简单,编码器的输出数据率为 384 kb/s,主要用于小型数字盒式 磁带(digital compact cassette,DCC)。  Layer II 的编码器的复杂程度属中等,编码器的输出数据率为 256 kb/s~192 kb/s,其 应用包括数字广播声音(digital broadcast audio,DBA)、数字音乐、CD-I(compact disc-interactive)和 VCD(video compact disc)等。  Layer III 的编码器最为复杂,编码器的输出数据率为 64 kb/s,主要应用于 ISDN 上的 声音传输。 对于 Layer III:  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"。 2.4. MPEG 中不同帧乊间的关系 对于 Layer I 和 Layer II,不同的帧之间,是互相独立的。也就意味着,你可以任意截取 MPEG 的音频文件,然后找到第一个正确的帧头,后开始解码,对于余下的帧,都是同样的处理, 解码后,进行播放,这样都可以正确的播放。 而对于 Layer III,所有帧不保证都是互相独立的。此处不保证完全独立,指的是当前的帧和 前后临近的那些帧,不一定完全独立,有可能有一定关系。这是由于可能用到“字节蓄水池 (byte reservoir)”的技术,即内部的一个数据缓存,当前帧和其后的一些帧,都是相关的, 最差情况下,要连续缓冲保存 9 个帧,才能对第一帧解码。 2.5. MPEG-1 和 MPEG-2 音频特性 2.5.1. MPEG-1 音频(ISO/IEC 11172-3) MPEG-1 音频(ISO/IEC 11172-3)描述了三层音频编码,具有如下特性:  一个或两个音频声道  采样率 32KHz、44.1KHz 或 48KHz  比特率从 32Kbps 到 448Kbps  每一层都有其自己的其他特点。 2.5.2. MPEG-2 音频(ISO/IEC 13813-3) MPEG-2 音频(ISO/IEC 13813-3)包含了对 MPEG-1 的两种扩展。通常称为 MEGP-2/低采 样率(LSF)和MPEG-2/多声道(Multichannel)。 2.5.2.1. MPEG-2/LSF 的特性 1. 一个或两个音频声道 2. 采样率只有MPEG-1 的一半 3. 比特率从 8Kpbs 到 256Kbps 2.5.2.2. MPEG-2/多声道 的特性  多达 5 个全范围的音频声道和一个 LFE(Low Frequency Enhancement,也叫做 重低 音)声道  采样率和MPEG-1 相同  对于 5.1 声道,最高的比特率可达 1Mpbs 2.6. 什么是 ISO/IEC 11172-3 和 ISO/IEC 13818-3 由于 MPEG 只是 ISO/IEC 下面的一个组织,所以,关于 MPEG 音频部分的规范,也都是 出自 ISO/IEC 之手。 因此,ISO/IEC 11172 和 ISO/IEC 13818,其实就是 MPEG-1 和 MPEG-2 的别名。 另外,由于 MPEG-1 和MPEG-2,每个都分好几个部分,其中,第 3 部分是关于音频(Audio) 的。 所以,ISO/IEC 11172-3 和 ISO/IEC 13818-3,就分别对应着MPEG-1 的音频,MPEG-2 的音频,也就是我们常常提到的MPEG 的音频文件所对应的规范。 3. MP3 中常见的术语 知道了 MPEG 的来龙去脉后,在了解 MP3 的播放时间如何计算之前,还要知道其他一些 MP3 相关的知识及常见的术语: 3.1. 啥叫 MP3 注意,这个MP3,不是MPEG-3,但是为何叫MP3,是因为: MPEG 规范中规定了,每一个版本的MPEG,比如MPEG1,MPEG2 等,都有三种不同的 Layer,不同 Layer 的序号命令是以罗马数字的,所以叫做 Layer I, Layer II, Layer III。 其中,MPEG-1 或 MPEG-2 的 Layer III,被称为MP3,而其中最常见的是MPEG 1 的 Layer III,所以,被大家所熟知的MP3,一般都指的是MPEG-1 的 Lay III。 即 MPEG-1的 Layer III 被简称为 MP3. 根据事物发展由简到繁的规律,我们知道,Layer III,相对 Layer I 和 Layer II,有着更复杂 的压缩算法。正是其相对复杂,用了很多算法,比如声学上的掩蔽效应(masking effect), Huffman 压缩等,才使得可以实现,在尽可能保持音质的前提下,极大地减少了音频文件大 小,也就是说,尽量让你听上去音频声音和音质都没啥变化,但是 MP3 的文件大小,相对 于原先没处理的音频数据或者其他格式的,比如WAV 格式等,要小很多。 音质满足大家的要求,文件又小,在互联网时代,就非常方便大家互相交流传播。 这也是 MP3 如此流行的主要原因之一。 3.2. 什么是 LSF MPEG2/2.5 也常被简称为 LSF(Low Sampling Frequencies),低采样率。 3.3. 什么是帧(frame) 帧,即数据帧,通俗点说,就是一段数据,一块数据,数据块。 对于 MPEG 音频文件本身,并没有什么文件头,而是由很多数据块所组成,这样的单个的 数据块,就叫做一个(数据/音频)帧(frame)。 而 MP3 文件,就是由很多个帧所组成。 帧,也是其他很多音视频技术中的基本单位。 3.4. 什么是帧头(Frame Header) 每一个帧里面,包含了帧头和音频数据。帧头,就是在帧的头部,有一定长度的数据,用于 描述改帧音频的一些参数,用于解码器识别相关音频参数,用于对音频帧解码。 对于 MPEG 的帧头,是固定的 32 比特,即 4 字节。 3.5. 啥是 CBR 和 VBR CBR(Constant BitRate)固定(/不变)比特率,VBR(Variable BitRate ),不定(/可变)比 特率。此处的固定与可变,指的是 MP3的比特率,而不是指采样率。 音频文件可以被编码器编码成 CBR 或 VBR。 VBR 意思就是,每一帧的比特率都不一定相同(当然,很有可能临近的一些帧的比特率相 同)。由于 VBR 在编码的时候,根据当前采样的声音数据的复杂度,去判断是采用何种比 特率。比如对于很复杂的声音,那么就用更多的比特位去编码,如果是很简单的声音甚至是 无声(silence)的数据,那么就可以用很少的比特位去编码,这样不同情况下,所产生的 MP3 音频数据的大小,是不同的,但是却可以一直保持同样的音质。 因此,总体来说,对于同样大小的 MP3 文件,VBR的音质一般要比 CBR 的好。 很多种音视频文件,都可以按照 VBR 来压缩,比如MP3、WMA、OGG Vorbis、AAC, MPEG-2 的视频等。 VBR 的优点是,和 CBR 相比,用更小的空间,即文件更小,实现更高的音质。缺点是, 编码复杂度增加,编码和解码都需要更长时间,而且很早之前,有些硬件编码器可能和 VBR 不兼容。不过现在一般硬件的音频解码器,都可以很好的兼容 VBR 了。 3.6. 比特率(Bitrate) 即每秒包含了多少个比特的数据。比特率常用 Kbps(kilo bits per second,千比特每秒) 表示。注意,此处的千比特=1000 bits,而不是 1024. 3.7. 边信息(Side Information) 在 MPEG 音频的帧头的后面,有一些解码器会用到的一些信息,用于解码器控制音频流的 播放,它就叫做 边信息。 3.8. MP3 的 TAG MP3 文件中,会在一些位置(文件最开始或者是最后,或者其他某个固定位置),存放一 些 TAG,即标签,用于描述文件的相关信息,其中最常见的一些,比如,MP3 音乐的歌手 名,专辑名,专辑年份,曲风等等。 关于 MP3 的 TAG,现在常见的有 ID3v1(ID3 的第一版),ID3v2(ID3 的第二版),APEv2 等。 同一文件中,一般只存在某一种 TAG, 即,是 ID3v2 或 APEv2 或 ID2v1 或其他。 与此相关的应用方面,我们用千千静听去播放 MP3 的时候,播放器中点击文件属性,还可 以看到有MP3 标签的读取优先级方面的设置,默认设置为 APEv2 > ID3v2 > ID3v1。 如果 MP3 文件中存在 ID3 的 TAG 话: ID3v1 会放在音频文件的最后,大小 128 个字节,其中前三个字节是字符“TAG”。 ID3v2 一般放在音频文件的开头处,前三个字节是字符“ID3”。 关于 ID3 的具体格式,请参考附录中的引用文献。 MP3 的 TAG,只是用于存储歌曲等方面的辅助描述信息,与 MP3 的解码,没啥关系,故 此处不在过多介绍。 4. MPEG 的帧 Frame MPEG 音频文件,由一个个的帧(Frame)组成。 每一MPEG帧都有个帧头(Frame Header),位于帧的最开始处,接下来的是音频数据(Audio Sample/Audio Data),即: MPEG 帧 = MPEG帧头 + MPEG音频数据 下面分别详细介绍MPEG 帧头和音频数据的细节内容: 4.1. MPEG 帧头(Frame Header) MPEG 音频的三种 Layer 的,尽管他们的压缩方法各不相同,但是帧头格式都一样。 先说一下大小,MPEG 帧头,共 32bit=4 字节。 然后再看具体的格式及含义,如下所示: 表 1 MPEG音频的帧头的格式 位置 (bit) 长度 (bit) 含义 示例 0 11 用于同步帧,找到此帧头(所有位均置 1) 1111 1111 111 11 2 MPEG 音频的版本 ID 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 保护位 0 – 用 16 位的 CRC 保护下面的帧头 1 – 无 CRC 1 16 4 比特率索引 (见下表) 1001 20 2 采样率索引 (见下表) 11 22 1 填充位 如果设置了此位,就会对每帧数据填充一个 slot (对于 帧大小的计算很重要) 0 23 1 私有位 (仅用于标示性的) 1 24 2 声道的模式 00 立体声 01 混合立体声 10 双声道 (两个单声道) 11 一个声道 (单声道) 注: 双声道文件由两个独立的单声道所组成。大多数解 码器把双声道输出成立体声,但是实际上,不是所有的 双声道都是立体声的。 01 26 2 模式扩展 (仅用于联合立体声) (注:此处不是本文重 点,故忽略相关的索引表) 00 表 2 MPEG比特率索引表(单位:Kbit/s) 比特率 索引 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 保留 注: (1)上表中: 蓝色部分:就是我们此处所关心的 MP3(MPEG-1,Layer III)的比特率。 红色部分:即 128kbps,192kbps,320kbps 等,就是我们常见的 MP3 的比特率。 表 3 MPEG帧的采样率索引表(单位:Hz) 采样率索引 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 保留 注: (1)上表中红色部分,就是我们最常见的 MP3(MPEG-1)的采样率 44100Hz=44.1K Hz 从上面 MPEG 帧头的格式中可以看出,MPEG 的音频,都是有相对固定的比特率,采样率 等参数,关于这每一帧的这些参数的具体值,都是找到索引值,然后查对应的索引表,而得 知具体的值。 不过,顺便提一点,在 MPEG 标准中,也描述了一种自由格式(free format),这种自由 格式意思为用一个固定比特率对文件进行编码,而此固定的比特率不是我们那些索引表中所 预定义好的。对于这类自由格式的 MPEG 音频,一般的解码器都无法解码。 4.1.1. 举例说明 MPEG 帧头的含义 下图给出了一般 MP3 的格式及举例说明了MPEG 的帧头所对应的信息: 图表 1MPEG帧头含义举例 4.2. MPEG 音频数据 MPEG 帧,除了开始部分的 MPEG 帧头外,余下的就是 MPEG 的音频数据。 需要注意的,MP3 中的帧,是MPEG 帧,其中的音频数据部分,是经过MP3 的相关算法 压缩后的数据,而不是原始采样过来的数据。 MPEG 音频数据部分,包含了 固定数目 的 音频采样(Audio Sample)。 其中关于采样个数: MPEG 的不同规范(MPEG-1/2/3),以及同一规范中不同的 Layer(Layer I/II/III),每一帧 所对应的采样数,都是固定的,其具体的值参见下表: 表 4 MPEG帧的采样数索引表(单位:个/帧) MPEG 1 MPEG 2 (LSF) MPEG 2.5 (LSF) Layer I 384 384 384 Layer II 1152 1152 1152 Layer III 1152 576 576 注: (1)上表中红色部分,就是我们此处所关心的,MPEG-1,Layer III,即 MP3,不论是 CBR 还是 VBR,文件中的每一帧,其采样的个数/采样数,都是固定的 1152 个。 而后面要介绍如何计算 VBR MP3 的播放时间,正是基于此前提: MP3,即 MPEG-1,Layer III,不论是 CBR,还是 VBR,每一帧的采样个数都是固定的 1152 个。即每一帧,都是固定的 1152个采样。 同时,我们还要注意另外一点,那就是对于被某个编码器将原始音频数据编码为 MP3 数据 后,得到的MP3 文件,对于此单个文件,其采样率,始终都是一样的。也就是说,如果解 析 MP3 的第一帧 MPEG 头得到的采样率是 44100Hz 的话,那么此 MP3 文件后面的所有 的帧的采样率,也肯定都是 44100Hz,即这个采样率,对于同一个MP3 文件来说,是固定 的。 于此相对的是,VBR 中的 Variable Bitrate,中的 Variable,可变的,指的是,变化的比特 率,而不是采样率。 总结一下就是: CBR和 VBR中的固定和可变,都是指的是比特率 Bitrate,而不是采样率 Sample Rate。 对于同一 MP3文件,不论 CBR 还是 VBR,采样率都是固定的。 因为该采样率对应着此 MP3 被编码器编码的那一时刻,编码器的采样率也是最开始时候就 设置好,并且之后不会再变化(除了你重新录制另外一个 MP3 文件)。 关于这个知识点,一定要搞清楚,否则就会出现我最开始遇到的情况,以为 VBR 的采样率 也是变化的,导致别人问我那么是不是意味着对 VBR MP3 解码,每一帧都要重新设置解码 器的采样率,如果回答是,那mplayer 等常见解码器的代码实现中,没看到对应设置,只 看到了最开始解码MP3 时候,只设置一次其采样率,其后解码每一帧,都是没有重新设置 采样率的。而实际结果是,VBR 变化的只是比特率,采样率是固定的,所以只需要在解码 MP3 最开始的时候设置一次即可。 4.3. MPEG 帧的大小 前面已经解释了,MPEG 帧= 帧头 + 数据。 下面来看看,MPEG 的帧的大小,即帧头的大小,加上帧数据的大小。 解释 MPEG 帧大小之前,先要介绍个名词:Slot,槽。 MPEG 帧,由一个个的 Slot(槽)组成。 Layer I 中,一个 Slot 是 4 个字节; Layer II 和 Layer III 中,一个 Slot 是一个字节。 所以,此处可以简单的理解为: MPEG 的 Layer III 中,帧是有一个个字节所组成。(是不是听起来像句废话,^_^) 好了,知道了此处MPEG 的 Layer III 的帧的基本单位为字节之后,我们再来看看帧的大小 是多少。 首先,帧头,不用多说,都是前面提到的,固定的 32 比特=4 字节。 其次要好好解释一下MPEG 帧的音频数据的大小,可用如下公式计算: Frame_Data_Size = Audo_Data_Size + Frame_Padding_Size = Frame_Time * Frame_Bitrate + Frame_Padding_Size = (Sample_Number * Time_per_Sample) * Frame_Bitrate + Frame_Padding_Size = (Sample_Number * (1/Sample_Rate)) * Frame_Bitrate + Frame_Padding_Size 帧数据大小 = 音频数据大小 + 帧的填充大小 = 帧的时长 * 帧的比特率 + 帧的填充大小 = (采样个数 * 每一采样的时长)* 帧的比特率 + 帧的填充大小 = (采样个数 * (1 / 采样率))* 帧的比特率 + 帧的填充大小 其中: 1. 帧的填充大小:对于MPEG 的 Layer III 来说,单位就是字节,不够 8bit 一个字节的话, 添加 padding 对应的 bit,凑够一个字节。所以,具体 padding 几个 bit,要看每一帧的数据 的 bit 是否是 8 的倍数,如果本身是 8 的倍数,那么 padding 就是 0,如果不是,根据具体 情况决定补齐几个 bit。 2. 采样个数:对于 MP3,即MPEG-1,Layer III 来说,不论 CBR 还是 VBR,每一帧采样 个数都是固定的 1152 个。 3. 采样率:对于 MP3,即 MPEG-1,Layer III 来说,不论 CBR还是 VBR,对于单个MP3 文件来说,也是固定的,每一帧采样率,都是一样的。采样率是多少,通过解析第一帧,即 可得知所有帧的采样率。 4. 帧的比特率: (1)CBR:每一帧都是一样的。通过解析第一帧即可得知其他所有帧的比特率。。 (2)VBR:每一帧都不同,所以要针对每一帧具体解析帧头,才能得知每一帧的比特率具 体是多少。 4.3.1. 常见 MPEG 帧的音频数据大小是 418 字节 最后, 来说明, 以常见的采样率为 44100 Hz,比特率为 128kbps的 CBR的 MP3 来计算: 帧数据大小 = (采样个数 * (1 / 采样率))* 帧的比特率 + 帧的填充大小 = (1152 * (1/44100 Hz))* 128kbps + 填充大小 = 3343.7 比特 + 填充大小 = 417.959 字节 + 填充大小 = 418 字节 对应的 MPEG 帧大小为: MPEG 帧大小 = 帧头 + 帧数据 = 4 + 418 = 422 字节 而对于 VBR 的帧的大小,就不是能这么简单计算出来的了。 因为 VBR 是每一帧的比特率都是变化的,所以对于每一帧的大小,都先要解析每一帧的帧 头,得到每一帧的比特率,然后才可以计算出来每个帧的大小。 另外提及一点,由于舍入误差,官方的计算帧大小的方法和此稍有不同。根据 ISO 标准, 应该以 slot 为单位进行计算,然后对结果取整,再乘于 slot 的大小。 不过,我们此处计算的是 MPEG 的 Layer III,本身 slot 就是一个字节,所以计算方法是对 的。 如果计算的是 Layer I,一个 slot 是 4 字节,就要先以 4 字节为单位进行计算,然后对结果 取整,再乘于 slot 大小,即再乘于 4 字节。 5. MP3 的播放时间的计算公式及 XING 和 VBRI 头介绍 5.1. CBR 的 MP3 的播放时间(duration)计算方法 5.1.1. 计算 CBR 的 MP3 的播放时间的方法乊一 对于计算 CBR 的MP3 的播放时间,其是 Constant Bitrate,固定的比特率,每一帧的比特 率也都是固定的同样的大小,所以,相对来说,很容易想得到,用文件大小,直接除于比特 率,就可以得到文件的播放时间了,即就用如下公式可以计算MP3 的播放时间: CBR Duration = File Size(Byte) × 8 bit/Byte ÷ (Bitrate(K bit/s)× 1000 bit/Kbit ) CBR播放时间 = 文件大小(字节)× 8比特/字节 ÷(比特率 千比特/秒 ×1000 比特/千比特) 【公式 1】 其中:  文件大小:严格地说,应该是 MP3 的文件总大小,减去 MP3 的 Tag 的大小,即 文件大小 = 总的MP3 文件大小 – MP3 的 Tag 大小 其中,MP3 的 Tag,往往和 MP3 文件总大小相比,几乎可以忽略不计,所以,一般也可以 直接用总的MP3 为文件大小,直接来计算: 文件大小 = 总的MP3 文件大小  比特率:可以通过解析MP3 文件的第一帧的MPEG 的帧头,得到比特率的索引值, 然后查比特率索引表,即可得到比特率是多少。 所以,可以看出,对于 CBR 的文件,可以用上面的公式,获得MP3 文件大小后,再去解 析第一帧的MPEG 帧头,得到比特率索引值,查表得到比特率的值,然后就算出整个 CBR MP3 文件的播放时间。 5.1.2. 计算 CBR 的 MP3 的播放时间的方法乊二 另外,多说一句,我原先以为,还有另外一种计算方法,即: “总帧数乘于每一帧的时长法” 总的时长 = 每一帧的时长 * 总的帧数 就是先计算每一帧的时间长度,再计算一共有多少帧,然后将两者相乘,即可得到文件总时 长。 其中: 每一帧的时长 = 每一帧的采样个数 * 每一采样的时长 = 每一帧的采样个数 * (1 / 每一帧的采样频率) 而 总的帧数 = 文件大小 / 单个帧的大小 = 文件大小(字节)* 8比特/字节 / ( (每个帧的时长 * 比特率(千比特/秒) * 1000 比特/千比特) ) 但是后来发现,上面这个计算总的帧数的方法,其实是不精确的,是把每一帧的 4 字节的 MPEG 帧头漏掉了。 因此,才会有之前的想法,认为这两种计算 CBR 的MP3 的播放时间的计算公式是同一种: “ 此法,其实和上面的是同一个方法,因为上面两个等式相乘之后,即为: 总的时长 = 每一帧的时长 * 总的帧数 =每一帧的时长 * [总的文件大小(字节)* 8 比特/字节 / ( (每个帧的时长 * 比特率(千 比特/秒) * 1000 比特/千比特) )] = [总的文件大小(字节)* 8 比特/字节 / [ 比特率 千比特/秒 * 1000 比特/千比特)] 还是和上面的方法是,是同一个公式。 ” 而对于上面的总的帧数的计算方法,真正正确的是: 总的帧数 = 文件大小 ÷ 单个帧的大小 = 文件大小 ÷ (帧头 + 帧数据) = 文件大小 ÷ (固定的 4字节 + 帧数据) = 文件大小(字节)× 8比特/字节 ÷ ( 4 + [ 每个帧的时长 × 比特率(千比特/秒)× 1000(比特/千比特)] ) 方法二,即为: CBR播放时间 = 每一帧的时长 × 总的帧数 = (每一帧的采样个数 ×(1 / 每一帧的采样频率))× ( 文件大小(字节)× 8比特/字节 ÷ ( 4 + [ 每个帧的时长 × 比特率(千比特/秒)× 1000(比特/千比特)] ) ) = 文件大小(字节)× ( 4 + (每一帧的采样个数÷每一帧的采样频率)× 比特率(千比特/秒)× 1000 (比特/千比特)÷ 8 比特/字节] ) ) ×(每一帧的采样个数÷每一帧的采样频率) 其中: 文件大小:是总的MP3 文件大小,减去MP3 的 Tag 的大小。 5.1.3. 计算 CBR 的 MP3 的播放时间的两种方法的总结 也因此,最开始的原以为的第二种方法,和第一种,是同一种的想法,其实是错误的。 正确的理解是,第二种方法的确是另外一个方法,而且更准确。 因为第一种方法: CBR播放时间 = 文件大小(字节)× 8比特/字节 ÷(比特率 千比特/秒 ×1000 比特/千比特) 中的比特率,只是针对每一帧的音频的数据的,而并不包括 4 字节的帧头,而(参见上面 的解释):“常见 MPEG 帧的音频数据大小是 418 字节”,所以,这样比较起来,至少是, 没 418+4=422 的这一个帧,其中只有 418 个是真正的音频数据,而比特率,指的只是这个 帧数据的比特率,并不包括 4 字节的帧头,如果也包含进去了,那么则产生了误差,误差 大概是 4/(418+4)=0.95%,即大概是百分之一的误差。 即,方法一,计算出来的 CBR 的播放时间,大概有 1%的误差。 而第二种方法: CBR播放时间 = 每一帧的时长 × 总的帧数 = 文件大小(字节)× ( 4 + (每一帧的采样个数÷每一帧的采样频率)× 比特率(千比特/秒)× 1000 (比特/千比特)÷ 8 比特/字节] ) ) ×(每一帧的采样个数÷每一帧的采样频率) 就把每一帧的 4 字节的帧头,也计算进去了,好处是计算出来的播放时间更加精确,坏处 是,计算起来,相对第一种方法来说,比较麻烦。 而第一种方法,虽然有大概 1%的误差,但是很容易计算。所以现实中,常用第一种方法。 5.1.3.1. 举例说明两种方法计算出结果的不同 我找了个 CBR 的MP3,用千千静听去查看其播放时间,推断出,其用的是第一种方法计算 的。 具体推断过程如下: (此处为了方便计算
本文档为【MPEG简介 + 如何计算CBR和VBR的MP3的播放时间 v1.5】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_889164
暂无简介~
格式:pdf
大小:853KB
软件:PDF阅读器
页数:31
分类:互联网
上传时间:2011-07-02
浏览量:175