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

文档序号:14216457阅读:150来源:国知局

本发明涉及视频播放技术领域,特别是涉及一种视频播放方法、装置及电子设备。



背景技术:

现有的电子设备在播放视频过程中,一般包括解码和渲染等过程,具体的:首先基于解码器对待播放的视频帧进行解码,获得解码后的视频帧,并将解码后的视频帧存储于ram(random-accessmemory,随机存取存储器);对解码后的视频帧进行渲染时,则gpu(graphicsprocessingunit,图形处理器)首先需要从ram中获得上述解码后的视频帧,然后对所获得的解码后的视频帧进行渲染,进而播放渲染所得的视频帧。

在上述现有的播放视频过程中,要将解码后的视频帧存储于ram中,导致后续的渲染过程,gpu需要与ram进行通信,即gpu需要从ram中获得解码后的视频帧,通信过程占用了gpu的资源,在一定程度上影响了gpu的渲染速度,影响现有的电子设备的视频播放性能。



技术实现要素:

本发明实施例的目的在于提供一种视频帧播放方法、装置及电子设备,以实现在一定程度上提高gpu渲染速度,并进一步提高电子设备的视频播放性能。具体技术方案如下:

一方面,本发明实施例提供了一种视频播放方法,所述方法包括:

获取待播放视频帧;

将所获取的待播放视频帧输入预设解码器,通过所述预设解码器解码所述待播放视频帧,获得解码后的待播放视频帧;

将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域;

从所述纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧;

通过所述图形处理器渲染所确定的待渲染视频帧,并播放。

可选地,所述渲染条件为:所对应时间戳不早于当前播放的音频帧对应的时间戳且所对应时间戳最早。

可选地,在所述获取待播放视频帧的步骤之前,所述方法还包括:

判断是否接收到第一跳转指令,其中,所述第一跳转指令为:用于指示直接跳转播放视频的指令,所述第一跳转指令携带所需跳转至的第一时间;

当判断接收到所述第一跳转指令时,通知所述预设解码器丢弃当前已获得的视频帧;

当确定所述预设解码器已丢弃所述当前已获得的视频帧后,所述从获取待播放视频帧的步骤,包括:

从目标视频文件中,获取出所对应时间戳与所述第一跳转指令所携带的所述第一时间对应的视频帧,作为待播放视频帧。

可选地,当判断未接收到所述第一跳转指令时,所述获取待播放视频帧的步骤,包括:

从所述目标视频文件中,基于每一视频帧对应的时间戳,按时间先后顺序,获取待播放视频帧。

可选地,在所述获取待播放视频帧的步骤之前,所述方法还包括:

判断是否接收到第二跳转指令,其中,所述第二跳转指令为:用于指示所述预设解码器解码完成当前已获得的视频帧,并跳转播放视频的指令,所述第二跳转指令携带所需跳转至的第二时间;

当判断接收到所述第二跳转指令后,构建作为无用帧的无用视频帧;

循环将所构建的无用视频帧输入所述预设解码器,通过所述预设解码器解码所述当前已获得的视频帧以及所述无用视频帧;

直至获得解码后的无用视频帧,或者直至获得目标视频帧,停止将所构建的无用视频帧输入所述预设解码器,其中,所述目标视频帧为:所述当前已获得的视频帧中所对应时间戳最大的视频帧;

所述获取待播放视频帧的步骤,包括:

从目标视频文件中,获取出所对应时间戳与所述第二跳转指令所携带的所述第二时间对应的视频帧,作为待播放视频帧。

可选地,所述构建作为无用帧的无用视频帧的步骤,包括:

获取关键视频帧;

基于所述目标视频帧所对应的时间戳,修改所述关键视频帧所对应的时间戳,以获得所述作为无用帧的无用视频帧。

可选地,所述时间戳包括显示时间戳和解码时间戳;

所述基于所述目标视频帧所对应的时间戳,修改所述关键视频帧所对应的时间戳的步骤,包括:

将所述目标视频帧所对应的显示时间戳与第一预设时长之和,作为所述关键视频帧的显示时间戳;

将所述目标视频帧所对应的解码时间戳与第二预设时长之和,作为所述关键视频帧的解码时间戳。

另一方面,本发明实施例提供了一种视频播放装置,所述装置包括:

获取模块,用于获取待播放视频帧;

第一输入解码模块,用于将所获取的待播放视频帧输入预设解码器,通过所述预设解码器解码所述待播放视频帧,获得解码后的待播放视频帧;

存储模块,用于将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域;

确定模块,用于从所述纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧;

渲染播放模块,用于通过所述图形处理器渲染所确定的待渲染视频帧,并播放。

可选地,所述渲染条件为:所对应时间戳不早于当前播放的音频帧对应的时间戳且所对应时间戳最早。

可选地,所述装置还包括第一判断模块和通知模块;

所述第一判断模块,用于在所述获取待播放视频帧之前,判断是否接收到第一跳转指令,其中,所述第一跳转指令为:用于指示直接跳转播放视频的指令,所述第一跳转指令携带所需跳转至的第一时间;

所述通知模块,用于当判断接收到所述第一跳转指令时,通知所述预设解码器丢弃当前已获得的视频帧;

当确定所述预设解码器已丢弃所述当前已获得的视频帧后,所述获取模块,具体用于

从目标视频文件中,获取出所对应时间戳与所述第一跳转指令所携带的所述第一时间对应的视频帧,作为待播放视频帧。

可选地,当判断未接收到所述第一跳转指令时,所述获取模块,具体用于

从所述目标视频文件中,基于每一视频帧对应的时间戳,按时间先后顺序,获取待播放视频帧。

可选地,所述装置还包括第二判断模块、构建模块、第二输入解码模块和停止模块;

所述第二判断模块,用于在所述获取待播放视频帧之前,判断是否接收到第二跳转指令,其中,所述第二跳转指令为:用于指示所述预设解码器解码完成当前已获得的视频帧,并跳转播放视频的指令,所述第二跳转指令携带所需跳转至的第二时间;

所述构建模块,用于当判断接收到所述第二跳转指令后,构建作为无用帧的无用视频帧;

所述第二输入解码模块,用于循环将所构建的无用视频帧输入所述预设解码器,通过所述预设解码器解码所述当前已获得的视频帧以及所述无用视频帧;

所述停止模块,用于直至获得解码后的无用视频帧,或者直至获得目标视频帧,停止将所构建的无用视频帧输入所述预设解码器,其中,所述目标视频帧为:所述当前已获得的视频帧中所对应时间戳最大的视频帧;

所述获取模块,具体用于

从目标视频文件中,获取出所对应时间戳与所述第二跳转指令所携带的所述第二时间对应的视频帧,作为待播放视频帧。

可选地,所述构建模块包括获取单元和修改构建单元;

所述获取单元,用于获取关键视频帧;

所述修改构建单元,用于基于所述目标视频帧所对应的时间戳,修改所述关键视频帧所对应的时间戳,以获得所述作为无用帧的无用视频帧。

可选地,所述时间戳包括显示时间戳和解码时间戳;

所述修改构建单元,具体用于

将所述目标视频帧所对应的显示时间戳与第一预设时长之和,作为所述关键视频帧的显示时间戳;

将所述目标视频帧所对应的解码时间戳与第二预设时长之和,作为所述关键视频帧的解码时间戳。

另一方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器、通信总线和显示器,其中,处理器,通信接口,存储器和显示器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的计算机程序时,实现本发明实施例所提供的任一所述的视频播放方法步骤;

显示器,用于显示渲染后的待渲染视频帧。

另一方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例所提供的任一所述的视频播放方法步骤。

本发明实施例中,获取待播放视频帧;将待播放视频帧输入预设解码器,通过预设解码器解码待播放视频帧,获得解码后的待播放视频帧;将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域;从纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧;通过图形处理器渲染所确定的待渲染视频帧,并播放。

本发明实施例中,将解码后的待播放视频帧直接作为纹理数据,存储于图形处理器的纹理存储区域,当利用图形处理器对上述解码后的待播放视频帧进行渲染时,可以直接从处于图形处理器本地的纹理存储区域中,获取到满足渲染条件的解码后的待播放视频帧,进行渲染,无需再与ram(random-accessmemory,随机存取存储器)进行通信,使得图形处理器的更多资源可以用于渲染视频帧,在一定程度上可以提高视频播放过程中图形处理器渲染视频帧的渲染速度,以及渲染效率,进而可以提高电子设备的视频播放性能。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

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

图1为本发明实施例所提供的一种视频播放方法的流程示意图;

图2为本发明实施例所提供的一种视频播放方法的另一流程示意图;

图3为本发明实施例所提供的一种视频播放方法的另一流程示意图;

图4为本发明实施例所提供的一种视频播放装置的结构示意图;

图5为本发明实施例所提供的一种视频播放装置的另一结构示意图;

图6为本发明实施例所提供的一种视频播放装置的另一结构示意图;

图7为本发明实施例所提供的一种电子设备的结构示意图。

具体实施方式

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

本发明实施例提供了一种视频帧播放方法、装置及电子设备,以实现在一定程度上提高gpu渲染速度,并进一步提高电子设备的视频播放性能。

如图1所示,本发明实施例提供了一种视频播放方法,该方法可以包括如下步骤:

s101:获取待播放视频帧;

可以理解的是,本发明实施例所提供的视频播放方法,可以应用于任一具有视频播放功能的电子设备中,其中,上述电子设备可以为电脑、智能手机等。

在一种情况中,实现本发明实施例所提供的视频播放方法的功能软件,可以是专门的客户端软件,例如:视频播放器客户端软件,也可以是任一能够进行视频播放的客户端软件的插件,等等,这都是合理的。

电子设备在确定出所需播放或正在播放的视频文件后,可以直接从上述视频文件中获取待播放的视频帧,作为待播放视频帧。在本发明实施例中,电子设备可以从上述视频文件中,获取一帧视频帧或连续的多帧视频帧,作为待播放视频帧,这都是可以的。其中,上述连续的多帧视频帧可以是视频文件中所对应时间戳连续的视频帧。

上述视频文件的文件格式可以为avi(audiovideointerleaved,音频视频交错格式)、rmvb、rm和mp4等,本发明实施例中并不对视频文件的文件格式进行限定。

s102:将所获取的待播放视频帧输入预设解码器,通过预设解码器解码待播放视频帧,获得解码后的待播放视频帧;

在一种情况中,上述预设解码器可以为硬件解码器,在一种实现方式中,上述硬件解码器可以为mediacode(影音转码快车)。

在一种实现方式中,电子设备将所获取的待播放视频帧输入预设解码器,预设解码器可以对上述待播放视频帧进行解码,预设解码器对待播放视频帧解码完成后,会相应的输出解码后的待播放视频帧。可以理解的是,在一种情况中,预设解码器可以输出解码后的待播放视频帧,至surfacetexture中,电子设备可以周期性地读取从surfacetexture中读取预设解码器所输出的解码后的待播放视频帧,以获得解码后的待播放视频帧。

在一种情况中,当电子设备获取到的待播放视频帧包括多帧时,电子设备可以依据待播放视频帧所对应的时间戳,按时间先后顺序,将待播放视频帧依次输入上述预设解码器中。

s103:将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器(gpu,graphicsprocessingunit)的纹理存储区域;

本发明实施例中,当电子设备获得解码后的待播放视频帧后,可以直接将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域。在一种实现方式中,电子设备在将上述解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域时,可以是依据每一解码后的待播放视频帧所对应的时间戳,按时间先后顺序进行存储。

在一种实现方式中,电子设备将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域时,其存储方式可以为缓存。

s104:从纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧;

在一种情况中,电子设备可以设置一个渲染线程,当电子设备所设置的读取线程每读取一次预设解码器所输出的解码后的待播放视频帧,即触发一次上述渲染线程,以使上述渲染线程从纹理存储区域所存储的解码后的待播放视频帧中,确定出满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧,已进行后续的渲染流程。

电子设备在利用上述读取线程,周期性地读取预设解码器所输出的解码后的待播放视频帧时,由于上述预设解码器解码视频帧需要时间,在上述读取线程读取预设解码器所输出的解码后的待播放视频帧时,可能会出现读取不到解码后的待播放视频帧的情况,其中,每当电子设备利用上述读取线程读取到解码后的待播放视频帧,即将所读取到的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域。

在一种情况中,不管电子设备利用上述读取线程读取或未读取到解码后的待播放视频帧,电子设备都会触发一次渲染线程,以通过上述渲染线程确定待渲染视频帧,并对待渲染视频帧进行渲染。即电子设备从纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧的时机存在两个,一个为电子设备利用上述读取线程获得解码后的待播放视频帧,一个为电子设备利用上述读取线程未获得解码后的待播放视频帧。

理论上,视频帧解码速度一般大于视频帧渲染速度。纹理存储区域中所存储的解码后的待播放视频帧,可以使得电子设备利用上述渲染线程确定出满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧,以进行后续渲染。

s105:通过图形处理器渲染所确定的待渲染视频帧,并播放。

本发明实施例中,电子设备通过图形处理器对所确定的待渲染视频帧进行渲染,并将所渲染完成的待渲染视频帧传输至电子设备的显示器,以使通过显示器播放上述所渲染完成的待渲染视频帧。

本发明实施例中,将解码后的待播放视频帧直接作为纹理数据,存储于图形处理器的纹理存储区域,当利用图形处理器对上述解码后的待播放视频帧进行渲染时,可以直接从图形处理器的本地获取到满足渲染条件的解码后的待播放视频帧,进行渲染,无需再与ram(random-accessmemory,随机存取存储器)进行通信,使得图形处理器的更多资源可以用于渲染视频帧,在一定程度上可以提高视频播放过程中图形处理器渲染视频帧的渲染速度,以及渲染效率,进而可以提高电子设备的视频播放性能。

并且,本发明实施例中,将上述解码后的待播放视频帧直接作为纹理数据,存储于图形处理器的纹理存储区域,无需存储于ram中,节省了ram的存储空间,且无需再与电子设备中其他运行的线程竞争使用ram的存储空间,这在一定程度上解决了低内存的电子设备在视频播放、编辑时ram内存不足和播放、编辑性能卡、慢的问题。

在一种实现方式中,上述渲染条件可以为:所对应时间戳不早于当前播放的音频帧对应的时间戳且所对应时间戳最早。

可以理解的是,电子设备在播放视频时,要保证音频帧与视频帧之间的同步,以避免出现声音跟嘴型不匹配的现象。由于音频失真易引起用户的注意,在一种实现方式中,可以通过音频控制音频帧与视频帧之间的同步,即基于所需播放的音频帧,选择所需播放的视频帧。由于渲染过程需要时间,当电子设备确定待渲染视频帧时,需要从纹理存储区域所存储的解码后的待播放视频帧中,确定出所对应时间戳最早且所对应时间戳不早于当前播放的音频帧对应的时间戳的视频帧,作为待渲染视频帧。举例而言,当当前播放的音频帧对应的时间戳为5s(秒)时,可以从纹理存储区域所存储的解码后的待播放视频帧中,确定出所对应时间戳不早于5s且所对应时间戳最早的视频帧,作为待渲染视频帧。在一种情况中,当纹理存储区域所存储的解码后的待播放视频帧中,存在所对应时间戳早于5s的视频帧时,则可以跳过该视频帧,直接确定出所对应时间戳不早于5s且所对应时间戳最早的视频帧。

在一种实现方式中,在正常播放视频文件的流程中,电子设备可以周期性地,依据当前播放的视频文件中每一视频帧对应的时间戳,按时间先后顺序获取待播放视频帧,后续的,将所获取的待播放视频帧输入预设解码器,通过预设解码器解码待播放视频帧,获得解码后的待播放视频帧,将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域,从纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧,通过图形处理器渲染所确定的待渲染视频帧,并播放。其中,上述正常播放视频文件的流程可以为:未接收到关于跳转播放视频帧的指令的流程。

本发明实施例中,在播放视频文件的过程中,用户可能会有倒播视频、反复播放视频、快进播放视频等跳转播放视频的需求。在一种情况中,上述倒播视频可以是:以倒序的方式播放视频帧,例如:以正序的方式播放视频帧时,即基于每一视频帧对应的时间戳,按时间先后顺序播放时,是视频帧1、视频帧2、视频帧3、视频帧4、视频帧5和视频帧6顺序播放,以倒序的方式播放视频帧则为:视频帧6、视频帧5、视频帧4、视频帧3、视频帧2和视频帧1顺序播放。上述反复播放视频可以是:循环播放一段视频,例如,循环顺序播放多帧视频帧。上述快进播放视频可以是:视频顺序播放过程中,用户快进至一位置处开始播放视频,例如:当前播放的视频帧对应的时间戳为15:00分,用户快进至对应的时间戳为19:00分的视频帧处,开始播放视频。在一种实现方式中,上述倒播视频、反复播放视频、快进播放视频等跳转播放视频的操作,还可以是电子设备根据预设的程序自动触发执行。

本发明实施例中,当需要跳转播放视频时,在一种实现方式中,需要直接跳转,即无需再播放当前输入预设编码器中进行编码的待播放视频帧以及当前纹理存储区域所存储的解码后的待播放视频帧,直接跳转播放相应的视频帧。在另一种实现方式中,需要播放完成当前输入预设编码器中进行编码的待播放视频帧以及当前纹理存储区域所存储的解码后的待播放视频帧之后,再跳转播放相应的视频帧。

如图2所示,本发明实施例所提供的一种视频播放方法,可以包括如下步骤:

s201:判断是否接收到第一跳转指令;

其中,第一跳转指令为:用于指示直接跳转播放视频的指令,第一跳转指令携带所需跳转至的第一时间;

s202:当判断接收到第一跳转指令时,通知预设解码器丢弃当前已获得的视频帧;

s203:当确定预设解码器已丢弃当前已获得的视频帧后,从目标视频文件中,获取出所对应时间戳与第一跳转指令所携带的第一时间对应的视频帧,作为待播放视频帧;

s204:将所获取的待播放视频帧输入预设解码器,通过预设解码器解码待播放视频帧,获得解码后的待播放视频帧;

s205:将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域;

s206:从纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧;

s207:通过图形处理器渲染所确定的待渲染视频帧,并播放。

其中,上述s204与图1中所示的s102相同,上述s205与图1中所示的s103相同,上述s206与图1中所示的s104相同,上述s207与图1中所示的s105相同。

本发明实施例中,电子设备在获取待播放视频帧之前,可以首先判断是否接收到第一跳转指令,其中,上述第一跳转指令为:用于指示直接跳转播放视频的指令,即无需再播放当前输入预设编码器中进行编码的待播放视频帧以及当前纹理存储区域所存储的解码后的待播放视频帧,直接跳转播放该第一跳转指令所对应的视频帧。此时,电子设备在判断接收到第一跳转指令之后,可以首先通知预设解码器丢弃当前已获得的视频帧;预设解码器接收到上述通知后,丢弃当前已获得的视频帧,并且,预设解码器在丢弃完成后,反馈丢弃完成信息;电子设备基于上述预设解码器反馈的丢弃完成信息,可以确定出预设解码器已丢弃当前已获得的视频帧,此时,上述电子设备可以依据上述第一跳转指令,获取待播放视频帧。在一种情况中,上述预设解码器接收到上述通知后,丢弃当前已获得的视频帧的流程可以用“flushcodec”标识,上述预设解码器在丢弃完成后,反馈丢弃完成信息的流程可以用“notify”标识。

在一种情况中,为了节省图像处理器的纹理存储区域的存储空间,本发明实施例中,电子设备在判断接收到第一跳转指令之后,还可以清空图像处理器的纹理存储区域所存储的解码后的待播放视频帧。

可以理解的是,上述目标视频文件可以是电子设备中当前正在播放的视频文件,上述第一跳转指令为针对上述目标视频文件触发的指令。上述当前已获得的视频帧中的“当前”为针对接收到上述第一跳转指令的时间而言的,上述当前已获得的视频帧为当前已输入上述预设解码器中的待播放视频帧。

在一种实现方式中,电子设备可能判断出未接收到第一跳转指令,此时,上述电子设备可以依据正常播放视频文件的流程,播放目标视频文件。具体的,当电子设备判断未接收到第一跳转指令时,上述获取待播放视频帧的步骤,可以包括:

从目标视频文件中,基于每一视频帧对应的时间戳,按时间先后顺序,获取待播放视频帧。

本发明实施例中,当需要跳转播放视频时,在另一种实现方式中,则需要将当前输入预设编码器中进行编码的待播放视频帧以及当前纹理存储区域所存储的解码后的待播放视频帧播放完成后,再跳转播放相应的视频帧。如图3所示,本发明实施例所提供的一种视频播放方法,可以包括如下步骤:

s301:判断是否接收到第二跳转指令;

其中,上述第二跳转指令为:用于指示预设解码器解码完成当前已获得的视频帧,并跳转播放视频的指令,上述第二跳转指令携带所需跳转至的第二时间;

s302:当判断接收到第二跳转指令后,构建作为无用帧的无用视频帧;

s303:循环将所构建的无用视频帧输入预设解码器,通过预设解码器解码当前已获得的视频帧以及无用视频帧;

s304:直至获得解码后的无用视频帧,或者直至获得目标视频帧,停止将所构建的无用视频帧输入预设解码器;

其中,上述目标视频帧为:上述当前已获得的视频帧中所对应时间戳最大的视频帧;

s305:从目标视频文件中,获取出所对应时间戳与第二跳转指令所携带的第二时间对应的视频帧,作为待播放视频帧;

s306:将所获取的待播放视频帧输入预设解码器,通过预设解码器解码待播放视频帧,获得解码后的待播放视频帧;

s307:将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域;

s308:从纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧;

s309:通过图形处理器渲染所确定的待渲染视频帧,并播放。

其中,上述s306与图1中所示的s102相同,上述s307与图1中所示的s103相同,上述s308与图1中所示的s104相同,上述s309与图1中所示的s105相同。

在一种情况中,在跳转播放视频时,即接收到上述第二跳转指令时,预设解码器可能会出现丢失有用帧的情况,其中,上述有用帧与上述无用帧相对应,上述有用帧可以指:理论上被输入预设解码器中的需要被解码出的视频帧,其中,上述有用帧可以根据指令的选择性丢弃,例如:当电子设备接收到上述第一跳转指令时,可以通知预设解码器丢弃其当前已获得的视频帧;上述无用帧可以指:理论上被输入预设解码器中的可以不被解码出的视频帧。

为了避免预设解码器出现丢失有用帧的情况,本发明实施例中可以通过构建作为无用帧的无用视频帧,并循环将上述所构建的无用视频帧输入上述预设解码器的方式,以促使上述预设解码器解码出其当前已获得的视频帧。直至当电子设备得到解码后的无用视频帧或者得到目标视频帧,停止将所构建的无用视频帧输入预设解码器,并从目标视频文件中得到待播放视频帧。

在一种实现方式中,电子设备可能判断出未接收到上述第二跳转指令,此时,上述电子设备可以依据正常播放视频文件的流程,播放目标视频文件。即从目标视频文件中,基于每一视频帧对应的时间戳,按时间先后顺序,获取待播放视频帧。

本发明实施例中,电子设备在获取待播放视频帧之前,电子设备还可以判断是否接收到跳转指令,此时,可以继续判断所接收的跳转指令是否为上述第一跳转指令,当为上述第一跳转指令时,执行上述第一跳转指令对应的后续视频播放流程;当判断不为上述第一跳转指令时,可以继续判断所接收的跳转指令是否为上述第二跳转指令,当为上述第二跳转指令时,执行上述第二跳转指令对应的后续视频播放流程,当不为上述第二跳转指令时,执行正常播放视频的后续流程。

或者,电子设备在获取待播放视频帧之前,电子设备可以首先判断是否接收到跳转指令,此时,可以继续判断所接收的跳转指令是否为上述第二跳转指令,当为上述第二跳转指令时,执行上述第二跳转指令对应的后续视频播放流程,当判断不为上述第二跳转指令时,可以继续判断所接收的跳转指令是否为上述第一跳转指令,当为上述第一跳转指令时,执行上述第一跳转指令对应的后续视频播放流程,当不为上述第一跳转指令时,执行正常播放视频的后续流程。

在一种实现方式中,上述构建作为无用帧的无用视频帧的步骤,可以包括:

获取关键视频帧;

基于目标视频帧所对应的时间戳,修改关键视频帧所对应的时间戳,以获得作为无用帧的无用视频帧。

可以理解是,上述关键视频帧可以为视频帧中的i帧,上述i帧可以为上述目标视频文件中的任一i帧,或者其他视频文件中的任一i帧,这都是可以的。电子设备在获取到关键视频帧后,可以基于目标视频帧对应的时间戳,对应修改关键视频帧对应的时间戳,上述目标视频帧为:预设解码器当前已获得的视频帧中所对应时间戳最大的视频帧。具体的,上述时间戳可以包括显示时间戳(pts,presentationtimestamp)和解码时间戳(dts,decodetimestamp);

上述基于目标视频帧所对应的时间戳,修改关键视频帧所对应的时间戳的步骤,可以包括:

将目标视频帧所对应的显示时间戳与第一预设时长之和,作为关键视频帧的显示时间戳;

将目标视频帧所对应的解码时间戳与第二预设时长之和,作为关键视频帧的解码时间戳。

其中,上述第一预设时长与上述第二预设时长均为预先设置的时长,上述第一预设时长与上述第二预设时长均为大于0的数值。举例而言:上述关键视频帧的显示时间戳=目标视频帧所对应的显示时间戳+ptstheta,ptstheta>0;上述关键视频帧的解码时间戳=目标视频帧所对应的解码时间+dtstheta,dtstheta>0;其中,上述ptstheta可以表示第一预设时长,上述dtstheta可以表示第二预设时长。

在一种实现方式中,在视频播放过程中,上述纹理存储区域中可以存在两个纹理列表,其中,一个纹理列表可以用于存储所获得的解码后的待播放视频帧,即用于存储等待渲染的视频帧,可以称该纹理列表为待渲染纹理列表;另一个纹理列表可以用于存储使用过的待播放视频帧,其中,上述使用过的待播放视频帧可以为已被渲染过的视频帧和/或被跳过的视频帧,其中,上述被跳过的视频帧为:基于音频帧和视频帧的同步控制原则,被确定为不需被渲染的视频帧,可以称该纹理列表为回收纹理列表。上述回收纹理列表可以被循环使用,即当电子设备接收到针对视频文件的倒播视频和/或反复播放视频的跳转播放视频的指令时,可以直接从上述回收纹理列表匹配相应的视频帧,可以在一定程度上减少播放视频过程中,电子设备的计算资源。

相应于上述方法实施例,本发明实施例提供了一种视频播放装置,如图4所示,所述装置包括:

获取模块410,用于获取待播放视频帧;

第一输入解码模块420,用于将所获取的待播放视频帧输入预设解码器,通过所述预设解码器解码所述待播放视频帧,获得解码后的待播放视频帧;

存储模块430,用于将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域;

确定模块440,用于从所述纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧;

渲染播放模块450,用于通过所述图形处理器渲染所确定的待渲染视频帧,并播放。

本发明实施例中,将解码后的待播放视频帧直接作为纹理数据,存储于图形处理器的纹理存储区域,当利用图形处理器对上述解码后的待播放视频帧进行渲染时,可以直接从图形处理器的本地获取到满足渲染条件的解码后的待播放视频帧,进行渲染,无需再与ram(random-accessmemory,随机存取存储器)进行通信,使得图形处理器的更多资源可以用于渲染视频帧,在一定程度上可以提高视频播放过程中图形处理器渲染视频帧的渲染速度,以及渲染效率,进而可以提高电子设备的视频播放性能。

并且,本发明实施例中,将上述解码后的待播放视频帧直接作为纹理数据,存储于图形处理器的纹理存储区域,无需存储于ram中,节省了ram的存储空间,且无需再与电子设备中其他运行的线程竞争使用ram的存储空间,这在一定程度上解决了低内存的电子设备在视频播放、编辑时ram内存不足和播放、编辑性能卡、慢的问题。

在一种实现方式中,所述渲染条件为:所对应时间戳不早于当前播放的音频帧对应的时间戳且所对应时间戳最早。

在一种实现方式中,如图5所示,所述装置还可以包括第一判断模块510和通知模块520;

所述第一判断模块510,用于在所述获取待播放视频帧之前,判断是否接收到第一跳转指令,其中,所述第一跳转指令为:用于指示直接跳转播放视频的指令,所述第一跳转指令携带所需跳转至的第一时间;

所述通知模块520,用于当判断接收到所述第一跳转指令时,通知所述预设解码器丢弃当前已获得的视频帧;

当确定所述预设解码器已丢弃所述当前已获得的视频帧后,所述获取模块410,具体用于

从目标视频文件中,获取出所对应时间戳与所述第一跳转指令所携带的所述第一时间对应的视频帧,作为待播放视频帧。

在一种实现方式中,当判断未接收到所述第一跳转指令时,所述获取模块410,具体用于

从所述目标视频文件中,基于每一视频帧对应的时间戳,按时间先后顺序,获取待播放视频帧。

在一种实现方式中,如图6所示,所述装置还可以包括第二判断模块610、构建模块620、第二输入解码模块630和停止模块640;

所述第二判断模块610,用于在所述获取待播放视频帧之前,判断是否接收到第二跳转指令,其中,所述第二跳转指令为:用于指示所述预设解码器解码完成当前已获得的视频帧,并跳转播放视频的指令,所述第二跳转指令携带所需跳转至的第二时间;

所述构建模块620,用于当判断接收到所述第二跳转指令后,构建作为无用帧的无用视频帧;

所述第二输入解码模块630,用于循环将所构建的无用视频帧输入所述预设解码器,通过所述预设解码器解码所述当前已获得的视频帧以及所述无用视频帧;

所述停止模块640,用于直至获得解码后的无用视频帧,或者直至获得目标视频帧,停止将所构建的无用视频帧输入所述预设解码器,其中,所述目标视频帧为:所述当前已获得的视频帧中所对应时间戳最大的视频帧;

所述获取模块410,具体用于

从目标视频文件中,获取出所对应时间戳与所述第二跳转指令所携带的所述第二时间对应的视频帧,作为待播放视频帧。

在一种实现方式中,所述构建模块620包括获取单元和修改构建单元;

所述获取单元,用于获取关键视频帧;

所述修改构建单元,用于基于所述目标视频帧所对应的时间戳,修改所述关键视频帧所对应的时间戳,以获得所述作为无用帧的无用视频帧。

在一种实现方式中,所述时间戳包括显示时间戳和解码时间戳;

所述修改构建单元,具体用于

将所述目标视频帧所对应的显示时间戳与第一预设时长之和,作为所述关键视频帧的显示时间戳;

将所述目标视频帧所对应的解码时间戳与第二预设时长之和,作为所述关键视频帧的解码时间戳。

相应于上述方法实施例,本发明实施例还提供了一种电子设备,如图7所示,包括处理器710、通信接口720、存储器730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信,

存储器730,用于存放计算机程序;

处理器710,用于执行存储器730上所存放的计算机程序时,实现本发明实施例所提供的上述任一视频播放方法,其中,上述视频播放方法可以包括步骤:

获取待播放视频帧;

将所获取的待播放视频帧输入预设解码器,通过所述预设解码器解码所述待播放视频帧,获得解码后的待播放视频帧;

将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域;

从所述纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧;

通过所述图形处理器渲染所确定的待渲染视频帧,并播放。

本发明实施例中,将解码后的待播放视频帧直接作为纹理数据,存储于图形处理器的纹理存储区域,当利用图形处理器对上述解码后的待播放视频帧进行渲染时,可以直接从图形处理器的本地获取到满足渲染条件的解码后的待播放视频帧,进行渲染,无需再与ram(random-accessmemory,随机存取存储器)进行通信,使得图形处理器的更多资源可以用于渲染视频帧,在一定程度上可以提高视频播放过程中图形处理器渲染视频帧的渲染速度,以及渲染效率,进而可以提高电子设备的视频播放性能。

并且,本发明实施例中,将上述解码后的待播放视频帧直接作为纹理数据,存储于图形处理器的纹理存储区域,无需存储于ram中,节省了ram的存储空间,且无需再与电子设备中其他运行的线程竞争使用ram的存储空间,这在一定程度上解决了低内存的电子设备在视频播放、编辑时ram内存不足和播放、编辑性能卡、慢的问题。

在一种实现方式中,所述渲染条件为:所对应时间戳不早于当前播放的音频帧对应的时间戳且所对应时间戳最早。

在一种实现方式中,在所述获取待播放视频帧之前,还包括:

判断是否接收到第一跳转指令,其中,所述第一跳转指令为:用于指示直接跳转播放视频的指令,所述第一跳转指令携带所需跳转至的第一时间;

当判断接收到所述第一跳转指令时,通知所述预设解码器丢弃当前已获得的视频帧;

当确定所述预设解码器已丢弃所述当前已获得的视频帧后,所述从获取待播放视频帧,包括:

从目标视频文件中,获取出所对应时间戳与所述第一跳转指令所携带的所述第一时间对应的视频帧,作为待播放视频帧。

在一种实现方式中,当判断未接收到所述第一跳转指令时,所述获取待播放视频帧,包括:

从所述目标视频文件中,基于每一视频帧对应的时间戳,按时间先后顺序,获取待播放视频帧。

在一种实现方式中,在所述获取待播放视频帧之前,还包括:

判断是否接收到第二跳转指令,其中,所述第二跳转指令为:用于指示所述预设解码器解码完成当前已获得的视频帧,并跳转播放视频的指令,所述第二跳转指令携带所需跳转至的第二时间;

当判断接收到所述第二跳转指令后,构建作为无用帧的无用视频帧;

循环将所构建的无用视频帧输入所述预设解码器,通过所述预设解码器解码所述当前已获得的视频帧以及所述无用视频帧;

直至获得解码后的无用视频帧,或者直至获得目标视频帧,停止将所构建的无用视频帧输入所述预设解码器,其中,所述目标视频帧为:所述当前已获得的视频帧中所对应时间戳最大的视频帧;

所述获取待播放视频帧,包括:

从目标视频文件中,获取出所对应时间戳与所述第二跳转指令所携带的所述第二时间对应的视频帧,作为待播放视频帧。

在一种实现方式中,所述构建作为无用帧的无用视频帧,包括:

获取关键视频帧;

基于所述目标视频帧所对应的时间戳,修改所述关键视频帧所对应的时间戳,以获得所述作为无用帧的无用视频帧。

在一种实现方式中,所述时间戳包括显示时间戳和解码时间戳;

所述基于所述目标视频帧所对应的时间戳,修改所述关键视频帧所对应的时间戳,包括:

将所述目标视频帧所对应的显示时间戳与第一预设时长之和,作为所述关键视频帧的显示时间戳;

将所述目标视频帧所对应的解码时间戳与第二预设时长之和,作为所述关键视频帧的解码时间戳。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

相应于上述方法实施例,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例所提供的上述任一视频播放方法,其中,上述视频播放方法可以包括步骤:

获取待播放视频帧;

将所获取的待播放视频帧输入预设解码器,通过所述预设解码器解码所述待播放视频帧,获得解码后的待播放视频帧;

将所获得的解码后的待播放视频帧,作为纹理数据存储于图形处理器的纹理存储区域;

从所述纹理存储区域所存储的解码后的待播放视频帧中,确定满足渲染条件的解码后的待播放视频帧,作为待渲染视频帧;

通过所述图形处理器渲染所确定的待渲染视频帧,并播放。

本发明实施例中,将解码后的待播放视频帧直接作为纹理数据,存储于图形处理器的纹理存储区域,当利用图形处理器对上述解码后的待播放视频帧进行渲染时,可以直接从图形处理器的本地获取到满足渲染条件的解码后的待播放视频帧,进行渲染,无需再与ram(random-accessmemory,随机存取存储器)进行通信,使得图形处理器的更多资源可以用于渲染视频帧,在一定程度上可以提高视频播放过程中图形处理器渲染视频帧的渲染速度,以及渲染效率,进而可以提高电子设备的视频播放性能。

并且,本发明实施例中,将上述解码后的待播放视频帧直接作为纹理数据,存储于图形处理器的纹理存储区域,无需存储于ram中,节省了ram的存储空间,且无需再与电子设备中其他运行的线程竞争使用ram的存储空间,这在一定程度上解决了低内存的电子设备在视频播放、编辑时ram内存不足和播放、编辑性能卡、慢的问题。

在一种实现方式中,所述渲染条件为:所对应时间戳不早于当前播放的音频帧对应的时间戳且所对应时间戳最早。

在一种实现方式中,在所述获取待播放视频帧之前,还包括:

判断是否接收到第一跳转指令,其中,所述第一跳转指令为:用于指示直接跳转播放视频的指令,所述第一跳转指令携带所需跳转至的第一时间;

当判断接收到所述第一跳转指令时,通知所述预设解码器丢弃当前已获得的视频帧;

当确定所述预设解码器已丢弃所述当前已获得的视频帧后,所述从获取待播放视频帧,包括:

从目标视频文件中,获取出所对应时间戳与所述第一跳转指令所携带的所述第一时间对应的视频帧,作为待播放视频帧。

在一种实现方式中,当判断未接收到所述第一跳转指令时,所述获取待播放视频帧,包括:

从所述目标视频文件中,基于每一视频帧对应的时间戳,按时间先后顺序,获取待播放视频帧。

在一种实现方式中,在所述获取待播放视频帧之前,还包括:

判断是否接收到第二跳转指令,其中,所述第二跳转指令为:用于指示所述预设解码器解码完成当前已获得的视频帧,并跳转播放视频的指令,所述第二跳转指令携带所需跳转至的第二时间;

当判断接收到所述第二跳转指令后,构建作为无用帧的无用视频帧;

循环将所构建的无用视频帧输入所述预设解码器,通过所述预设解码器解码所述当前已获得的视频帧以及所述无用视频帧;

直至获得解码后的无用视频帧,或者直至获得目标视频帧,停止将所构建的无用视频帧输入所述预设解码器,其中,所述目标视频帧为:所述当前已获得的视频帧中所对应时间戳最大的视频帧;

所述获取待播放视频帧,包括:

从目标视频文件中,获取出所对应时间戳与所述第二跳转指令所携带的所述第二时间对应的视频帧,作为待播放视频帧。

在一种实现方式中,所述构建作为无用帧的无用视频帧,包括:

获取关键视频帧;

基于所述目标视频帧所对应的时间戳,修改所述关键视频帧所对应的时间戳,以获得所述作为无用帧的无用视频帧。

在一种实现方式中,所述时间戳包括显示时间戳和解码时间戳;

所述基于所述目标视频帧所对应的时间戳,修改所述关键视频帧所对应的时间戳,包括:

将所述目标视频帧所对应的显示时间戳与第一预设时长之和,作为所述关键视频帧的显示时间戳;

将所述目标视频帧所对应的解码时间戳与第二预设时长之和,作为所述关键视频帧的解码时间戳。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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