一种视频播放方法、装置、电子设备及存储介质与流程

文档序号:21362407发布日期:2020-07-04 04:36阅读:192来源:国知局
一种视频播放方法、装置、电子设备及存储介质与流程

本发明涉及多媒体播放技术领域,尤其涉及一种视频播放方法、装置、电子设备及存储介质。



背景技术:

现有技术中,视频正放时,其过程如图1所示,即从视频文件或网络中获取码流,将获取到的码流放入到解码前缓冲区,解码器从解码前缓冲区获取码流进行解码,将解码出的图像放入到播放前缓冲区,然后由定时器根据帧率或者时间戳,将解码出的图像在显示器上进行播放。

而视频倒放时,其过程如图2所示,即从视频文件或网络中重新获取倒放码流,并将获取到的倒放码流放入到解码前缓冲区,解码器从解码前缓冲区获取倒放码流进行解码,将解码出的图像放入到解码后缓冲区,对解码后缓冲区的一组gop(groupofpictures,画面组)进行翻转后,将翻转后的图像放入到播放前缓冲区,然后由定时器根据帧率或者时间戳,将翻转后的图像在显示器上进行播放。

由于现有技术中缓冲区进行缓冲时是单向的,所以当正放切换为倒放时,需要将正放码流清空,并重新缓冲倒放码流,而当倒放切换为正放时,也需要将倒放码流清空,并重新缓冲正放码流,然后再进行解码播放,消耗时间较长。如果当用户频繁切换视频的播放方向时,则会导致用户体验较差。



技术实现要素:

本发明提供了一种视频播放方法、装置、电子设备及存储介质,用于解决现有技术中用户频繁切换视频的播放方向时,用户体验较差的技术问题。

为克服上述技术问题,依据本发明的一个方面,提供了一种视频播放方法,所述方法包括:

根据接收到的视频播放指令,确定当前的播放模式,其中,所述播放模式包括视频正放模式和视频倒放模式;

根据所述播放模式,从第一播放前缓冲区和第二播放前缓冲区中确定目标播放前缓冲区;

判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像;

如果是,则根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放;

将已播放图像存储到另一播放前缓冲区中。

在本发明中,分别设置有与视频正放模式和视频倒放模式对应的第一播放前缓冲区和第二播放前缓冲区,当确定出与视频播放指令对应的播放模式后,可进一步确定出与该播放模式对应的目标播放前缓冲区,当判断出目标播放前缓冲区存储有与该播放模式对应的待播放图像后,可直接按照该播放模式对应的播放顺序对待播放图像进行播放,并将已播放图像存储到另一播放前缓冲区中。因此在本发明中通过第一播放前缓冲区和第二播放前缓冲区可实现对待播放图像和已播放图像进行双向缓冲,当接收到视频播放指令后,可以将其中一个播放前缓冲区作为目标播放前缓冲区,并直接播放目标播放前缓冲区中的图像,即使用户数频换切换视频播放方向,也无需重新缓冲对应码流,缩短了缓冲时间,提高了用户体验。

具体地,所述判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像包括:

根据所述播放指令,确定视频播放的初始时间点;

根据所述目标播放前缓冲区中每帧图像的时间戳,判断所述目标播放前缓冲区中是否存在时间戳与所述初始时间点对应的图像;

如果是,则根据所述目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像。

由于在确定目标播放前缓冲区之后,需要判断目标播放前缓冲区中是否存储有待播放图像,若目标播放前缓冲区中未存储有待播放图像,则需要缓冲对应图像,而若目标播放前缓冲区中存储有待播放图像,则直接播放目标播放前缓冲区中已存储的待播放图像即可,以达到缩短缓冲时间的目的。

具体地,所述根据所述目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像包括:

当所述播放模式为视频正放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳大于等于所述初始时间点的图像确定为所述待播放图像;

当所述播放模式为视频倒放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳小于等于所述初始时间点的图像确定为所述待播放图像。

由于播放模式包括视频正放模式和视频倒放模式,因此当播放模式为视频正放模式时,则将时间戳在初始时间点之后的图像确定为待播放图像,当播放模式为视频倒放模式时,则将时间戳在初始时间点之前的图像确定为待播放图像,以实现按照播放模式对应的播放顺序进行播放。

具体地,所述方法还包括:

判断所述目标播放前缓冲区中所存储的待播放图像的帧数是否小于第一预设阈值;

如果是,则根据所述播放模式,从第一解码前缓冲区和第二解码前缓冲区中确定目标解码前缓冲区;

从所述目标解码前缓冲区获取待播放视频帧,并对获取到的待播放视频帧进行解码;

将解码后获取的图像存储于所述目标播放前缓冲区中。

由于每播放完一帧图像后,该帧图像就会被从目标播放前缓冲区中的存储地址中清除,被存储到另一播放前缓冲区中,所以随着目标播放前缓冲区中的待播放图像不断减少,为保证视频能够持续播放,则可以预选设置目标播放前缓冲区的第一预设阈值,也就是说当目标播放前缓冲区中所存储的待播放图像的帧数小于第一预设阈值时,则自动从第一解码前缓冲区和第二解码前缓冲区中确定目标解码前缓冲区,并从目标解码前缓冲区中获取待播放视频帧,然后对其进行解码,并将解码后获取的图像存储到目标播放前缓冲区中。

具体地,当所述播放模式为视频倒放模式时,所述将解码后获取的图像存储于所述目标解码前缓冲区中包括:

对解码后获取的图像以一组gop为单位进行翻转,并将翻转后的图像存储于所述目标播放前缓冲区中。

当播放模式为视频倒放模式时,从目标解码前缓冲区中获取待播放视频帧为正序编码,所以解码后获取的待播放图像也为正序编码,因此通过将待播放图像以一组gop为单位进行翻转,可实现将每组gop中每帧图像进行逆序存储,实现视频倒放,同时还能防止i帧缺失,无法实现视频倒放。

具体地,所述根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放之后,所述方法还包括:

将已播放视频帧存储到另一解码前缓冲区中。

在本发明中通过分别设置与视频正放模式和视频倒放模式对应的第一解码前缓冲区和第二解码前缓冲区,可实现对待播放视频帧和已播放视频帧进行双向缓冲,当接收到视频播放指令后,也无需重新缓冲对应视频帧,缩短了缓冲时间,提高了用户体验。

具体地,所述将已播放视频帧存储到另一解码前缓冲区中之后,所述方法还包括:

判断所述另一解码前缓冲区中所存储的已播放视频帧的帧数是否大于第二预设阈值;

如果是,则根据每帧已播放视频帧的存储时间,确定存储时间较早的第一数量的目标视频帧,并删除所述目标视频帧。

为保证切换视频播放方向时,使得播放较为流畅,则需要使另一解码前缓冲区存储的已播放视频帧最新播放完的视频帧,因此则需要对存储时间较早的已播放视频帧进行删除,用于为最新播放完的视频帧提供存储空间。

具体地,所述将已播放图像存储到另一播放前缓冲区中之后,所述方法还包括:

判断所述另一播放前缓冲区中所存储的已播放图像的帧数是否大于第三预设阈值;

如果是,则根据每帧已播放图像的存储时间,确定存储时间较早的第二数量的目标图像,并删除所述目标图像。

同样的,为保证切换视频播放方向时,使得播放流程较为流畅,也需要使另一播放前缓冲区存储的已播放图像为最新播放完的图像,因此也需要对存储时间较早的已播放图像进行删除,用于为最新播放完的图像提供存储空间。

依据本发明的另一个方面,本发明还提供了一种视频播放装置,所述装置包括:

第一确定模块,用于根据接收到的视频播放指令,确定当前的播放模式,其中,所述播放模式包括视频正放模式和视频倒放模式;

第二确定模块,用于根据所述播放模式,从第一播放前缓冲区和第二播放前缓冲区中确定目标播放前缓冲区;

第一判断模块,用于判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像;

播放模块,用于如果所述第一判断模块的判断结果为是,则根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放;

第一存储模块,用于将已播放图像存储到另一播放前缓冲区中。

具体地,所述第一判断模块包括:

第一确定单元,用于根据所述播放指令,确定视频播放的初始时间点;

判断单元,用于根据所述目标播放前缓冲区中每帧图像的时间戳,判断所述目标播放前缓冲区中是否存在时间戳与所述初始时间点对应的图像;

第二确定单元,用于如果所述判断单元的判断结果为是,则根据所述目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像。

具体地,所述第二确定单元,具体用于:

当所述播放模式为视频正放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳大于等于所述初始时间点的图像确定为所述待播放图像;

当所述播放模式为视频倒放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳小于等于所述初始时间点的图像确定为所述待播放图像。

具体地,所述装置还包括:

第二判断模块,用于判断所述目标播放前缓冲区中所存储的待播放图像的帧数是否小于第一预设阈值;

第三确定模块,用于如果所述第二判断模块的判断结果为是,则根据所述播放模式,从第一解码前缓冲区和第二解码前缓冲区中确定目标解码前缓冲区;

解码模块,用于从所述目标解码前缓冲区获取待播放视频帧,并对获取到的待播放视频帧进行解码;

第二存储模块,用于将解码后获取的图像存储于所述目标播放前缓冲区中。

具体地,当所述播放模式为视频倒放模式时,所述第二存储模块,具体用于对解码后获取的图像以一组gop为单位进行翻转,并将翻转后的图像存储于所述目标播放前缓冲区中。

具体地,所述装置还包括:

第三存储模块,用于在根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放之后,将已播放视频帧存储到另一解码前缓冲区中。

具体地,所述装置还包括:

第三判断模块,用于在将已播放视频帧存储到另一解码前缓冲区中之后,判断所述另一解码前缓冲区中所存储的已播放视频帧的帧数是否大于第二预设阈值;

第一删除模块,用于如果所述第三判断模块的判断结果为是,则根据每帧已播放视频帧的存储时间,确定存储时间较早的第一数量的目标视频帧,并删除所述目标视频帧。

具体地,所述装置还包括:

第四判断模块,用于在将已播放图像存储到另一播放前缓冲区中之后,判断所述另一播放前缓冲区中所存储的已播放图像的帧数是否大于第三预设阈值;

第二删除模块,用于如果所述第四判断模块的判断结果为是,则根据每帧已播放图像的存储时间,确定存储时间较早的第二数量的目标图像,并删除所述目标图像。

依据本发明的另一个方面,还提供了一种电子设备,所述电子设备包括:包括存储器和处理器;

所述处理器,用于读取所述存储器中的程序,执行上述视频播放方法中的步骤。

依据本发明的另一个方面,还提供了一种计算机可读存储介质,其存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行上述视频播放方法中的步骤。

本发明的有益效果如下:

本发明提供了一种视频方法及装置,该方法包括:根据接收到的视频播放指令,确定当前的播放模式,其中,所述播放模式包括视频正放模式和视频倒放模式;根据所述播放模式,从第一播放前缓冲区和第二播放前缓冲区中确定目标播放前缓冲区;判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像;如果是,则根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放;将已播放图像存储到另一播放前缓冲区中。在本发明中,通过分别设置有与视频正放模式和视频倒放模式对应的第一播放前缓冲区和第二播放前缓冲区,当接收到视频播放指令后,可以将其中一个播放前缓冲区作为目标播放前缓冲区,并直接播放目标播放前缓冲区中的图像,然后将已播放图像存储到另一播放前缓冲区中,因此可实现对待播放图像和已播放图像进行双向缓冲,使得用户在频繁换切换视频播放方向时,也无需重新缓冲对应码流,大大缩短了缓冲时间,提高了用户体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中视频正放的流控示意图;

图2为现有技术中视频倒放的流控示意图;

图3为本发明实施例中提供的视频播放方法的流程图;

图4为本发明实施例中提供的请求获取待播放图像的流程图;

图5为本发明实施例中提供的视频正放的流控示意图;

图6为本发明实施例中提供的视频倒放的流控示意图;

图7为本发明实施例中提供的视频播放方法的设计流程图;

图8为本发明实施例中提供的视频播放装置的结构框图;

图9为本发明实施例中提供的第一判断模块的结构框图;

图10为本发明实施例中提供的一种电子设备。

具体实施方式

由于现有技术中缓冲区进行缓冲时是单向的,且缓冲区当达到预先设置的缓冲最大值时,因此由视频正放切换为视频倒放,或由视频倒放切换为视频正放时,需要重新缓冲与当前的播放模式对应的码流,并对该码流进行解码获取图像,消耗时间较长。因此现有技术中存在频繁切换视频的播放方向,而导致的用户体验较差的问题。

为克服上述问题,本发明的实施例提供了一种视频播放方法、装置、电子设备及存储介质,该方法包括:根据接收到的视频播放指令,确定当前的播放模式,其中,所述播放模式包括视频正放模式和视频倒放模式;根据所述播放模式,从第一播放前缓冲区和第二播放前缓冲区中确定目标播放前缓冲区;判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像;如果是,则根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放;将已播放图像存储到另一播放前缓冲区中。

由上述可知,在本发明实施例中,通过分别设置有与视频正放模式和视频倒放模式对应的第一播放前缓冲区和第二播放前缓冲区,当接收到视频播放指令后,可以将其中一个播放前缓冲区作为目标播放前缓冲区,并直接播放目标播放前缓冲区中的图像,然后将已播放图像存储到另一播放前缓冲区中,因此可实现对待播放图像和已播放图像进行双向缓冲,使得用户在频繁换切换视频播放方向时,也无需重新缓冲对应码流,大大缩短了缓冲时间,提高了用户体验。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一:

图3为本发明实施例中提供的视频播放方法的流程示意图,该方法包括:

步骤s301:根据接收到的视频播放指令,确定当前的播放模式。

由于在本发明实施例中,视频播放指令可以为视频正放指令,也可以是视频倒放指令,那么对应的,所述播放模式可以为视频正放模式,也可以是视频倒放模式。

步骤s302:根据所述播放模式,从第一播放前缓冲区和第二播放前缓冲区中确定目标播放前缓冲区。

在本发明实施例中,第一播放前缓冲区可与视频正放模式相对应,第二播放前缓冲区可与视频倒放模式相对应,那么对应的,在本发明实施例中,第一播放前缓冲区可用于存储待播放图像,第二播放前缓冲区可用于存储已播放图像,因此本发明实施例中通过分别设置与视频正放模式和视频倒放模式对应的第一播放前缓冲区和第二播放前缓冲区,实现对待播放图像和已播放图像进行双向缓冲,并在确定当前的播放模式为视频正放模式时,将第一播放前缓冲区确定为目标播放前缓冲区,或者在确定当前的播放模式为视频倒放模式时,将第二播放前缓冲区确定为目标播放前缓冲区。

其中,在本发明实施例中,第二播放前缓冲区也可与视频正放模式相对应,第一播放前缓冲区也可与视频倒放模式相对应,因此对应的,在本发明实施例中,第二播放前缓冲区则用于存储待播放图像,第一播放前缓冲区则用于存储已播放图像。因此需要说明的是,在本发明实施例中,对于视频播放模式与播放前缓冲区之间的对应关系并不进行具体限定,只要能够使得不同视频播放模式分别对应不同的播放前缓冲区即可。

步骤s303:判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像。

也就是说,在确定目标播放前缓冲区之后,需要判断目标播放前缓冲区中是否存储有待播放图像,若目标播放前缓冲区中未存储有待播放图像,则需要根据当前的播放模式缓冲待播放图像,该种情况与现有技术中视频播放方法相同,故在此不再赘述。

若目标播放前缓冲区中存储有待播放图像,则只直接按照该播放模式对应的播放顺序对待播放图像进行播放,即步骤s304。

步骤s304:如果是,则根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放。

以第一播放前缓冲区与视频正放模式相对应,第二播放前缓冲区与视频倒放模式相对应为例,在当前的播放模式为视频正放模式时,则将第一播放前缓冲区确定为目标播放前缓冲区,若第一播放前缓冲区中存储有待播放图像,则通过对第一播放前缓冲区进行正向读取,即可实现视频正放。而当前的播放模式为视频倒放模式时,则将第二播放前缓冲区确定为目标播放前缓冲区,若第二播放前缓冲区中存储有待播放图像,则通过对第二播放前缓冲区进行逆向读取,即可实现视频倒放。

步骤s305:将已播放图像存储到另一播放前缓冲区中。

通过将已播放图像存储到另一播放前缓冲区中,因此可实现对最新播放完的已播放图像进行存储,从而可实现一边按照当前的播放模式对应的播放顺序进行播放,一边对已播放图像进行存储。所以当用户切换视频播放方向时,只需要重新确定目标播放前缓冲区即可,无需重新缓冲对应码流。

因此在本发明中,通过设置第一播放前缓冲区和第二播放前缓冲区,可实现对待播放图像和已播放图像进行双向缓冲,即使用户频繁换切换视频播放方向,也无需重新缓冲对应码流,可大大缩短图像缓冲时间,提高用户体验。

其中,由于在进行播放时,如果是视频正放,则需要对目标播放前缓冲区中的图像进行正向读取,而如果是视频倒放,则需要对目标播放前缓冲区中的图像进行逆向读取,因此无论是视频正放还是视频倒放,其处理逻辑相同,在进行具体实施时,逻辑相较现有技术来说比较统一,可避免因逻辑相差较大而导致视频切换时出现问题。

实施例二:

在上述实施例的基础上,在本发明实施例中,所述判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像包括:

根据所述播放指令,确定视频播放的初始时间点;

根据所述目标播放前缓冲区中每帧图像的时间戳,判断所述目标播放前缓冲区中是否存在时间戳与所述初始时间点对应的图像;

如果是,则根据所述目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像。

也就是说,当接收到视频播放指令后,需根据该视频播放指令确定视频播放的初始时间点,比如整个视频对应的播放时长为10min,如果在第5min时接收到用户发出的视频播放指令,那么则将视频播放的初始时间点确定为第5min,此时需要判断在目标播放前缓冲区中是否存在时间戳与第5min对应的图像,如果存在,则根据目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像。

具体地,根据所述目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像包括:

当所述播放模式为视频正放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳大于等于所述初始时间点的图像确定为所述待播放图像。

仍以上述实施例中,第一播放前缓冲区与视频正放模式相对应,第二播放前缓冲区与视频倒放模式相对应为例,若播放模式为视频正放模式,则对应的目标播放前缓冲区即为第一播放前缓冲区,此时需要对第一播放前缓冲区中预先缓冲的图像进行正向读取,如果第一播放前缓冲区中的预先缓冲的图像对应的时间戳大于等于5min,那么则将时间戳大于等于5min的图像确定为待播放图像。

当所述播放模式为视频倒放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳小于等于所述初始时间点的图像确定为所述待播放图像。

仍以上述实施例中,第一播放前缓冲区与视频正放模式相对应,第二播放前缓冲区与视频倒放模式相对应为例,若播放模式为视频倒放模式,则对应的目标播放前缓冲区即为第二播放前缓冲区,此时需要对第二播放前缓冲区中预先缓冲的图像进行逆向读取,如果第二播放前缓冲区中的预先缓冲的图像对应的时间戳小于等于5min,那么则将时间戳小于等于5min的图像确定为待播放图像。

实施例三:

为保证目标播放前缓冲区中存储的待播放图像能够满足当前播放指令的需求,在上述实施例的基础上,在本发明实施例中,如图4所示,所述方法还包括:

步骤s401:判断所述目标播放前缓冲区中所存储的待播放图像的帧数是否小于第一预设阈值。

步骤s402:如果是,则根据所述播放模式,从第一解码前缓冲区和第二解码前缓冲区中确定目标解码前缓冲区。

步骤s403:从所述目标解码前缓冲区获取待播放视频帧,并对获取到的待播放视频帧进行解码。

步骤s404:将解码后获取的图像存储于所述目标播放前缓冲区中。

由上述实施例可知,每播放完一帧图像后,该帧图像会被从目标播放前缓冲区中的存储地址中清除,被存储到另一播放前缓冲区中,因此目标播放前缓冲区中的待播放图像会不断减少,所以为保证目标播放前缓冲区中的待播放图像能够满足当前播放指令的需求,每播放完一帧图像后,需要判断目标播放前缓冲区中所存储的待播放图像的帧数是否小于第一预设阈值,假如第一预设阈值为50,因此每播放完一帧图像后,需要判断目标播放前缓冲区中所存储的待播放图像的帧数是否小于50,如果目标播放前缓冲区中所存储的待播放图像的帧数小于50,则需要根据当前的播放模式,从第一解码前缓冲区和第二解码前缓冲区中确定目标解码前缓冲区,并从目标解码前缓冲区中请求获取待播放视频帧,然后对获取到的待播放视频帧进行解码,将解码后获取的图像存储到目标播放前缓冲区中。

因此,在本发明实施例中,在视频播放过程中,通过在目标播放前缓冲区中所存储的待播放图像的帧数小于第一预设阈值时,向目标解码前缓冲区中请求获取待播放视频帧,可保证视频能够持续播放。

其中,为进一步实现对待播放视频帧和已播放视频帧进行双向缓冲,在上述实施例的基础上,在本发明实施例中,所述根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放之后,如图4所示,所述方法还包括:

步骤s405:将已播放视频帧存储到另一解码前缓冲区中。

在本发明实施例中,第一解码前缓冲区可与视频正放模式相对应,第二解码前缓冲区可与视频倒放模式相对应,那么对应的,在本发明实施例中,第一解码前缓冲区可用于存储待播放视频帧,第二解码前缓冲区可用于存储已播放视频帧,因此本发明实施例中通过分别设置与视频正放模式和视频倒放模式对应的第一解码前缓冲区和第二解码前缓冲区,可实现对待播放视频帧和已播放视频帧进行双向缓冲,并在确定当前的播放模式为视频正放模式时,将第一解码前缓冲区确定为目标解码前缓冲区,或者在确定当前的播放模式为视频倒放模式时,将第二解码前缓冲区确定为目标解码前缓冲区。

因此在本发明实施例中,通过分别设置第一解码前缓冲区和第二解码前缓冲区,可实现对待播放视频帧和已播放视频帧进行双向缓冲,即使用户频繁换切换视频播放方向,也无需重新缓冲对应码流,可大大缩短图像缓冲时间,提高用户体验。

其中,在本发明实施例中,第二解码前缓冲区也可与视频正放模式相对应,第一解码前缓冲区也可与视频倒放模式相对应,因此对应的,在本发明实施例中,第二解码前缓冲区则用于存储待播放视频帧,第一解码前缓冲区则用于存储已播放视频帧。因此需要说明的是,在本发明实施例中,对于视频播放模式与解码前缓冲区之间的对应关系并不进行具体限定,只要能够使得不同视频播放模式分别对应不同的解码前缓冲区即可。

具体地,在本发明实施例中,以第一播放前缓冲区与视频正放模式相对应,第二播放前缓冲区与视频倒放模式相对应,第一解码前缓冲区与视频正放模式相对应,第二解码前缓冲区与视频倒放模式相对应为例,当播放模式为视频正放模式时,由于第一解码前缓冲区中的预先存储的视频帧为正序编码,所以通过解码器进行解码后获取的待播放图像也为正序编码,因此可直接将解码后获取的待播放图像存储到第一播放前缓冲区中。

而当所述播放模式为视频倒放模式时,由于从第二解码前缓冲区中的已存储的视频帧为正序编码,而在进行视频播放时,需要对第二播放前缓冲区中的图像进行逆向读取,所以在上述实施例的基础上,在本发明实施例中,所述将解码后获取的图像存储于所述目标解码前缓冲区中包括:

对解码后获取的图像以一组gop为单位进行翻转,并将翻转后的图像存储于所述目标播放前缓冲区中。

也就是说,由于从第二解码前缓冲区中的获取待播放视频帧为正序编码,所以解码后获取的待播放图像也为正序编码,因此为实现视频倒放,需要将待播放图像以一组gop为单位进行翻转,以实现将每组gop中的每帧图像进行逆序存储。

比如第二解码前缓冲区中的待播放视频帧以非全i帧编码方式进行存储,若一组gop中包括的视频帧为i1、p2、p3、p4…p100,对其进行解码后获取的图像对应为图像1、图像2、图像3、图像4…图像100,为实现视频倒放,则应优先存储图像100,然后依次对每帧图像逆序存储。

由于i帧是一个完整的画面,而p帧记录的是相对于i帧的变化,没有i帧,p帧就无法解码,因此在本发明实施例中,通过将待播放图像以一组gop为单位进行翻转,可实现将每组gop中每帧图像进行逆序存储,实现视频倒放,同时还能防止i帧缺失,无法实现视频倒放。

实施例四:

为保证切换视频播放方向时,使得播放流程较为流畅,因此需要使另一播放前缓冲区存储的已播放图像为最新播放完的图像,且另一解码前缓冲区存储的已播放视频帧最新播放完的视频帧,因此在上述实施例的基础上,在发明实施例中,为保证另一解码前缓冲区存储的已播放视频帧为最新播放完的视频帧,所述将已播放视频帧存储到另一解码前缓冲区中之后,所述方法还包括:

判断所述另一解码前缓冲区中所存储的已播放视频帧的帧数是否大于第二预设阈值;

如果是,则根据每帧已播放视频帧的存储时间,确定存储时间较早的第一数量的目标视频帧,并删除所述目标视频帧。

也就是说,每播放完一帧视频帧后,需要判断另一解码前缓冲区中所存储的已播放视频帧的帧数是否大于第二预设阈值,假如预先设置的第二预设阈值为50,第一数量为25,因此每播放完一帧视频帧后,需要判断另一解码前缓冲区中所存储的待播放视频帧的帧数是否大于50,如果此时另一解码前缓冲前缓区中所存储的已播放视频帧的帧数大于50,则需要从另一解码前缓冲区中确定出存储时间较早的25帧已播放视频帧,并将其删除,以用于为最新播放完的已播放视频帧预留存储空间。

进一步地,为保证另一播放前缓冲区存储的已播放图像为最新播放完的图像,所述将已播放图像存储到另一播放前缓冲区中之后,所述方法包括:

判断所述另一播放前缓冲区中所存储的已播放图像的帧数是否大于第三预设阈值;

如果是,则根据每帧已播放图像的存储时间,确定存储时间较早的第二数量的目标图像,并删除所述目标图像。

也就是说,每播放完一帧图像后,需要判断另一播放前缓冲区中所存储的已播放图像的帧数是否大于第三预设阈值,假如预先设置的第三预设阈值为50,第二数量为25,因此每播放完一帧图像后,需要判断另一播放前缓冲区中所存储的待播放图像的帧数是否大于50,如果此时另一播放前缓冲前缓区中所存储的已播放图像的帧数大于50,则需要从另一播放前缓冲区中确定出存储时间较早的25帧已播放图像,并将其删除,以用于为最新播放完的已播放图像预留存储空间。

由于用户进行录像时,如果开始录像的实际时机不为i帧,后续的p帧虽然被保存了下来,却因为缺失i帧而无法播放。而在本发明实施例中,通过设置较为合理的第二预设阈值或第三预设阈值,可以在用户进行录像时,可以从前一组gop的i帧进行连续存储,这样录像就不会丢失前面的内容。而在进行录像播放时,如果加以标识指示出开始播放的p帧,那么整组gop正常解码,但是标识指示的p帧之前并不播放,因此可以完美做到对录像帧进行定位。

实施例五:

在本发明实施例中,将分别结合图5和图6说明视频正放和视频倒放的过程。

其中,由图5和图6可知,解码前缓冲区分别设置了第一解码前缓冲区和第二解码前缓冲区,且播放前缓冲区分别设置了第一播放前缓冲区和第二播放前缓冲区。

具体地,视频正放时,其过程如图5所示,即将第一解码前缓冲区和第一播放前缓冲区分别确定为目标解码前缓冲区和目标播放前缓冲区,然后从第一播放前缓冲区中获取待播放图像,由定时器根据帧率或者时间戳,将解码出的图像在显示器上进行播放,然后将播放完的已播放视频帧及已播放图像分别存储于第二解码前缓冲区和第二解码前缓冲区中。

其中,当第一播放前缓冲区中待播放图像的帧数小于请求阈值(即上述实施例中的第一预设阈值),则自动请求从第一解码前缓冲区中获取待播放视频帧,解码器对获取到的待播放视频帧进行解码,将解码出的图像存储到第一播放前缓冲区,然后由定时器根据帧率或者时间戳,将解码出的图像在显示器上进行播放。而当第一解码前缓冲区中待播放图像的帧数小于请求阈值,则请求从视频文件或网络中获取码流,以保证视频播放流程正常播放。

其中,在播放过程中,当第二解码前缓冲区中已播放视频帧的帧数大于丢弃阈值(即上述实施例中的第二预设阈值),则自动从第二解码前缓冲区中确定出存储时间较早的已播放视频帧,并对其进行删除。当第二播放前缓冲区中已播放图像的帧数大于丢弃阈值(即上述实施例中的第三预设阈值),则从第二播放前缓冲区中确定出存储时间较早的已播放图像,并对其进行删除。

具体地,视频倒放时,其过程如图6所示,即将第二解码前缓冲区和第二播放前缓冲区分别确定为目标解码前缓冲区和目标播放前缓冲区,然后从第二播放前缓冲区中获取待播放图像,由定时器根据帧率或者时间戳,将解码出的图像在显示器上进行播放,然后将播放完的已播放视频帧及已播放图像分别存储于第一解码前缓冲区和第一播放前缓冲区中。

其中,当第二播放前缓冲区中待播放图像的帧数小于请求阈值(即上述实施例中的第一预设阈值),则自动请求从第二解码前缓冲区中获取待播放视频帧,解码器对获取到的待播放视频帧进行解码,将解码出的图像以一个组gop为单位进行翻转后存储到第二播放前缓冲区,然后由定时器根据帧率或者时间戳,将解码出的图像在显示器上进行播放。而当第二解码前缓冲区中待播放图像的帧数小于请求阈值,则请求从视频文件或网络中获取码流,以保证视频播放流程正常播放。

其中,在播放过程中,当第一解码前缓冲区中已播放视频帧的帧数大于丢弃阈值(即上述实施例中的第二预设阈值),则从第一解码前缓冲区中确定出存储时间较早的已播放视频帧,并对其进行删除。当第一播放前缓冲区中已播放图像的帧数大于丢弃阈值(即上述实施例中的第三预设阈值),则从第一播放前缓冲区中确定出存储时间较早的已播放图像,并对其进行删除。

由上述可知,在本发明实施例中,在确定目标播放前缓冲区之后,在按照播放模式对应的播放顺序进行播放时,可一边对已播放图像进行存储,同时还能一边缓冲待播放图像,因此当用户切换视频播放方向时,只需要重新确定目标播放前缓冲区即可,无需重新缓冲对应码流,缩短了缓冲时间,提高了用户体验。

实施例六:

在上述实施例的基础上,在本发明实施例中,其整体设计流程如图7所示。

步骤s701:预先设置播放前缓冲请求阈值和丢弃阈值,以及解码前缓冲请求阈值和丢弃阈值。

步骤s702:由用户设置播放方向,然后按照用户设定播放方向进行播放。

步骤s703:循环判断播放前缓冲播放方向是否达到请求阈值,若没有达到则向上游请求数据;判断播放缓冲播放反方向是否达到丢弃阈值,若达到则将缓冲帧丢弃。

步骤s704:使用相同的方法循环判断解码前缓冲的请求阈值和丢弃阈值,即循环判断解码前缓冲播放方向是否达到请求阈值,如果达到则向上游请求数据;判断解码前缓冲播放反方向是否达到丢弃阈值,如果达到则丢弃对应帧。

步骤s705:定时器如果达到播放条件,播放视频,移动相应的迭代器,更新缓冲状态。

其中,播放前缓冲控制逻辑具体如下:按照当前的播放方向,先判断播放前缓冲区待播放图像的帧数是否小于预设请求阈值,如果小于请求阈值,则向上级(解码前缓冲区)缓冲请求对应的视频帧进行解码;再判断播放相反方向,即另一播放前缓冲区中已播放图像的帧数是否达到丢弃阈值,如果是,将多余图像丢弃。

解码前缓冲控制逻辑具体如下:按照当前的播放方向对应的解码方向,先判断解码方向待播放视频帧的帧数是否小于预设请求阈值,如果小于请求阈值,则向上级缓冲(网络流或者是文件流)请求相应的视频帧;再判断解码相反方向,即另一解码前缓冲区中已播放视频帧的帧数是否达到丢弃阈值,如果是,将多余视频帧丢弃。

因此在本发明实施例中,解码前缓冲和播放前缓冲均为双向缓冲,无论是由正放切换为倒放,还是由倒放切换为正放,都无需重新缓冲码流,可大大缩短缓冲时间,提高用户体验。

实施例七:

依据本发明的另一个方面,本发明还提供了一种视频播放装置,如图8所示,所述装置包括:

第一确定模块801,用于根据接收到的视频播放指令,确定当前的播放模式,其中,所述播放模式包括视频正放模式和视频倒放模式;

第二确定模块802,用于根据所述播放模式,从第一播放前缓冲区和第二播放前缓冲区中确定目标播放前缓冲区;

第一判断模块803,用于判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像;

播放模块804,用于如果所述第一判断模块803的判断结果为是,则根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放;

第一存储模块805,用于将已播放图像存储到另一播放前缓冲区中。

具体地,如图9所示,所述第一判断模块803包括:

第一确定单元8031,用于根据所述播放指令,确定视频播放的初始时间点;

判断单元8032,用于根据所述目标播放前缓冲区中每帧图像的时间戳,判断所述目标播放前缓冲区中是否存在时间戳与所述初始时间点对应的图像;

第二确定单元8033,用于如果所述判断单元的判断结果为是,则根据所述目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像。

具体地,所述第二确定单元8033,具体用于:

当所述播放模式为视频正放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳大于等于所述初始时间点的图像确定为所述待播放图像;

当所述播放模式为视频倒放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳小于等于所述初始时间点的图像确定为所述待播放图像。

具体地,所述装置还包括:

第二判断模块806,用于判断所述目标播放前缓冲区中所存储的待播放图像的帧数是否小于第一预设阈值;

第三确定模块807,用于如果所述第二判断模块806的判断结果为是,则根据所述播放模式,从第一解码前缓冲区和第二解码前缓冲区中确定目标解码前缓冲区;

解码模块808,用于从所述目标解码前缓冲区获取待播放视频帧,并对获取到的待播放视频帧进行解码;

第二存储模块809,用于将解码后获取的图像存储于所述目标播放前缓冲区中。

具体地,当所述播放模式为视频倒放模式时,所述第二存储模块809,具体用于对解码后获取的图像以一组gop为单位进行翻转,并将翻转后的图像存储于所述目标播放前缓冲区中。

具体地,所述装置还包括:

第三存储模块810,用于在根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放之后,将已播放视频帧存储到另一解码前缓冲区中。

具体地,所述装置还包括:

第三判断模块811,用于在将已播放视频帧存储到另一解码前缓冲区中之后,判断所述另一解码前缓冲区中所存储的已播放视频帧的帧数是否大于第二预设阈值;

第一删除模块812,用于如果所述第三判断模块811的判断结果为是,则根据每帧已播放视频帧的存储时间,确定存储时间较早的第一数量的目标视频帧,并删除所述目标视频帧。

具体地,所述装置还包括:

第四判断模块813,用于在将已播放图像存储到另一播放前缓冲区中之后,判断所述另一播放前缓冲区中所存储的已播放图像的帧数是否大于第三预设阈值;

第二删除模块814,用于如果所述第四判断模块814的判断结果为是,则根据每帧已播放图像的存储时间,确定存储时间较早的第二数量的目标图像,并删除所述目标图像。

实施例八:

依据本发明的另一个方面,本发明还提供了一种电子设备,如图10所示,所述电子设备包括:处理器1001和存储器1002;

所述处理器1001,用于执行读取存储器1002中的程序,执行下列过程:

根据接收到的视频播放指令,确定当前的播放模式,其中,所述播放模式包括视频正放模式和视频倒放模式;

根据所述播放模式,从第一播放前缓冲区和第二播放前缓冲区中确定目标播放前缓冲区;

判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像;

如果是,则根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放;

将已播放图像存储到另一播放前缓冲区中。

具体地,所述处理器1001,具体用于根据所述播放指令,确定视频播放的初始时间点;根据所述目标播放前缓冲区中每帧图像的时间戳,判断所述目标播放前缓冲区中是否存在时间戳与所述初始时间点对应的图像;如果是,则根据所述目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像。

具体地,所述处理器1001,具体用于当所述播放模式为视频正放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳大于等于所述初始时间点的图像确定为所述待播放图像;当所述播放模式为视频倒放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳小于等于所述初始时间点的图像确定为所述待播放图像。

具体地,所述处理器1001,还用于判断所述目标播放前缓冲区中所存储的待播放图像的帧数是否小于第一预设阈值;如果是,则根据所述播放模式,从第一解码前缓冲区和第二解码前缓冲区中确定目标解码前缓冲区;从所述目标解码前缓冲区获取待播放视频帧,并对获取到的待播放视频帧进行解码;将解码后获取的图像存储于所述目标播放前缓冲区中。

具体地,所述处理器1001,具体用于当所述播放模式为视频倒放模式时,对解码后获取的图像以一组gop为单位进行翻转,并将翻转后的图像存储于所述目标播放前缓冲区中。

具体地,所述处理器1001,还用于在根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放之后,将已播放视频帧存储到另一解码前缓冲区中。

具体地,所述处理器1001,还用于在将已播放视频帧存储到另一解码前缓冲区中之后,判断所述另一解码前缓冲区中所存储的已播放视频帧的帧数是否大于第二预设阈值;如果是,则根据每帧已播放视频帧的存储时间,确定存储时间较早的第一数量的目标视频帧,并删除所述目标视频帧。

具体地,所述处理器1001,还用于在将已播放图像存储到另一播放前缓冲区中之后,判断所述另一播放前缓冲区中所存储的已播放图像的帧数是否大于第三预设阈值;如果是,则根据每帧已播放图像的存储时间,确定存储时间较早的第二数量的目标图像,并删除所述目标图像。

在图10中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器1001代表的一个或多个处理器和存储器1002代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。处理器1001负责管理总线架构和通常的处理,存储器1002可以存储处理器1001在执行操作时所使用的数据。

可选的,处理器1001可以是cpu(中央处埋器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或cpld(complexprogrammablelogicdevice,复杂可编程逻辑器件)。

实施例九:

依据本发明的另一个方面,本发明还提供了一种存储介质,其存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行以下步骤:

根据接收到的视频播放指令,确定当前的播放模式,其中,所述播放模式包括视频正放模式和视频倒放模式;

根据所述播放模式,从第一播放前缓冲区和第二播放前缓冲区中确定目标播放前缓冲区;

判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像;

如果是,则根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放;

将已播放图像存储到另一播放前缓冲区中。

具体地,所述判断所述目标播放前缓冲区中是否存储有与所述播放模式对应的待播放图像包括:

根据所述播放指令,确定视频播放的初始时间点;

根据所述目标播放前缓冲区中每帧图像的时间戳,判断所述目标播放前缓冲区中是否存在时间戳与所述初始时间点对应的图像;

如果是,则根据所述目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像。

具体地,所述根据所述目标播放前缓冲区中每帧图像的时间戳、初始时间点及所述播放模式对应的播放顺序,确定每个待播放图像包括:

当所述播放模式为视频正放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳大于等于所述初始时间点的图像确定为所述待播放图像;

当所述播放模式为视频倒放模式时,根据所述目标播放前缓冲区中每帧图像的时间戳,将时间戳小于等于所述初始时间点的图像确定为所述待播放图像。

具体地,所述方法还包括:

判断所述目标播放前缓冲区中所存储的待播放图像的帧数是否小于第一预设阈值;

如果是,则根据所述播放模式,从第一解码前缓冲区和第二解码前缓冲区中确定目标解码前缓冲区;

从所述目标解码前缓冲区获取待播放视频帧,并对获取到的待播放视频帧进行解码;

将解码后获取的图像存储于所述目标播放前缓冲区中。

具体地,当所述播放模式为视频倒放模式时,所述将解码后获取的图像存储于所述目标解码前缓冲区中包括:

对解码后获取的图像以一组gop为单位进行翻转,并将翻转后的图像存储于所述目标播放前缓冲区中。

具体地,所述根据所述播放模式,对所述待播放图像按照所述播放模式对应的播放顺序进行播放之后,所述方法还包括:

将已播放视频帧存储到另一解码前缓冲区中。

具体地,所述将已播放视频帧存储到另一解码前缓冲区中之后,所述方法还包括:

判断所述另一解码前缓冲区中所存储的已播放视频帧的帧数是否大于第二预设阈值;

如果是,则根据每帧已播放视频帧的存储时间,确定存储时间较早的第一数量的目标视频帧,并删除所述目标视频帧。

具体地,所述将已播放图像存储到另一播放前缓冲区中之后,所述方法包括:

判断所述另一播放前缓冲区中所存储的已播放图像的帧数是否大于第三预设阈值;

如果是,则根据每帧已播放图像的存储时间,确定存储时间较早的第二数量的目标图像,并删除所述目标图像。

上述实施例中的计算机可读存储介质可以是电子设备中的处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器如软盘、硬盘、磁带、磁光盘(mo)等、光学存储器如cd、dvd、bd、hvd等、以及半导体存储器如rom、eprom、eeprom、非易失性存储器(nandflash)、固态硬盘(ssd)等。

对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者一个操作与另一个实体或者另一个操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全应用实施例、或结合应用和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1