发明内容
本发明要解决的主要技术问题是,提供一种可以定位无索引AVI文件的播放位置的方法及装置。
根据本发明的一个方面,提供一种定位无索引AVI文件的播放位置的方法,包括:分析步骤,对获取的包含连续数据块的视音频数据流按预定数目划分区 间,每个区间包括预定数目个连续的数据块,找出每个区间内具有最大数据量的数据块,将该具有最大数据量的数据块作为其对应区间的关键帧起始数据块;索引步骤,根据所有区间的关键帧起始数据块重建索引;定位步骤,根据外部定位控制数据并结合重建后的索引定位AVI文件的播放位置,输出定位到的播放位置。
所述找出每个区间内具有最大数据量的数据块的过程包括:将该区间内的第一个数据块的数据量作为最大值变量;遍历该区间内的所有数据块,将所述第一个数据块之后的每一个数据块的数据量和所述最大值变量进行比较,如果某个数据块的数据量比所述最大值变量还大,则将该某个数据块的数据量作为最大值变量;遍历结束后得到的最大值变量为最大数据量,与该最大数据量对应的数据块为具有最大数据量的数据块。
所述外部定位控制数据包括从用户界面输入的信息。
所述AVI文件包括AVI 1.0格式的视音频文件、AVI 2.0格式的视音频文件。
根据本发明的另一个方面,提供一种定位无索引AVI文件的播放位置的装置,包括:分析单元,用于对获取的包含连续数据块的视音频数据流按预定数目划分区间,每个区间包括预定数目个连续的数据块,找出每个区间内具有最大数据量的数据块,将该具有最大数据量的数据块作为其对应区间的关键帧起始数据块;索引单元,用于根据所述分析单元输出的所有区间的关键帧起始数据块重建索引;定位单元,用于根据外部定位控制数据并结合所述索引单元重建后的索引定位AVI文件的播放位置,输出定位到的播放位置。
所述AVI文件包括AVI 1.0格式的视音频文件、AVI 2.0格式的视音频文件。
根据本发明的又一个方面,提供一种用于播放无索引AVI文件的播放器,包括用于获取AVI文件的文件读取模块、用于将AVI文件分离为视频数据和音频数据的分离模块、用于对视频数据和音频数据解码的解码模块,所述分离模块包括:分析单元,用于对获取的包含连续数据块的视音频数据流按预定数目划分区间,每个区间包括预定数目个连续的数据块,找出每个区间内具有最大数据量的数据块,将该具有最大数据量的数据块作为其对应区间的关键帧起始数据块;索引单元,用于根据所述分析单元输出的所有区间的关键帧起始数据块重建索引;定位单元,用于根据外部定位控制数据并结合所述索引单元重建后的索引定位AVI文件的播放位置;分离单元,用于从所述定位单元定位到的播放位置将AVI文件分离为视频数据和音频数据并输出到所述解码模块。
所述AVI文件包括AVI 1.0格式的视音频文件、AVI 2.0格式的视音频文件。
本发明的有益效果是:通过划分区间并找出该区间的数据量最大的数据块,该数据量最大的数据块一般即为关键帧的起始数据块,这样识别出来的关键帧的起始数据块的准确度较高,从而可以很大程度上解决播放过程中存在的画面异常或反应慢的问题。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。
本发明实施例的设计思想是:根据实验分析统计得知视频文件的关键帧的起始数据块的数据量通常比其他数据块大得多,因此,对于无索引AVI文件,本发明实施例不必像现有技术那样把每个数据块都当作关键帧的起始数据块,而是通过划分区间并找出该区间的数据量最大的数据块,该数据量最大的数据块一般即为关键帧的起始数据块,这样识别出来的关键帧的起始数据块的准确度相比于现有方法的较高,从而可以很大程度上解决现有技术的不足引起的如画面出现异常或响应比较慢的播放问题。
如图1所示为本发明实施例提供的用于播放无索引AVI文件的播放器,包括:文件读取模块120、分离模块140、解码模块160。文件读取模块120用于读取数据通讯接口获取的视音频文件,即获取AVI文件;分离模块140用于将视音频文件分离为音频数据和视频数据;解码模块160用于对音频数据和视频数据进行解码。应理解,播放器中还包括对解码后的音频数据和视频数据进行播放的播放模块以及如对音频或视频进行渲染处理的模块。一种实施例中,如图2所示,文件读取模块读取数据通讯接口获取视音频文件,分离模块将视音频文件分离为音频文件和视频数据;音频数据经过音频解码模块、音频渲染模块后由音频播放装置进行播放,而视频数据经过视频解码模块、视频渲染模块后通过播放接口进行播放;播放过程中可受播放控制器控制播放的进度等。
图1所示的播放器中,分离模块140包括:分析单元141、索引单元143、定位单元145和分离单元147。分析单元141用于对获取的包含连续数据块的视音频 数据流按预定数目划分区间,每个区间包括预定数目个连续的数据块,找出每个区间内具有最大数据量的数据块,将该具有最大数据量的数据块作为其对应区间的关键帧起始数据块;索引单元143用于根据分析单元141输出的所有区间的关键帧起始数据块重建索引;定位单元145用于根据外部定位控制数据并结合索引单元143重建后的索引定位AVI文件的播放位置;分离单元147用于从定位单元145定位到的播放位置将AVI文件分离为视频数据和音频数据并输出。可以理解,实施例中,当用户有定位需求时,分离模块负责定位功能,由分析单元从文件读取模块获取到视音频文件的全部数据,并对其进行分析以重建索引。
基于上述播放器,本发明实施例提供了一种定位无索引AVI文件的播放位置的方法,如图3所示,包括:
分析步骤S310,对获取的包含连续数据块的视音频数据流按预定数目划分区间,每个区间包括预定数目个连续的数据块,找出每个区间内具有最大数据量的数据块,将该具有最大数据量的数据块作为其对应区间的关键帧起始数据块;
这里,找出每个区间内具有最大数据量的数据块的算法可以采用如下算法实现:首先,将该区间内的第一个数据块的数据量作为最大值变量;然后,遍历该区间内的所有数据块,将第一个数据块之后的每一个数据块的数据量和最大值变量进行比较,如果某个数据块的数据量比最大值变量还大,则将该某个数据块的数据量作为最大值变量;最后,遍历结束后得到的最大值变量为最大数据量,与该最大数据量对应的数据块为具有最大数据量的数据块。
索引步骤S330,根据所有区间的关键帧的起始数据块重建索引;
这里,重建索引可采用本领域关于重建索引的现有方法实现,例如,根据得到关键帧的起始数据块,记录各个数据块的内容(如音频、视频)、块的大小及位置等,将这些信息作为索引。
定位步骤S350,根据外部定位控制数据并结合重建后的索引定位AVI文件的播放位置,输出定位到的播放位置。
这里,外部定位控制数据包括从用户界面输入的信息,例如用户拖动播放进度条时传入播放器的对应的时间点等。定位的过程可以采用本领域关于定位的现有方法,例如,已知视频的帧率为每秒25帧,若外部输入的信息为10秒,结合重建后的索引可以很精确地定位到相应的位置。可以理解,这样精确定位后再进行音视频数据解码播放,可以很大程度上避免画面异常及反应迟缓情况的出现,提升了用户观赏体验。
基于上述定位无索引AVI文件的播放位置的方法,本发明实施例还提供了一种定位无索引AVI文件的播放位置的装置,包括:分析单元、索引单元、定位单元;其中各单元的功能与前述播放器中分离模块中涉及的各单元相对应,此处不在重赘。
可见,本发明实施例可识别无索引AVI文件视频帧中的大部分关键帧的起始数据块,这样,在为无索引AVI文件重建索引时,即可不必将所有数据块都视为关键帧的起始块。由于识别出来的关键帧的起始数据块的准确度较高,从而可以很大程度上解决现有技术的不足引起的播放问题。
在本发明实施例的定位过程中,分析单元选择对预定数量(例如200个,但不限于此)的连续个数据块做区间分析,找出该区间内的关键帧(I帧)的起始数据块。实验分析得知视频文件的关键帧起始数据块的数据量通常比其他非关键帧大得多,因此找出区间内最大的数据块一般即为关键帧的起始数据块,关键帧起始数据块的识别可以通过设置比较的算法来实现(具体如前述)。
找到关键帧的起始数据块之后即在其索引中表现出来。因此定位单元可以从索引单元重建的索引中更为准确地识别出关键帧的起始数据块,并根据从用户界面输入的外部定位控制数据更加准确高效地进行播放定位,很大程度避免了画面异常及反应迟缓情况的出现,提升了用户观赏体验。
准确定位之后,分离单元从定位到的播放位置开始进行音视频分离提供给后续的解码模块处理进而播放文件。
本发明实施例的播放器、以及定位无索引AVI文件的播放位置的方法及装置适用于AVI 1.0及AVI 2.0格式的视频文件。
本发明实施例的方法可较为准确地识别关键帧的起始数据块,从而准确定位,很大程度避免了无索引AVI文件播放定位后可能出现的画面异常或响应缓慢的情形。
上述实施例只是本发明的举例,尽管为说明目的公开了本发明的最佳实施例和附图,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容。