5](I)查找与视频标识对应的视频索引文件;
[0086](2)在视频索引文件中查找视频播放时间信息对应的时间戳,将时间戳对应的视频帧的存储位置信息作为用户欲播放视频的存储位置。
[0087]从步骤(I)至步骤(2)的描述可以看出,在本实施例中,由于视频索引文件中存储有各个视频帧的时间戳,所以可以在视频索引文件中查找视频播放时间信息对应的时间戳,并将时间戳对应的视频帧的存储位置信息作为用户欲播放视频的存储位置,从而可以通过视频播放时间信息确定用户欲播放视频的存储位置,使得视频存储系统可以根据视频播放时间信息向用户返回欲播放视频,使得用户使用的客户端可以从视频播放时间信息对应的视频帧开始播放视频,从而可以根据用户想要观看的时间开始播放视频内容。
[0088]考虑到相关的视频播放技术中,用户输入的视频播放时间信息由于可以是视频播放时长中的任意时间点,而视频在播放时的视频流中的视频帧I帧、P帧或B帧是以IBPBPBP……IBPBPBP……这样的格式来进行传输的,而在视频索引文件中只存储有I帧的时间戳和存储位置信息,所以视频索引文件中存储的各个I帧的时间戳之间会存在几秒的间隔,这会导致用户输入的视频播放时间信息与视频索引文件中存储的I帧的时间戳之间出现不对应的情况,这可能会使视频存储系统向用户返回的视频从用户输入的视频播放时间信息后面的时间点对应的视频帧开始播放,造成用户不能从想要观看的时间点开始观看视频的问题,降低了用户观看视频的体验。在本实施例的上述步骤(2)中,即在视频索引文件中查找视频播放时间信息对应的时间戳,确定将时间戳对应的视频帧的存储位置信息作为用户欲播放视频的存储位置的步骤,进一步包括如下步骤(2-1)至(2-3):
[0089](2-1)判断视频索引文件中各个视频帧的时间戳是否与视频播放时间信息相同,如果是,则执行步骤(2-2);如果否,则执行步骤(2-3);
[0090](2-2)获取时间戳与视频播放时间信息相同的视频帧的存储位置信息,作为用户欲播放视频的存储位置;
[0091](2-3)从比视频播放时间信息小的时间戳对应的视频帧的存储位置信息中,获取时间戳大小与视频播放时间信息大小最接近的视频帧的存储位置信息,作为用户欲播放视频的存储位置。
[0092]在步骤(2-1)中,由于时间戳是整型数据,而用户输入的视频播放时间信息只是一个视频播放的时间点,所以会在进行时间戳和视频播放时间信息的对比之前,将视频播放时间信息转换成时间戳一样长度的整型数据,然后再判断各个视频帧的时间戳是否与视频播放时间信息相同。
[0093]在上述步骤(2-3)中,从比视频播放时间信息小的时间戳对应的视频帧的存储位置信息中,获取时间戳大小与视频播放时间信息大小最接近的视频帧的存储位置信息的过程包括步骤(2-31)至(2-33):
[0094](2-31)获取视频索引文件中比视频播放时间信息小的每个时间戳;
[0095](2-32)计算视频播放时间信息与每个时间戳的差值,并确定与视频播放时间信息差值最小的时间戮;
[0096](2-33)获取与视频播放时间信息差值最小的时间戳对应的视频帧的存储位置信息。
[0097]在步骤(2-32)中,可以采用现有的任何数值比对的方式确定与视频播放时间信息差值最小的时间戳,这里不再一一赘述。
[0098]当然,除了上面描述的步骤(2-31)至(2-33)外,还可以使用现有的任何处理方式,获取时间戳大小与视频播放时间信息大小最接近的视频帧的存储位置信息,这里不再
--赘述。
[0099]通过以下实例作进一步描述:
[0100]比如:用户输入的视频播放时间信息是58秒,就是说用户想要从视频播放时间是
58秒的位置开始播放视频,但在视频索引文件中只存在O秒、4秒、8秒......56秒、60秒等时间戳对应的I帧的存储位置,那么通过比对就可以确定时间是56秒的时间戳是与视频播放时间信息大小最接近的时间戳,所以确定时间戳为56秒的视频帧的存储位置信息作为用户欲播放视频的存储位置。使得视频存储系统向用户返回的视频从视频的第56秒开始播出。使得用户无需等待很长时间,就可以从58秒开始观看视频。
[0101]通过上述步骤(2-1)至(2-3)的描述,从比视频播放时间信息小的时间戳对应的视频帧的存储位置信息中,获取时间戳大小与视频播放时间信息大小最接近的视频帧的存储位置信息,保证了视频存储系统向用户返回的视频可以从用户输入的视频播放时间信息开始播放,使得用户能从想要观看的时间点开始观看视频,提高了用户观看视频的体验。
[0102]实施例2
[0103]图4所示的视频搜索方法的具体流程图,该方法以从视频存储系统侧描述为例进行说明,包括以下步骤:
[0104]步骤400的内容与实施例1中步骤200描述的内容相同,所以这里不再赘述。
[0105]步骤402、查找与视频标识对应的视频索引文件。
[0106]步骤404、判断视频索引文件中各个视频帧的时间戳是否与视频播放时间信息相同,如果是,则执行步骤406 ;如果否,则执行步骤408 ;
[0107]步骤406、获取时间戳与视频播放时间信息相同的视频帧的存储位置信息,作为用户欲播放视频的存储位置,跳转执行步骤410 ;
[0108]步骤408、从比视频播放时间信息小的时间戳对应的视频帧的存储位置信息中,获取时间戳大小与视频播放时间信息大小最接近的视频帧的存储位置信息,作为用户欲播放视频的存储位置。
[0109]步骤410和步骤412的内容与实施例1中步骤204和步骤206描述的内容相同,所以这里不再赘述。
[0110]参见图5,本实施例还提出了一种视频搜索方法中使用的视频索引文件的结构示意图,同一视频的多个文件(如图中的文件块1、..文件块K、....、文件块N)称为一个文件组。每一个文件组存在两个索引文件,索引文件记录了每一个I帧在文件组中的存储位置:
[0111]其中,I帧序列号,占4字节;时间戳,占4字节;文件索引标识,表示该I帧所存在的文件组内的文件索引,即该I帧存储在文件组内的第几个文件块中;偏移位置,表示该I帧所存在的上述文件块中的位置,该位置为相对文件块起始位置的索引。
[0112]视频存储时,先找到跟存储视频相对应的文件组,对于首次存储,先从该文件组的首文件开始存储。首文件存满后,存相邻的下一文件。依次类推,直至存满文件组内全部文件。存储过程中,对于每一个I帧,都在索引文件IndexO中记录一条索引。
[0113]当需要播放视频时,客户端提供要访问视频的标识和时间段。接到请求时,从索引文件中查找相应的I帧。由于索引中记录了视频I帧存在的文件和偏移,所以可以直接访问该文件的偏移位置,读取视频流,检索效率大大提高。由于组内文件都是事先分配空间,且空间连续,提高了磁盘1速度。另外,存储空间循环利用,消除了存储空间过度占用影响系统运行的风险。
[0114]从视频索引文件的结构中可以看出本实施例提出的视频搜索方法具有如下特占.V.
[0115]1、视频流传输过程中都是以数字化形式来进行,在数字编码传输过程中有关键帧的概念,我们一般的视频流是以IBPBPBP……IBPBPBP……这样的格式来进行传输,其中的I帧就是常说的关键帧,只有这样的关键帧存在,在其后面的B帧和P帧才能够进行解码显不O
[0116]2、在的这个存储和回访过程中,采用的是一种(一级索引,三级定位的)文件存储和查询方式。
[0117]3、将视频分为两类文件进行存储,其中的一类为索引文件,另外一类是存储文件,其中存储文件是存储视频流帧数据,索引文件存储的则是I帧的相关信息。比如在存储过程中,过当来一帧I帧数据,在我们的索引文件中先记录下当前I帧的序列号以及I帧的时间戳,并且同时记录下这个I帧存储在了哪一个文件块的文件索引标识以及在这个文件块中的偏移量。
[0118]4、在查询回放过程中,通过查询条件,确定我们需要播放的视频的的开始播放时间,然后将开始播放时间转化为一个标准时间数字与我们相应通道的索引文件中所存储的时间戳相比较,查找到距离最近的I帧,从而得到了这个I帧对应的文件索引标识和偏移地址;当播放视频的时候,客户端的视频播放器可以直接从指定的文件块中的偏移位置开始播放。