一种在vbr格式的mp3文件中实现定位的方法

文档序号:9546739阅读:369来源:国知局
一种在vbr格式的mp3文件中实现定位的方法
【技术领域】
[0001]本发明涉及一种在VBR格式的MP3文件中实现定位的方法。
【背景技术】
[0002]MP3是利用音频压缩技术,将声音用10:1-12:1的压缩率压缩成容量较小的文件,可以保持较好的音质。由于这种压缩方式的全称叫MPFE auto layer所以人们把它简称为MP3。MP3文件由一系列帧(Frame)组成,每帧包括帧头和实体数据两部分,每个中贞的巾贞头包含该巾贞的比特率(bitrate)、釆样率(samplingrate)等信息。因而,可根据如下公式算出每个巾贞的长度(单位为字节,framesize表示):framesize=144*bitrate/samplingrate+padding bit.根据比特率可将MP3文件分为固定比特率(CBR)和VBR。在播放MP文件时,一般是通过时间来确定起始播放位置,同时还要返回给用户一些关于此MP3的信息,如总播放时间、釆样率、平均比特率等等。在CBR格式的MP3文件中,每帧的数据长度固定,只需用第一帧的帧头信息就可通过计算帧的个数确定所需播放的目标位里与所需返回信息.而在VBR格式的MP3文件中,由于比特率会发生变化,导致各帧的数据长度不固定,只有将文件中的所有帧的帧头信息解析一遍,才可能实现准确定位以及返回准确信息。例如,为在VBR格式的MP3文件中实现搜寻(Seek)功能,目前一般是通过下述方式实现的:在载入(load)文件时,要将整个文件浏览一遍,找到每帧的比特率,由比特率与釆样率定位下一帧的位置,如此往复,算出总时间、平均比特率等返回为用户信息;进行seek播放时,依然需要浏览文件,每过一帧算出当前时间并将其与seek时间比较,如果大于或等于seek时间,则表明找到seek位置。这种方法尽管具有定位准确的优点,但load文件与seek花费时间过长,这在计算处理性能较差的环境中会表现为播放前较长的等待时间,这是用户不能接受的。
[0003]此外,尽管有一些VBR格式的MP3文件在第一帧(first frame)中包含帧数、文件长度、帧索引表(TOC)等数据;照理说,这些数据可用来简化和加速在MP3文件中的定位,但像这种MP3文件中包括的总帧数、文件长度、帧索引表(TOC)等数据通常很不准确,缺乏实用性。而且,在实践中,大部分VBR格式的MP3文件并不包含这样的“first frame”。

【发明内容】

[0004]为解决上述现有的缺点,本发明的主要目的在于提供一种实用的在VBR格式的MP3文件中实现定位的方法,在满足一定的定位准确的同时,减轻计算负担,降低对计算处理能力的要求,缩短实现定位所需要的时间。
[0005]为达成以上所述的目的,本发明的一种在VBR格式的MP3文件中实现定位的方法采取如下技术方案:
一种在VBR格式的MP3文件中实现定位的方法,包括步骤,
(a)选取所述MP3文件中的若干帧; (b)计算所述若干帧的至少一个参数,所述至少一个参数是平均帧长度和/或平均比特率;
(c)至少基于所述至少一个参数中的一个参数在所述文件MP3中定位。
[0006]所述步骤(b)的所述至少一个参数是平均帧长度,步骤(C)基于平均帧长度和每帧的播放时间在所述从MP3文件中定位,步骤(b)的所述至少一个参数包括平均比特率,步骤(c)基于所述至少一个参数在所述MP3文件中定位,步骤(a)的所述选取为平均选取或随机选取,步骤(b)所述至少一个参数是平均帧长度,步骤(c)基于平均帧长度和每帧的播放时间在所述MP3文件中确定所搜寻的目标位置。
[0007]采用如上技术方案的本发明,具有如下有益效果:
本发明在满足一定的定位准确的同时,减轻计算负担,降低对计算处理能力的要求,缩短实现定位所需要的时间。
【具体实施方式】
[0008]下面将通过本发明的一个实施方案对其进行详细描述,仅出于示例的目的。
[0009]在该实施方案中,为了在VBR格式的MP3文件中实现定位,第一步是从MP3文件中选取若干帧。需要说明的是,这里的“定位” 一般指通过时间来确定MP3文件中的位置。实际需要定位的情形包括但不限于:实现seek功能时、在暂停(pause)状态下播放时等。
[0010]优选地,巾贞的选取方式和数量根据MP3文件的特性(如pop, jazz, classic等等)确定。在一个特定实施例中,可以平均选取的方式选取帧,例如将整首MP3文件平均分成若干段,例如8段或16段,将根据MP3的帧格式找到的每段第一帧作为选取帧。在另一特定实施例中,可以随机选取的方式选取帧,例如,先确定要选取的帧数,然后借助一个随机数发生器进行随机选取。
[0011]第二步,计算所述若干帧的平均帧长度和/或平均比特率。
[0012]下面具体说明平均帧长度的计算方法。对选取的若干帧,先分别计算所述若干帧中每帧的帧长度。对MP3文件而言,当帧长度以字节为单位时,其计算公式为framesize=144*bitrate/samplingrate+padding bit,
根据计算结果即可容易地得到所述平均帧长度,
类似地,可容易地根据所述若干帧各自的比特率计算出所述若干帧的平均比特率。
[0013]上面提到的两个步骤可在例如load文件时进行,为实现定位作准备。
[0014]最后,基于上一步所计算的参数在MP3文件中定位。在一个实施例中,可在第二步中计算所述若干巾贞的平均巾贞长度。接下来定位时,例如,实现做MP3播放的seek功能时,通常还需要用到每巾贞的播放时间。可根据釆样率确定每巾贞的播放时间(以frametime表示),当播放时间以毫秒为单位时,其计算公式为
Frametime=Sampleperframe/sampI ingrate,
其中sampIeperframe为每巾贞的样本数,根据MP3所属的是MPEGl还是MPEG2分别为1152和576 ;或者,可先用上面提到的方法计算出所述若干帧的平均比特率,再通过所述若干帧的平均帧长度和平均比特率计算每帧的播放时间,当平均帧长度以字节为单位时,计算公式为:每帧的播放时间=平均帧长度X8/平均比特率。每帧的播放时间可在例如load文件计算,在定位时进行调用。然后,根据每帧的播放时间和具体的定位要求,如seek的时间,可计算出帧数;再根据所述平均帧长度和计算出的帧数,可确定定位的目标位置,如seek的目标位置:Seek的目标位置=seek时间/每帧的播放时间*平均帧长度。
[0015]在另一实施例中,可在第二步中计算所述若干帧的平均比特率。之后,需要定位时,例如,实现MP3播放的seek功能时,可通过多种途径确定目标位置。例如,一种途径是根椐如下公式确定seek的目标位置(以字节为单位):seek的目标位置=seek时间*平均比特率/8 ;另一种途径是先根据采样率和所述若干帧的平均比特率计算所述若干帧的平均帧长度,然后以前面提到的方法确定目标位置.本领域的技术人员应该理解的是,还可使用其它方式,这里不一一列举。
[0016]在又一实施例中,可在第二步中计算所述若干帧的平均帧长度和平均比特率。定位时,可结合具体的定位条件,根据这两个参数中的一个或两个方便地确定定位的目标位置,具体方式可参照前述内容,这里不再详述。
[0017]在上面的某些实施例中,计算所述若千帧的平均比特率的一个附加优点是可作为返回的用户信息供显示。本发明利用了近似处理,在保证一定准确性的同时减轻了计算负担,当用于那些计算能力有限的设备中时,这一优点尤其明显。本发明适合用于MP3播放器以及具有MP3播放功能的便携式设备中,如手机等。像这种便携式设备一般体积较小,因而能提供的数据处理能力有限,利用现有的VBR处理方法进行定位时往往需要较长的时间,利用本发明能改善这一点。此外,在其他一些具有MP3播放功能的电子设备中,如在那些因考虑到成本而计算能力有限的电子设备中,也可以使用本发明。
[0018]根据本发明的原则和教导,本领域的技术人员将可对这里公开的实施方案和要素进行改变而不脱离本发明的范围。因此,本发明的范围不应该由示例实施方案确定,而应该由那些会被允许的权利要求及它们的法定等同物确定。
【主权项】
1.一种在VBR格式的MP3文件中实现定位的方法,包括步骤, (a)选取所述MP3文件中的若干帧; (b)计算所述若干帧的至少一个参数,所述至少一个参数是平均帧长度和/或平均比特率; (c)至少基于所述至少一个参数中的一个参数在所述文件MP3中定位。2.根据权利要求1所述的一种在VBR格式的MP3文件中实现定位的方法,其特征在于,所述步骤(b)的所述至少一个参数是平均帧长度,步骤(C)基于平均帧长度和每帧的播放时间在所述从MP3文件中定位,步骤(b)的所述至少一个参数包括平均比特率,步骤(c)基于所述至少一个参数在所述MP3文件中定位,步骤(a)的所述选取为平均选取或随机选取,步骤(b)所述至少一个参数是平均帧长度,步骤(C)基于平均帧长度和每帧的播放时间在所述MP3文件中确定所搜寻的目标位置。
【专利摘要】本发明公开一种在VBR格式的MP3文件中实现定位的方法,其特征在于,包括步骤,选取所述MP3文件中的若干帧,计算所述若干帧的至少一个参数,所述至少一个参数是平均帧长度和/或平均比特率,至少基于所述至少一个参数中的一个参数在所述文件MP3中定位。本发明在满足一定的定位准确的同时,减轻计算负担,降低对计算处理能力的要求,缩短实现定位所需要的时间。
【IPC分类】G06F3/041
【公开号】CN105302352
【申请号】CN201410368824
【发明人】袁博, 冯永强
【申请人】西安司坤电子科技有限公司
【公开日】2016年2月3日
【申请日】2014年7月30日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1