一种针对变化比特率mp3文件的定位播放方法

文档序号:6563725阅读:109来源:国知局
专利名称:一种针对变化比特率mp3文件的定位播放方法
技术领域
本发明涉及媒体播放技术,特别涉及一种针对变化比特率MP3文件的定位播放方法。
背景技术
MP3文件由MP3帧组成,每一个MP3帧的播放时间是固定的,但是,每一个MP3帧的大小却不一定固定。通常,根据一个MP3文件中MP3帧大小是否恒定,将MP3文件分为两种恒定比特率(CBR)和变化比特率(VBR),其中,CBR是恒定帧大小的MP3文件,组成CBR的每一个MP3帧大小相同;VBR是变帧大小的MP3文件,组成VBR的每一个MP3帧的大小不一定相同。
目前,在手机、便携媒体播放器(PMP)等许多终端产品上都提供MP3功能,即支持MP3的播放、暂停、定位(Seek)播放等功能。MP3的定位播放是指从某个MP3文件的某一时刻开始播放。
定位播放对于CBR来说非常容易实现,只需确定CBR中每一帧的播放时间和帧大小,就很容易计算出从MP3文件的哪个位置开始播放。例如假设一个MP3文件由5000个MP3帧组成,每一帧大小均为100个字节,每一帧的播放时间为25毫秒。若定位时间为1秒,这里,定位时间是指从该MP3文件起始位置开始计时的时间,即要从该MP3文件起始位置开始的1秒处开始播放,则由1000毫秒/25毫秒=40可知,与定位时间1秒相对应的定位位置为第41帧开始的位置,应该从该MP3文件的第41帧开始播放,本例中定位位置相对于该MP3文件起始位置的偏移量为偏移量=(1000毫秒/25毫秒)*100字节=4000字节从该MP3文件起始位置开始的4000个字节处读取MP3数据进行播放。
但是对于VBR来说,由于VBR中每一帧的长度都是不固定的,定位播放需要逐一计算、并累加每一帧的大小,直至得到定位位置相对于MP3文件起始位置的偏移量。而为了获取每一帧的大小,需要解析每一帧的帧头信息,这样,在每一次定位播放时都需要逐一解析帧头信息,导致定位播放花费的时间较长,而且定位播放的位置越靠近MP3文件的结尾,需要花费的定位时间就会越长。

发明内容
有鉴于此,本发明的主要目的在于提供一种针对变化比特率MP3文件的定位播放方法,实现在VBR MP3文件的播放过程中快速定位播放位置。
为达到上述目的,本发明的技术方案具体是这样实现的一种针对变化比特率MP3文件的定位播放方法,该方法包括以下步骤A、在开始播放变化比特率VBR MP3文件时,计算并存储所述MP3文件的每一帧大小;B、当接收到定位播放指示时,根据定位时间、每帧播放时间以及所存储的每一帧大小,确定所述定位时间对应的定位位置,并从所述MP3文件的所述定位位置处开始播放。
进一步地,在所述步骤A之前可以包括判断所述MP3文件是否为VBR MP3文件,当是VBR MP3文件时,继续执行所述步骤A,否则,结束本方法流程。
其中,步骤A所述计算并存储所述MP3文件的每一帧大小可以为逐一计算所述MP3文件的每一帧大小,并依次存储所述计算所得到的每一帧大小。
其中,所述逐一计算所述MP3文件的每一帧大小,并依次存储所述计算所得到的每一帧大小的方法可以包括以下步骤A1、创建一个空的索引文件,并将所述MP3文件的第1帧作为当前帧;
A2、从所述MP3文件中读取当前帧,并根据所述当前帧的帧头信息计算当前帧的大小;A3、将计算所得到的当前帧的大小写入所述索引文件中;A4、判断所述当前帧是否为所述MP3文件的最后一帧,如果所述当前帧不是所述MP3文件的最后一帧,则将所述当前帧的下一帧作为当前帧,继续执行所述步骤A2;否则,开始播放所述MP3文件,并结束本方法流程。
其中,步骤A2所述根据所述当前帧的帧头信息计算当前帧的大小可以包括以下步骤A21、获取所述当前帧的帧头中第三个字节的高4位,根据所述高4位取值与MP3帧的比特率的对应关系

确定所述当前帧的比特率;A22、获取所述当前帧的帧头中第三个字节的低4位中的高2位,根据所述高2位取值与MP3帧的采样率的对应关系

确定所述当前帧的采样率;A23、根据所述当前帧的帧头中第三个字节的第2位的取值确定所述当前帧中是否存在补位,若所述第2位的取值为0,则判定所述当前帧中不存在补位,若所述第2位的取值为1,则判定所述当前帧中存在补位;A24、根据所确定的当前帧的比特率、采样率和补位信息,按照关系帧长度=取整((144*比特率/采样率)+补位)计算所述当前帧的大小。
其中,步骤B所述确定所述定位时间对应的定位位置的方法可以包括以下步骤B1、根据所述定位时间和每帧播放时间计算所述定位位置对应的帧序号;B2、根据所存储的所述每一帧大小,计算所述帧序号所对应的帧相对于所述MP3文件起始位置的偏移量;B3、以所述MP3文件起始位置的地址加所述偏移量,得到所述定位位置。
步骤B2所述偏移量可以为将所述帧序号之前的帧所对应的每一帧大小相加所得到的值。
由上述技术方案可见,由于本发明在开始播放MP3文件之前,预先存储了MP3文件中的每一帧的大小信息,所以在进行定位播放时,可以根据所存储的每一帧大小信息,很快地计算出定位时间所对应的MP3帧在MP3文件中的位置,如此,就可以从计算得到的位置处开始读取数据、进行播放,从而保证了定位播放的速度,实现了在VBR MP3文件的播放过程中快速定位播放位置。


图1为本发明针对VBR MP3文件的定位播放方法的示例性流程图。
图2为图1所示步骤101中计算并存储MP3每一帧大小的方法流程图。
图3为图1所示步骤102中确定定位位置的方法流程图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明针对VBR的MP3文件提出一种定位播放的方法,其主要思想是在开始播放MP3文件时,存储该MP3文件的每一帧大小,如此,在进行定位播放时就能够非常快速地根据所存储的每一帧大小计算得到定位播放的位置,从而实现在VBR MP3文件的播放过程中快速定位播放位置。
图1为本发明针对VBR MP3文件的定位播放方法的示例性流程图。参见图1,该方法包括以下步骤步骤101在开始播放VBR MP3文件时,计算并存储所述MP3文件的每一帧大小。
本步骤中,在开始播放VBR MP3文件时,可以首先建立一个索引文件,然后从该MP3文件的第一帧开始,逐一读取每一帧的帧头信息,并根据帧头信息计算出每一帧的长度,将此长度依次存入索引文件,直至在索引文件中存储了MP3文件的最后一个帧的大小,如此,该MP3文件的每一帧大小将存储在索引文件中。
步骤102当接收到定位播放指示时,根据定位时间、每帧播放时间以及所存储的每一帧大小,确定所述定位时间对应的定位位置,并从所述MP3文件的所述定位位置处开始播放。
本步骤中,可以首先根据定位时间和每帧播放时间计算定位位置所对应的帧序号,然后根据步骤101在索引文件中所存储的每一帧大小信息,计算帧序号所对应的帧相对于该MP3文件起始位置的偏移量,从而确定定位位置,最后,从所确定的定位位置开始读取MP3数据进行播放。
至此,结束本发明定位播放方法的示例性流程。
上述步骤101中计算并存储MP3文件的每一帧大小的方法如图2所示。图2为图1所示步骤101中计算并存储MP3每一帧大小的方法流程图。参见图2,该方法包括以下步骤步骤201当开始播放一个MP3文件时,读取该MP3文件头(header)中的信息。
步骤202根据文件头信息,判断该MP3文件是否为VBR MP3文件,如果该MP3文件是VBR MP3文件,则继续执行步骤203;否则,结束本方法流程。
步骤203创建一个空的索引文件,并将MP3文件的第1帧作为当前帧。
本步骤中,所创建的索引文件用于存储MP3文件中每一帧的大小。
步骤204从MP3文件中读取当前帧。
步骤205解析当前帧的帧头,获得该帧的相关信息,包括采样率和比特率信息等。
步骤206根据所得到的MP3帧头信息计算当前帧的大小。
本步骤中,根据MP3帧头信息计算帧大小的方法可以包括以下步骤根据现有技术,每一个MP3帧的帧头由四个字节组成,其中,第三个字节的高4位包含有比特率信息,第三个字节的低4位中的高2位包含有采样率信息,第三个字节的第2位包含有补位信息。因此,本步骤中,首先可以获取当前MP3帧的帧头中第三个字节的高4位,并依据如表1所示的该4位取值与MP3帧的比特率对应关系表,确定该MP3帧的比特率

表1例如,若当前帧的帧头中第三个字节的高4位取值为1110,则根据表1,该帧的比特率是320kbps,其中kbps表示1024比特每秒。
然后,获取当前MP3帧的帧头中第三个字节的低4位中的高2位,并依据如表2所示的该2位取值与MP3帧的采样率的对应关系表,确定该MP3帧的采样率

表2例如,若当前帧的帧头中第三个字节的低4位中的高2位取值为10,则根据表2,该帧的采样率是32000Hz,其中Hz表示赫兹。
再判断当前MP3帧中是否存在补位,即根据当前MP3帧帧头中第三个字节的第2位来判断。如果该位取值为0,则表示当前MP3帧中不存在补位(Frame is not Padded),如果该位取值为1,则表示当前MP3帧中存在补位(Frame is Padded)。
最后,根据所得到的比特率、采样率和补位信息,按照如下关系,计算当前帧的大小帧大小=取整((144*比特率/采样率)+补位)步骤207将计算所得到的帧的大小值写入索引文件中。
步骤208判断当前帧是否为该MP3文件的最后一帧数据,如果当前帧不是该MP3文件的最后一帧数据,则将当前帧的下一帧作为当前帧,继续执行步骤204;否则,继续执行步骤209。
本流程中需要从MP3文件的第一帧开始,逐一读取每一帧的帧头信息,并根据帧头信息计算出每一帧的长度,然后将此长度依次存入索引文件,直至在索引文件中存储了MP3文件的最后一个帧的大小,因此,在当前帧不是该MP3文件的最后一帧数据时,需要将当前帧的下一帧作为当前帧,继续执行步骤204至步骤208的操作。
步骤209开始播放MP3文件。
本步骤中,当索引文件中存储了该MP3文件的每一帧的大小时,即可以开始执行正常的播放功能。
至此,结束本示例中计算并存储MP3文件的每一帧大小的方法流程。
在播放MP3的过程中,可能接收到用户的定位播放指示,要求从MP3文件的某一个特定时间点开始播放,例如,从MP3文件的10秒处开始播放,此时需要根据所存储的索引文件,以及定位播放指示中的定位时间和每帧播放时间,计算定位位置,然后从计算所得到的定位位置开始播放MP3,具体的定位播放方法如图3所示。图3为图1所示步骤102中确定定位位置的方法流程图。参见图3,该方法包括以下步骤步骤301在播放MP3的过程中,收到用户的定位播放指示,要求从MP3文件的某一个特定时间点开始播放。
步骤302根据定位播放指示中的定位时间和每帧播放时间计算定位位置所对应的帧序号。
本步骤中,可以按照现有技术的有关方式确定每帧播放时间。假设本示例中定位时间为1秒、每帧播放时间为25毫秒,则从第1帧到第40帧这40帧数据的播放时间为1秒,因此,定位位置所对应的帧序号应为41,即需要从第41帧开始播放。
步骤303读取所存储的索引文件。
本步骤中所读取的索引文件即图1所示步骤101中所存储的索引文件,该索引文件中顺序地包含了该MP3文件的每一个MP3帧的大小信息。
步骤304计算定位位置相对于MP3文件起始位置的偏移量。
根据步骤302的计算结果可知,本示例需要从第41帧开始播放,因此,本步骤中,首先根据从索引文件中所读取的信息,获得从第1帧到第40帧每一帧的大小,然后将这些帧大小值相加,即可得到定位位置相对于该MP3文件起始位置的偏移量。
步骤305根据步骤304所得到的偏移量将文件定位到指定的位置,即定位到播放位置,获取正确的MP3帧。
本步骤中,将该MP3文件起始位置的地址与计算所得到的偏移量相加,即可得到定位位置。
步骤306开始播放MP3。
至此,结束本示例中确定定位位置的方法流程。
在一个MP3文件播放完毕、或者停止播放MP3文件时,可以删除本发明所存储的对应于该MP3文件的每一帧大小信息。
由上述实施例可见,由于本发明技术方案在开始播放MP3文件之前,预先存储了MP3文件中的每一帧的大小信息,所以在进行定位播放时,可以根据所存储的每一帧大小信息,很快地计算出定位时间所对应的MP3帧在MP3文件中的位置,如此,就可以从计算得到的位置处开始读取数据、进行播放,从而保证了定位播放的速度,实现了在VBR MP3文件的播放过程中快速定位播放位置。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种针对变化比特率MP3文件的定位播放方法,其特征在于,该方法包括以下步骤A、在开始播放变化比特率VBR MP3文件时,计算并存储所述MP3文件的每一帧大小;B、当接收到定位播放指示时,根据定位时间、每帧播放时间以及所存储的每一帧大小,确定所述定位时间对应的定位位置,并从所述MP3文件的所述定位位置处开始播放。
2.根据权利要求1所述的定位播放方法,其特征在于,在所述步骤A之前进一步包括判断所述MP3文件是否为VBR MP3文件,当是VBR MP3文件时,继续执行所述步骤A,否则,结束本方法流程。
3.根据权利要求1所述的定位播放方法,其特征在于,步骤A所述计算并存储所述MP3文件的每一帧大小为逐一计算所述MP3文件的每一帧大小,并依次存储所述计算所得到的每一帧大小。
4.根据权利要求3所述的定位播放方法,其特征在于,所述逐一计算所述MP3文件的每一帧大小,并依次存储所述计算所得到的每一帧大小的方法包括以下步骤A1、创建一个空的索引文件,并将所述MP3文件的第1帧作为当前帧;A2、从所述MP3文件中读取当前帧,并根据所述当前帧的帧头信息计算当前帧的大小;A3、将计算所得到的当前帧的大小写入所述索引文件中;A4、判断所述当前帧是否为所述MP3文件的最后一帧,如果所述当前帧不是所述MP3文件的最后一帧,则将所述当前帧的下一帧作为当前帧,继续执行所述步骤A2;否则,开始播放所述MP3文件,并结束本方法流程。
5.根据权利要求4所述的定位播放方法,其特征在于,步骤A2所述根据所述当前帧的帧头信息计算当前帧的大小包括以下步骤A21、获取所述当前帧的帧头中第三个字节的高4位,根据所述高4位取值与MP3帧的比特率的对应关系
确定所述当前帧的比特率;A22、获取所述当前帧的帧头中第三个字节的低4位中的高2位,根据所述高2位取值与MP3帧的采样率的对应关系
确定所述当前帧的采样率;A23、根据所述当前帧的帧头中第三个字节的第2位的取值确定所述当前帧中是否存在补位,若所述第2位的取值为0,则判定所述当前帧中不存在补位,若所述第2位的取值为1,则判定所述当前帧中存在补位;A24、根据所确定的当前帧的比特率、采样率和补位信息,按照关系帧长度=取整((144*比特率/采样率)+补位)计算所述当前帧的大小。
6.根据权利要求1所述的定位播放方法,其特征在于,步骤B所述确定所述定位时间对应的定位位置的方法包括以下步骤B1、根据所述定位时间和每帧播放时间计算所述定位位置对应的帧序号;B2、根据所存储的所述每一帧大小,计算所述帧序号所对应的帧相对于所述MP3文件起始位置的偏移量;B3、以所述MP3文件起始位置的地址加所述偏移量,得到所述定位位置。
7.根据权利要求6所述的方法,其特征在于,步骤B2所述偏移量为将所述帧序号之前的帧所对应的每一帧大小相加所得到的值。
全文摘要
本发明公开了一种针对变化比特率MP3文件的定位播放方法,该方法包括以下步骤A.在开始播放变化比特率(VBR)MP3文件时,计算并存储所述MP3文件的每一帧大小;B.当接收到定位播放指示时,根据定位时间、每帧播放时间以及所存储的每一帧大小,确定所述定位时间对应的定位位置,并从所述MP3文件的所述定位位置处开始播放。应用本发明能够实现在VBR MP3文件的播放过程中快速定位播放位置。
文档编号G06F17/00GK1971742SQ20061016208
公开日2007年5月30日 申请日期2006年12月8日 优先权日2006年12月8日
发明者唐勉 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1