音视频编码方法及缩短点播播放前等待时间的播放方法转让专利

申请号 : CN201110138701.8

文献号 : CN102170453B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 焦利锋吴超

申请人 : 北京暴风科技股份有限公司

摘要 :

本发明公开了一种音视频编码方法,涉及多媒体编码技术领域,包括:在音视频文件中按照采样数据段sample的时间戳由小到大顺序排列,如果不同轨的媒体数据时间戳相同,则按照音视频文件头中记录的轨的先后顺序排列;以音视频关键帧为边界将若干sample分成若干组,并在原有的音视频文件中为每组sample增加一个第二索引,记录该组中每个sample的播放信息,每组中的sample个数大于等于1;依次为每个第二索引建立第一索引,记录每个第二索引在音视频文件中的信息;将第一索引编码到音视频文件中。还公开了一种缩短点播播放前等待时间的音视频播放方法。本发明缩短了在线音视频点播播放前等待时间,提高了播放效率。

权利要求 :

1.一种音视频编码方法,其特征在于,包括以下步骤:

S1:在音视频文件中按照采样数据段smaple的时间戳由小到大顺序排列,如果不同轨的媒体数据时间戳相同,则按照所述音视频文件头中记录的轨的先后顺序排列;

S2:以音视频关键帧为边界将若干sample分成若干组,并在原有的音视频文件中为每组sample增加一个第二索引,记录每组中每个sample的播放信息,所述每组中的sample个数大于等于1;

S3:依次为每个第二索引建立第一索引,记录所述每个第二索引在音视频文件中的信息,所述第二索引在音视频文件中的信息包括:第二索引在文件中的偏移量,第二索引的大小及第二索引中的各轨的开始sample的帧号;

S4:将所述第一索引编码到所述音视频文件中,并且所述第一索引在音视频文件中的位置的偏移量分别小于第二索引和sample在文件中的偏移量。

2.如权利要求1所述的音视频编码方法,其特征在于,所述第二索引在所述音视频文件中位于对应的sample分组之前。

3.如权利要求2所述的音视频编码方法,其特征在于,所述第二索引与其对应的sample分组连续存放。

4.如权利要求1所述的音视频编码方法,其特征在于,所述第一索引在所述音视频文件中位置紧接在元数据信息之后。

5.如权利要求1所述的音视频编码方法,其特征在于,所述第一索引按与其对应的第二索引的先后顺序编码。

6.如权利要求1~5中任一项所述的音视频编码方法,其特征在于,所述音视频文件为固定帧率的RMVB文件、WMV文件、MPEG文件或AVI文件。

7.一种缩短点播播放前等待时间的音视频播放方法,其特征在于,点播的音视频文件为按权利要求1~5任一所述的音视频编码方法编码得到的音视频文件,包括以下步骤:A1:在线视频点播系统的客户端向服务器端发出请求,从所述音视频文件的开始处顺序下载数据;

A2:客户端在下载并解析完所述第一索引后,停止下载后面的数据;

A3:客户端根据第一索引中的索引信息,找到音视频文件中的第一个第二索引在音视频文件中的偏移量;

A4:客户端重新向服务器端发出请求,并指示服务器忽略从当前位置到音视频文件头的尾部的数据,而直接从第一个第二索引开始处下载数据;

A5:客户端解析下载的数据,当解析到本次下载已经完成了第一个第二索引的下载时,解析该第二索引的信息得到对应的音视频分段中每个sample的播放信息;

A6:客户端根据所述sample的播放信息从服务器端下载对应的sample,并将下载的sample提交到播放器播放。

8.如权利要求7所述的缩短点播播放前等待时间的音视频播放方法,其特征在于,所述步骤A6中在播放时按步骤A5的方式继续下载后续的第二索引及其中记录的播放信息对应的sample,直至所有sample下载完成。

9.如权利要求8所述的缩短点播播放前等待时间的音视频播放方法,其特征在于,在播放过程中,若播放器接收到用户拖动或者点击播放进度条的消息时,播放器根据第一索引和第二索引提供的播放信息中的时间戳到关键帧的文件偏移量重新定位到拖动点对应的关键帧处。

说明书 :

音视频编码方法及缩短点播播放前等待时间的播放方法

技术领域

[0001] 本发明涉及多媒体编码技术领域,特别涉及一种音视频编码方法及缩短点播播放前等待时间的播放方法。

背景技术

[0002] 一种流媒体的实现方式是播放器连接网络,从网络上实时下载音视频文件数据,把下载的数据进行解析,并把解析得到的有效数据提交给播放器进行播放,实现边下边播的效果,这是流媒体领域普通技术人员已经熟知的知识,本文不再详细说明。
[0003] 通常音视频文件,如MP4文件包含moov atom和mdat atom,而播放器对mdat atom的解析依赖于moov atom,换言之,播放器需要得到moov atom的全部数据之后才可以解析mdat atom,然后播放mdat atom中的音视频sample数据。而moov atom中包含的数据量比较大,例如,播放时长为1小时的音视频文件,其moov atom的大小约为1.5~2Mbytes。假设用户是通过下行带宽为1Mb/s的ADSL下载数据,那么这部分的数据下载就需要12~
16秒,计算公式为1.5×1024×8/1024=12秒,用户开始播放前至少需要花费12秒下载moov atom,之后才能下载mdat atom的数据进行播放。延长了播放时间,降低了音视频播放的效率。

发明内容

[0004] (一)要解决的技术问题
[0005] 本发明要解决的技术问题是:如何实现一种能缩短在线音视频点播播放前等待时间音视频文件编码方法。并通过其缩短在线音视频点播播放前等待时间,以提高播放效率。
[0006] (二)技术方案
[0007] 为解决上述技术问题,本发明提供了一种音视频编码方法,包括以下步骤:
[0008] S1:在音视频文件中按照采样数据段smaple的时间戳由小到大顺序排列,如果不同轨的媒体数据时间戳相同,则按照所述音视频文件头中记录的轨的先后顺序排列;
[0009] S2:以音视频关键帧为边界将若干sample分成若干组,并在原有的音视频文件中为每组sample增加一个第二索引,记录每组中每个sample的播放信息,所述每组中的sample个数大于等于1;
[0010] S3:依次为每个第二索引建立第一索引,记录所述每个第二索引在音视频文件中的信息,所述第二索引在音视频文件中的信息包括:第二索引在文件中的偏移量,第二索引的大小及第二索引中的各轨的开始sample的帧号;
[0011] S4:将所述第一索引编码到所述音视频文件中,并且所述第一索引在音视频文件中的位置的偏移量分别小于第二索引和sample在文件中的偏移量。
[0012] 其中,所述第二索引在所述音视频文件中位于对应的sample分组之前。
[0013] 其中,所述第二索引与其对应的sample分组连续存放。
[0014] 其中,所述第一索引在所述音视频文件中位置紧接在元数据信息之后。
[0015] 其中,所述第一索引按与其对应的第二索引的先后顺序编码。
[0016] 其中,所述音视频文件为固定帧率的RMVB文件、WMV文件、MPEG文件或AVI文件。
[0017] 本发明还提供了一种缩短点播播放前等待时间的音视频播放方法,点播的音视频文件为按上述的音视频编码方法编码得到的音视频文件,包括以下步骤:
[0018] A1:在线视频点播系统的客户端向服务器端发出请求,从所述音视频文件的开始处顺序下载数据;
[0019] A2:客户端在下载并解析完所述第一索引后,停止下载后面的数据;
[0020] A3:客户端根据第一索引中的索引信息,找到音视频文件中的第一个第二索引在音视频文件中的偏移量;
[0021] A4:客户端重新向服务器端发出请求,并指示服务器忽略从当前位置到音视频文件头的尾部的数据,而直接从第一个第二索引开始处下载数据;
[0022] A5:客户端解析下载的数据,当解析到本次下载已经完成了第一个第二索引的下载时,解析该第二索引的信息得到对应的音视频分段中每个sample的播放信息;
[0023] A6:客户端根据所述sample的播放信息从服务器端下载对应的sample,并将下载的sample提交到播放器播放。
[0024] 其中,所述步骤A6中在播放时按步骤A5的方式继续下载后续的第二索引及其中记录的播放信息对应的sample,直至所有sample下载完成。
[0025] 其中,在播放过程中,若播放器接收到用户拖动或者点击播放进度条的消息时,播放器根据第一索引和第二索引提供的播放信息中的时间戳到关键帧的文件偏移量重新定位到拖动点对应的关键帧处。
[0026] (三)有益效果
[0027] 本发明通过在编码时建立sample的二次索引,并且在播放前当下载并解析完第一个第二索引中的播放信息后随即播放,从而缩短了播放前的等待时间。

附图说明

[0028] 图1是本发明实施例的一种音视频编码方法流程图;
[0029] 图2是利用图1的编码方法对MP4文件编码后的储存逻辑结构图;
[0030] 图3是利用图1的编码方法得到的音视频文件实现的一种缩短点播播放前等待时间的音视频播放方法流程图。

具体实施方式

[0031] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0032] 下面结合固定帧率的MP4音视频文件来说明本发明的编码方法,流程如图1所示,编码完成后的MP4文件如图2所示,该方法具体包括步骤:
[0033] 步骤S101,在音视频文件中按照采样数据段sample的时间戳由小到大顺序排列,如果不同轨的sample时间戳相同,则按照音视频文件头中记录的轨的先后顺序排列。对于MP4文件将其sample按该步骤的方式排序。
[0034] 步骤S102,以音视频关键帧为边界将若干sample分成若干组,并在原有的音视频文件中为每组sample增加一个第二索引sbix atom,记录该组中每个sample的播放信息,每组中的sample个数大于等于1。其中播放信息包括:sample的在文件中的偏移量,大小,播放时间戳等信息。优选地,第二索引sbix atom在音视频文件中位于对应的sample分组之前,并与其对应的sample分组连续存放。
[0035] 步骤S103,依次为每个第二索引sbix atom建立第一索引bfhd atom,记录所述每个第二索引sbix atom在音视频文件中的信息,即sbixatom在文件中的偏移量,第二索引sbix atom的大小,还记录了每一个sbix atom中的各轨的开始sample的帧号。
[0036] 步骤S104,将第一索引bfhd atom编码到音视频文件中,并且在文件中的偏移量分别小于第二索引和sample在文件中的偏移量,位于编码后生成的文件中的偏移量较小的位置,如:第一索引bfhd atom在音视频文件中的位置紧接在元数据信息mvhd atom之后。优选地,第一索引bfhd atom按与其对应的第二索引sbix atom的先后顺序编码,即bfhd atom中一次存储第一个sbix atom到最后一个sbix atom的信息。
[0037] 编码完成后,MP4文件的存储逻辑结构如图2所示,其中各项含义为:
[0038] ftype atom:标示该文件为mp4文件;moov atom:文件头;mvhd atom:对文件的整体性的说明,如总时间,有几轨等;bfhd atom:第一索引;trak atom:一个轨的具体说明及索引;mdat atom:数据区;sbix atom:第二索引;sample:采样数据段。
[0039] 如图3所示,为利用图1的编码方法得到的音视频文件(MP4文件)实现缩短点播播放前等待时间的音视频播放方法流程,具体包括:
[0040] 步骤S301,在线视频点播系统的客户端向服务器端发出请求,从所述音视频文件的开始处顺序下载数据;
[0041] 步骤S302,客户端在下载并解析完所述的第一索引bfhd atom后,停止下载后面的数据;
[0042] 步骤S303,客户端根据第一索引bfhd atom中的索引信息,找到音视频文件中的第一个第二索引sbix atom在音视频文件中的偏移量;
[0043] 步骤S304,客户端重新向服务器端发出请求,并指示服务器忽略从当前位置(即bfhd atom在文件头中的位置)到音视频文件头的尾部的数据,而直接从第一个第二索引sbix atom开始处下载数据;
[0044] 步骤S305,客户端解析下载的数据,当解析到本次下载已经完成了第一个第二索引sbix atom的下载时,解析该第二索引sbix atom的信息得到对应的音视频分段中每个sample的播放信息;
[0045] 步骤S306,客户端根据所述sample的播放信息从服务器端下载对应的sample,并将下载的sample提交到播放器播放。
[0046] 其中,步骤S306中在播放时按步骤S305的方式继续下载后续的第二索引sbix atom及其中记录的播放信息对应的sample,直至所有sample下载完成。这样实现了边下边播的功能,保证了流畅播放。
[0047] 其中,在播放过程中,若播放器接收到用户拖动或者点击播放进度条的消息时,播放器重新定位到拖动点对应的关键帧处,而bfhd atom和sbix atom提供了播放时间到视频关键帧文件偏移量的映射方法。
[0048] 由以上步骤可看出,因为不需要下载moov atom中的原本的索引信息,而单个sbix atom数据量远远小于moov atom,所以减少了播放前下载所需的数据量。
[0049] 由于添加了bfhd atom和sbix atom的mp4文件的结构仍然符合ISO/IEC14496-14标准的规定,所以,对于不能够识别并支持本格式中的bfhd atom和sbix atom的播放器,仍然可以使用原moov atom中的信息,解析本mp4文件进行播放。
[0050] 由于文件中的sample是严格按照播放时间顺序排列的,所以客户端下载sample的顺序,就是后面需要播放的sample的顺序,所以,简化了客户端服务器端的交互,提高了服务器端文件磁盘读写的效率。
[0051] 由于每个sbix atom都与其对应的sample分段顺序存储在一起,所以开始播放之后,只需要顺序下载文件上的数据,中间不需要跳转。
[0052] 用户拖动或者点击播放进度条会导致播放器重新定位到拖动点对应的关键帧处,而bfhd atom和sbix atom提供了播放时间到视频关键帧文件偏移量的映射方法,方便播放器的重定位实现。对于固定帧率的mp4文件,播放点对应的时间乘以帧率,可计算得到该时间点对应的帧数。在bfhd atom中,记录了每一个sbix atom开始的帧号,由此可以得到该帧具体属于哪一个sbix atom。因为每个sbix atom中的第一帧都是关键帧。所以该sbix atom中的第一帧的文件偏移量就是最终需要的关键帧的文件偏移量。
[0053] 下面以例子来说明本发明的有益效果。
[0054] 仍然以播放时长1小时的mp4文件做例子来对比,其bfhd atom大小约为32~64k bytes,其第一个sbix atom大小约为3k bytes,用户仍通过1Mb/s的adsl下载数据,那么最好的情况这部分的数据下载约需要(32+3)×8/1000=0.28秒,最差约需要(64+3)×8/1000=0.53秒,比起之前所述12~16秒,时间大大缩短。
[0055] 本发明的编码方法还广泛用于RMVB、AVI、WMV及MPEG等常见的音视频文件。
[0056] 以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。