视频分辨率切换方法及装置、电子设备与流程

文档序号:22686274发布日期:2020-10-28 12:53阅读:217来源:国知局
视频分辨率切换方法及装置、电子设备与流程
本公开涉及计算机
技术领域
,具体而言,涉及一种视频分辨率切换方法、视频分辨率切换装置、电子设备以及计算机可读存储介质。
背景技术
:在很多场景下,经常需要根据用户操作或者其他需求,对视频的分辨率进行切换。理想的效果是视频分辨率切换过程中,视频完全流畅,而不会出现卡顿,即实现无缝切换。但相关技术中的视频分辨率无缝切换方案中,要求不同分辨率的视频按照相同的规则进行编码切片。这样,则会导致编码端无法自由选择编码规则,进而导致无法实现最优编码。因此,提供一种新的视频分辨率切换方法是有必要的。需要说明的是,在上述
背景技术
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。技术实现要素:本公开的目的在于提供一种视频分辨率切换方法、视频分辨率切换装置、电子设备以及计算机可读存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的编码端编码规则选择受限的问题。根据本公开的第一方面,提供一种视频分辨率切换方法,包括:在接收到分辨率切换请求时获取第一时刻,所述第一时刻为第一解码器播放的第一视频的当前播放进度时刻;查询第二视频中,时间戳在所述第一时刻后且距所述第一时刻最近的关键帧;其中所述第二视频与所述第一视频内容相同分辨率不同,且所述第二视频被编码为多个视频分片,各所述视频分片均包括关键帧;将查询到的所述关键帧的时间戳作为第二时刻,并在所述第一视频播放至所述第二时刻时,通过第二解码器对所述第二视频的视频分片进行解码并从所述第二时刻开始播放。在本公开的一种示例性实施例中,所述方法还包括:根据接收到的用户输入信息,生成所述分辨率切换请求;或者,根据当前网络状态信息,生成所述分辨率切换请求;或者,根据所述第一视频的当前播放状态,生成所述分辨率切换请求。在本公开的一种示例性实施例中,所述方法还包括:根据所述分辨率切换请求,确定目标分辨率;从多个候选视频中,选择分辨率与所述目标分辨率一致的视频作为所述第二视频;其中,所述候选视频与所述第一视频内容相同分辨率不同。在本公开的一种示例性实施例中,查询第二视频中,时间戳在所述第一时刻后且距所述第一时刻最近的关键帧,包括:向服务器发送包括所述第一时刻的视频获取请求,以通过所述服务器根据所述第一时刻,在所述第二视频中,查询时间戳在所述第一时刻后且距所述第一时刻最近的关键帧。在本公开的一种示例性实施例中,通过第二解码器对所述第二视频的视频分片进行解码,包括:对所述视频分片中的所述关键帧进行解码得到对应的已解码视频帧;根据所述视频分片中各编码视频帧与当前的已解码视频帧之间的依赖关系,对各所述编码视频帧进行解码。在本公开的一种示例性实施例中,所述方法还包括:在所述第二时刻之前,获取包括查询到的所述关键帧的视频分片并缓存。在本公开的一种示例性实施例中,所述第一视频和所述第二视频的编码方式不同。根据本公开的第二方面,提供一种视频分辨率切换方法,所述方法包括:接收客户端发送的包括第一时刻的视频获取请求;所述第一时刻为所述客户端在接收到分辨率切换请求时,获取的第一解码器播放的第一视频的当前播放进度时刻;根据所述第一时刻,在第二视频中,查询时间戳在所述第一时刻后且距所述第一时刻最近的关键帧;其中所述第二视频与所述第一视频内容相同分辨率不同,且所述第二视频被编码为多个视频分片,各所述视频分片均包括关键帧;将所述第二视频的视频分片发送给所述客户端,以使所述客户端在所述第一视频播放至第二时刻时,通过第二解码器对所述第二视频的视频分片进行解码并从所述第二时刻开始播放;所述第二时刻为查询到的所述关键帧的时间戳。根据本公开的第三方面,提供一种视频分辨率切换装置,所述装置包括:第一时刻获取模块,用于在接收到分辨率切换请求时获取第一时刻,所述第一时刻为第一解码器播放的第一视频的当前播放进度时刻;关键帧查询模块,用于查询第二视频中,时间戳在所述第一时刻后且距所述第一时刻最近的关键帧;其中所述第二视频与所述第一视频内容相同分辨率不同,且所述第二视频被编码为多个视频分片,各所述视频分片均包括关键帧;第二视频切换模块,用于将查询到的所述关键帧的时间戳作为第二时刻,并在所述第一视频播放至所述第二时刻时,通过第二解码器对所述第二视频的视频分片进行解码并从所述第二时刻开始播放。在本公开的一种示例性实施例中,所述装置还包括切换请求生成模块,用于根据接收到的用户输入信息,生成所述分辨率切换请求;或者,用于根据当前网络状态信息,生成所述分辨率切换请求;或者,用于根据所述第一视频的当前播放状态,生成所述分辨率切换请求。在本公开的一种示例性实施例中,所述装置还包括,第二视频确定模块,用于根据所述分辨率切换请求,确定目标分辨率;以及,从多个候选视频中,选择分辨率与所述目标分辨率一致的视频作为所述第二视频;其中,所述候选视频与所述第一视频内容相同分辨率不同。在本公开的一种示例性实施例中,所述关键帧查询模块通过下述方法查询第二视频中,时间戳在所述第一时刻后且距所述第一时刻最近的关键帧:向服务器发送包括所述第一时刻的视频获取请求,以通过所述服务器根据所述第一时刻,在所述第二视频中,查询时间戳在所述第一时刻后且距所述第一时刻最近的关键帧。在本公开的一种示例性实施例中,所述第二视频切换模块通过下述方法对所述第二视频的视频分片进行解码:对所述视频分片中的所述关键帧进行解码得到对应的已解码视频帧;以及根据所述视频分片中各编码视频帧与当前的已解码视频帧之间的依赖关系,对各所述编码视频帧进行解码。在本公开的一种示例性实施例中,所述装置还包括视频分片缓存模块,用于在所述第二时刻之前,获取包括查询到的所述关键帧的视频分片并缓存。在本公开的一种示例性实施例中,所述第一视频和所述第二视频的编码方式不同。根据本公开的第四方面,提供一种视频分辨率切换装置,所述方法包括:视频获取请求接收模块,用于接收客户端发送的包括第一时刻的视频获取请求;所述第一时刻为所述客户端在接收到分辨率切换请求时,获取的第一解码器播放的第一视频的当前播放进度时刻;关键帧查询模块,用于根据所述第一时刻,在第二视频中,查询时间戳在所述第一时刻后且距所述第一时刻最近的关键帧;其中所述第二视频与所述第一视频内容相同分辨率不同,且所述第二视频被编码为多个视频分片,各所述视频分片均包括关键帧;第二视频传输模块,用于将所述第二视频的视频分片发送给所述客户端,以使所述客户端在所述第一视频播放至第二时刻时,通过第二解码器对所述第二视频的视频分片进行解码并从所述第二时刻开始播放;所述第二时刻为查询到的所述关键帧的时间戳。根据本公开的第五方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。根据本公开的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。本公开示例性实施例可以具有以下部分或全部有益效果:在本公开的一示例实施方式所提供的视频分辨率切换方法中,首先查询待切换到的第二视频中与当前播放进度时刻最近的关键帧,其次通过查询到的关键帧的时间戳确定切换时刻,进而可以在切换时刻直接对第二视频的视频分片进行解码播放,完成分辨率无缝切换。相比于现有技术而言,一方面,本公开示例实施方式的方法中的分辨率切换时间点无需一定发生的视频分片的边界,因此不会由于视频分辨率切换时长的限制而控制视频分片内容的时长,从而便于更加灵活的进行视频编码方法的选择。另一方面,本公开示例实施方式中的方法对于视频编码方法没有特殊限制,因此允许编码端按最高效的方式进行编码和视频切片,从而可以有效降低网络带宽的消耗以及存储空间的占用。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示出了可以应用本公开实施例的一种视频分辨率切换方法及装置的示例性系统架构的示意图;图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;图3示意性示出了根据本公开的一个实施例的一种视频分辨率切换方法的流程图;图4示意性示出了根据本公开的一个实施例的一种视频分辨率切换方法的流程图;图5示意性示出了根据本公开的一个实施例的一种视频分辨率切换方法的另一流程图;图6示意性示出了根据本公开的一个实施例的一种视频分辨率切换方法的又一流程图;图7示意性示出了根据本公开的一个实施例的一种视频分辨率切换方法的交互界面示意图;图8示意性示出了根据本公开的一个实施例的两种查询模式示意图;图9示意性示出了根据本公开的一个实施例的forward查询模式示意图;图10示意性示出了根据本公开的一个实施例的一种视频分辨率切换方法的交互界面示意图;图11示意性示出了根据本公开的一个实施例的一种视频分辨率切换方法的交互界面示意图;图12示意性示出了根据本公开的一个实施例的又一种视频分辨率切换方法的流程图;图13示意性示出了根据本公开的一个实施例的一种视频分辨率切换装置的框图;图14示意性示出了根据本公开的一个实施例的又一种视频分辨率切换装置的框图。具体实施方式现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。图1示出了可以应用本公开实施例的一种视频分辨率切换方法及装置的示例性应用环境的系统架构的示意图。如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。本公开实施例所提供的视频分辨率切换方法一般由终端设备101、102、103执行,相应地,视频分辨率切换装置一般设置于终端设备101、102、103中。但本领域技术人员容易理解的是,本公开实施例所提供的视频分辨率切换方法也可以由服务器105执行,相应的,视频分辨率切换装置也可以设置于服务器105中,本示例性实施例中对此不做特殊限定。图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。如图2所示,计算机系统200包括中央处理单元(cpu)201,其可以根据存储在只读存储器(rom)202中的程序或者从存储部分208加载到随机访问存储器(ram)203中的程序而执行各种适当的动作和处理。在ram203中,还存储有系统操作所需的各种程序和数据。cpu201、rom202以及ram203通过总线204彼此相连。输入/输出(i/o)接口205也连接至总线204。以下部件连接至i/o接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至i/o接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(cpu)201执行时,执行本申请的方法和装置中限定的各种功能。在一些实施例中,计算机系统200还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3~图12所示的各个步骤等。以下对本公开实施例的技术方案进行详细阐述:在很多场景下,经常需要根据用户操作或者其他需求,对视频的分辨率进行切换。举例而言,随着网络带宽的提升,在线视频播放越来越普及。在线视频播放的一个重要特点是实际的网络带宽会不停的波动。当网络带宽变低的时候,为了使视频播放流畅,需要适当降低视频的分辨率。反之,当网络带宽变高的时候,为了获得更好的观看体验,需要适当的提高视频的分辨率。通常而言,为了便于存储和传输,经常需要对视频进行编码。在进行视频编码的时候,会先把原始视频的视频帧进行分组,每组包含若干个视频帧(具体数量取决于编码的算法和参数选择)。每个分组为一个视频分片(groupofpictures,gop);在进行编码之后,不同视频分片之间的视频帧数据彼此没有关联,同一个视频分片内的视频帧数据会发生关联。其中,视频分片内的第一帧称作关键帧(或i帧);关键帧可以不依赖其他任何视频帧的数据,通过解码还原成已解码视频帧。而视频分片中除关键帧之外的视频帧,在解码时则需要依赖同一视频分片中的已解码视频帧的数据。因此,在将一个视频分片还原成原始视频时,需要从关键帧开始解码。在本公开提供的一种视频分辨率切换方法中,首先按照统一的编码规则对各分辨率的视频进行编码,例如,将各分辨率的视频分别切分成几秒一片的视频分片(segment),并为每个视频分片配置编号(sequencenumber)。由于对于内容相同但分辨率不同的视频,按完全一样的编码规则切分成时长相同的视频分片,因此编号相同的视频分片包含的内容完全相同。这样,在切换视频分辨率的时候,只要根据当前播放的视频分片的编号选择相同编号的符合目标分辨率的视频分片继续播放即可。举例而言,参考图3所示,其中第一视频为480p视频,即分辨率为848x480的视频,第二视频为720p视频,即分辨率为1280x720的视频。带箭头的粗黑实线表示视频播放的进程。在480p视频和720p视频中,每一个视频分片均包含3秒时长的内容,每个视频分片开始的第一帧是关键帧,并且编号相同的视频分片的关键帧的时间戳(presentationtimestamp,pts)是一致的;例如,480p视频的第1视频分片关键帧的时间戳是3.0秒,720p视频第1视频分片关键帧的时间戳也是3.0秒。图3中,首先播放的是480p视频;当播放到第(n-1)视频分片时,接收到分辨率切换请求。在接收到分辨率切换请求时(即t0时刻),并不会立即切换分辨率;这是因为相同编号不同分辨率的视频分片之间只有关键帧是时间戳对齐的,其他视频帧的时间戳则不一定对齐。当480p视频的第(n-1)视频分片播放结束后(即t1时刻),则不再播放480p的视频分片,而是开始播放720p视频的第n视频分片,进而完成分辨率的无缝切换。该视频分辨率切换方法的优势是,解码端切换分辨率时的操作非常简单,仅依赖于视频分片的编号的选择即可完成切换。但也存在一些待改进之处:例如,为了使编号相同但分辨率不同的视频分片包含完全相同的内容,就必须对编码端做出一些限制。比如,从提高编码压缩效率的角度看,基于相同的编码算法,不同分辨率的视频的最优的视频分片的内容时长一般是不一样的。因此,上述视频分辨率切换方法会牺牲一定的编码效率,从而使得视频无法得到最优的编码效果,进而在播放时需要消耗更大网络带宽。又例如,在上述视频分辨率切换方法中,分辨率的切换实际只能在视频分片的边界完成,因此会导致切换所需的时长为一个视频分片的内容时长。比如,假设分辨率切换请求在第(n-1)视频分片刚开始开始播放的时候发出,则需要等到第(n-1)视频分片播放完成后才能切换到第n视频分片。该问题可以通过减少视频分片的内容时长改善;但在一些特殊场景下,比如要求1秒内完成切换的场景下,则会要求每个视频分片的内容时长都限制在1秒之内;这显然会进一步的限制编码效率。基于上述一个或多个问题,本示例实施方式提供了一种的视频分辨率切换方法。该视频分辨率切换方法可以应用于上述服务器105,也可以应用于上述终端设备101、102、103中的一个或多个,本示例性实施例中对此不做特殊限定。参考图4所示,该视频分辨率切换方法可以包括以下步骤s410至步骤s430:步骤s410.在接收到分辨率切换请求时获取第一时刻,所述第一时刻为第一解码器播放的第一视频的当前播放进度时刻。步骤s420.查询第二视频中,时间戳在所述第一时刻后且距所述第一时刻最近的关键帧;其中所述第二视频与所述第一视频内容相同分辨率不同,且所述第二视频被编码为多个视频分片,各所述视频分片均包括关键帧。步骤s430.将查询到的所述关键帧的时间戳作为第二时刻,并在所述第一视频播放至所述第二时刻时,通过第二解码器对所述第二视频的视频分片进行解码并从所述第二时刻开始播放。在本示例实施方式所提供的信息推荐方法中,首先查询待切换到的第二视频中与当前播放进度时刻最近的关键帧,其次通过查询到的关键帧的时间戳确定切换时刻,进而可以在切换时刻直接对第二视频的视频分片进行解码播放,完成分辨率无缝切换。相比于现有技术而言,一方面,本示例实施方式的方法中的分辨率切换时间点无需一定发生的视频分片的边界,因此不会由于视频分辨率切换时长的限制而控制视频分片内容的时长,从而便于更加灵活的进行视频编码方法的选择。另一方面,本示例实施方式中的方法对于视频编码方法没有特殊限制,因此允许编码端按最高效的方式进行编码和视频切片,从而可以有效降低网络带宽的消耗以及存储空间的占用。下面,对于本示例实施方式的上述步骤进行更加详细的说明。在步骤s410中,当接收到分辨率切换请求时获取第一时刻,所述第一时刻为第一解码器播放的第一视频的当前播放进度时刻。本公开中的视频分辨率切换方法可以应用在同一终端,如本地多源视频播放等;也可以应用于不同的终端,如网络视频播放等;当然,还可以根据需求应用在其他场景中,本示例实施方式中对此不做特殊限定。参考图5所示,本示例实施方式中将以网络视频播放的场景为例进行说明。在网络视频播放的场景中包括客户端以及服务器;视频是由一帧帧的图片(即视频帧)组成,由于视频本身的数据量很大且视频帧之间具有极强的相关性,因此会有大量的冗余信息;上述服务器主要作用之一是通过编码器在视频传输之前对视频进行编码,采用压缩技术将数据中的冗余信息去掉,形成视频分片。此外,在服务器上还可以存储有视频的分辨率信息等其他信息;例如如下表一所示:表一视频id名称分辨率源地址abcd标清480×360(360p)http://l92.168.1.1/abcd.flvdefg高清848x480(480p)http://l92.168.1.1/defg.flvhijk超清1280x720(720p)http://l92.168.1.1/hijk.flvlmnp蓝光1920×1080(1080p)http://l92.168.1.1/lmnp.flv客户端与服务器之间通信连接。客户端的作用之一是利用与视频分辨率对应的解码器对服务器传输来的视频分片进行解码,还原成与原始视频接近的一系列视频帧,并通过显示窗口展示给用户供用户观看。此外,客户端还需要根据需求,向服务器发送视频获取请求,例如,通过视频的源地址(url地址),向服务器请求对应的视频资源等;同时,客户端也可以提供面向用户的交互界面,以接收用户的输入信息。继续参考图5所示,本示例实施方式中,在初始阶段服务器向客户端传输480p的第一视频的视频分片。参考图6所示,第一视频的视频分片的内容时长为3.0秒。相应的,解码端通过与第一视频适配的第一解码器,如用于解码480p视频分片的解码器对第一视频进行解码并播放。参考图7所示,客户端根据服务器提供的分辨率信息列表,向客户提供视频分辨率切换选项;当用户选择第一视频的分辨率之外的分辨率选项后,则可以生成一分辨率切换请求。继续参考图6所示,在第一解码器播放的第一视频中播放至第(n-1)视频分片时,接收到分辨率切换请求;在接收到分辨率切换请求之后,客户端可以获取第一时刻,所述第一时刻为第一解码器播放的第一视频的当前播放进度时刻t0;同时,接收到分辨率切换请求的时刻也可用第一时刻t0近似表示。在本示例性实施例中,是根据用户的输入信息,生成所述分辨率切换请求。但在本公开的其他示例性实施例中,也可以通过其他方式生成所述分辨率切换请求。举例而言,可以根据当前网络状态信息,生成所述分辨率切换请求,例如,如果检测到当前用户的网络下行速度在持续的一段时间内变的较快,远超出当前播放的第一视频所需的码率,则可以自动生成分辨率切换请求,请求提升分辨率;如果检测到当前用户的网络下行速度有一段时间内变慢,低于当前播放的第一视频所需的码率,则可以自动生成分辨率切换请求,请求降低分辨率。再举例而言,也可以根据所述第一视频的当前播放状态,生成所述分辨率切换请求;例如,根据当前播放第一视频的缓冲时长以及帧率等信息,生成所述分辨率切换请求;如当当前播放第一视频的缓冲时长过长或者缓冲频率过于频繁时,则可以自动生成分辨率切换请求,请求降低分辨率。当然,在本公开的其他示例性实施例中,也可以通过其他方式生成分辨率切换请求,这些均属于本公开的保护范围。在步骤s420中,查询第二视频中,时间戳在所述第一时刻后且距所述第一时刻最近的关键帧。本示例实施方式中,所述第二视频与所述第一视频内容相同,但分辨率不同。例如,上述第一视频的分辨率为848x480,第二视频的分辨率为1280x720等。与第一视频类似,第二视频的视频帧之间通常具有极强的相关性,因此会有大量的冗余信息;进而需要对第二视频进行编码,采用压缩技术将数据中的冗余信息去掉,形成视频分片。在各所述视频分片中,均包括一关键帧;视频分片中除关键帧之外的视频帧,在解码时则需要依赖同一视频分片中的已解码视频帧的数据。本示例实施方式中,每个视频分片开始的第一帧为关键帧,且记录有关键帧的时间戳信息。时间戳信息用于表示关键帧对应的播放进度时刻,从而告知解码器关键帧应该在何时进行显示;例如,时间戳为45.2秒,则说明该关键帧对应的播放进度时刻为整个视频的第45.2秒。当然,在本公开的其他示例性实施例中,关键帧也可以是视频分片中的其他视频帧,并不局限于视频分片的第一帧。如上述步骤s410中所述,分辨率切换请求可能对应切换至不同的分辨率;因此,本示例实施方式中,可以首先根据所述分辨率切换请求,确定目标分辨率,即将要切换到的分辨率。在确定目标分辨率之后,则可以从多个候选视频中,选择分辨率与所述目标分辨率一致的视频作为所述第二视频;其中,所述候选视频与所述第一视频内容相同分辨率不同。例如,确定的目标分辨率为1280x720,则可以从上述表一中“标清”、“超清”、“蓝光”三个候选视频中,选择对应1280x720分辨率的“超清”视频作为上述第二视频。继续参考图5所示,在选择了第二视频之后,则可以向服务器发送视频获取请求,请求获取第二视频。本示例实施方式中,上述视频获取请求可以包括请求获取的视频的url(uniformresourcelocator,统一资源定位符)信息,例如,可以包括第二视频对应的源地址“http://l92.168.1.1/hijk.flv”。此外,视频获取请求还可以包括上述的第一时刻t0。服务器在接收到视频获取请求之后,则可以根据url信息确定第二视频,并根据所述第一时刻t0,在所述第二视频中,查询时间戳在所述第一时刻之后且距离所述第一时刻最近的关键帧,即目标关键帧。本示例实施方式中所述的查询是指,给定一个目标播放进度时刻,找到离这个目标播放进度时刻最近的一个关键帧。参考图8所示,一般而言,有backward查询和forward查询两种查询方式;其中,backward查询是找到小于等于目标播放进度时刻,且距离目标播放进度时刻最近的关键帧;forward查询则是找到大于等于目标播放进度时刻,且距离目标播放进度时刻最近的关键帧。举例而言,本示例实施方式中,可以采用使用forward查询的模式在第二视频中查询目标关键帧。查询到的目标关键帧之后,第一视频和第二视频的对应关系如图9所示,其中,目标关键帧的时间戳对应的时刻记为第二时刻t1,第二时刻t1与第一时刻t0之间的时间间隔记为delta,即t1=t0+delta。此外,本示例实施方式中不要求第一视频和第二视频的编码方式相同;相反,本示例实施方式中允许服务器按最高效的方式分别对第一视频和第二视频进行编码和视频切片,从而可以有效降低网络带宽的消耗以及存储空间的占用。举例而言,480p视频可以使用h264(以h.26x系列为名称命名的视频编码标准之一)编码,而720p视频可以使用hevc(highefficiencyvideocoding,高效视频编码标准)编码等等。在步骤s430中,在所述第一视频播放至所述第二时刻时,通过第二解码器对所述第二视频的视频分片进行解码并从所述第二时刻开始播放。继续参考图5所示,服务器在查询到目标关键帧之后,即可开始将第二视频的视频分片传输至客户端;例如,可以从目标关键帧所在的视频分片开始传输。本示例实施方式中,客户端在所述第二时刻之前,需要获取目标关键帧所在的视频分片并缓存在本地(如客户端所在的终端设备),从而便于第二解码器更加快速的解码,更好的实现无缝切换。本示例实施方式中,客户端在接收第二视频的视频分片的同时,需要继续通过第一解码器播放第一视频delta时间,直至到达第二时刻t1。参考图10所示,在第二时刻t1与第一时刻t0之间,还可以在显示窗口向用户展示提示信息,提示用户分辨率切换过程正在进行。在到达第二时刻t1之后,客户端重置解码器,通过与第二视频适配的第二解码器对第二视频的视频分片进行解码。本示例实施方式中,第二解码器可以首先对接收到的视频分片中的关键帧进行解码,得到对应的已解码视频帧;之后,根据所述视频分片中各编码视频帧与当前的已解码视频帧之间的依赖关系,对各所述编码视频帧进行解码。例如,视频分片中包括视频帧p1至视频帧p100,其中视频帧p1为关键帧,则首先对视频帧p1进行解码,再根据解码之后的视频帧p1以及视频帧p2相对视频帧p1的变化信息(用于表示上述的依赖关系),对视频帧p2进行解码;依次类推,直至完成所有视频帧的解码。在对视频分片解码之后,则可以通过重新设置的显示窗口向用户展示,从而完成第一视频和第二视频之间的无缝切换。此外,参考图11所示,还可以在显示窗口向用户展示提示信息,提示用户分辨率切换过程已经完成。由上可知,本示例实施方式中的视频分辨率切换方法中,首先查询待切换到的第二视频中与当前播放进度时刻最近的关键帧,其次通过查询到的关键帧的时间戳确定切换时刻,进而可以在切换时刻直接对第二视频的视频分片进行解码播放,完成分辨率无缝切换。相比于现有技术而言,一方面,本示例实施方式的方法中的分辨率切换时间点无需一定发生的视频分片的边界,因此不会由于视频分辨率切换时长的限制而控制视频分片内容的时长,从而便于更加灵活的进行视频编码方法的选择。另一方面,本示例实施方式中的方法对于视频编码方法没有特殊限制,因此允许编码端按最高效的方式进行编码和视频切片,从而可以有效降低网络带宽的消耗以及存储空间的占用。举例而言,当不同的分辨率的视频使用不同的编码方式时,比如480p视频使用h264编码,而720p视频使用hevc编码,如果采用传统方法进行分辨率切换,则会因为编码器本身特性的不同,导致两种分辨率的视频分片完全对齐的难度非常高,进而会带来很大的的编码效率损伤;而使用本示例实施方式中的方法,则可以有效的解决此类问题,并且同样能为用户带来分辨率无缝切换的体验。本示例实施方式中还提供了另一种视频分辨率切换方法。该视频分辨率切换方法可以应用于上述服务器105,也可以应用于上述终端设备101、102、103中的一个或多个,本示例性实施例中对此不做特殊限定。参考图12所示,该视频分辨率切换方法可以包括以下步骤s1210至步骤s1230:步骤s1210.接收客户端发送的包括第一时刻的视频获取请求;所述第一时刻为所述客户端在接收到分辨率切换请求时,获取的第一解码器播放的第一视频的当前播放进度时刻;步骤s1220.根据所述第一时刻,在所述第二视频中,查询时间戳在所述第一时刻后且距所述第一时刻最近的关键帧;其中所述第二视频与所述第一视频内容相同分辨率不同,且所述第二视频被编码为多个视频分片,各所述视频分片均包括关键帧;步骤s1230.将所述第二视频的视频分片发送给所述客户端,以使所述客户端在所述第一视频播放至所述第二时刻时,通过第二解码器对所述第二视频的视频分片进行解码并从所述第二时刻开始播放;所述第二时刻为查询到的所述关键帧的时间戳。上述视频分辨率切换方法中各步骤或动作的具体细节已经在前一示例性实施例中进行了详细的描述,因此此处不再赘述。应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。进一步的,本示例实施方式中,还提供了一种视频分辨率切换装置。该视频分辨率切换装置可以应用于一服务器或终端设备。参考图13所示,该视频分辨率切换装置1300可以包括第一时刻获取模块1310、关键帧查询模块1320以及第二视频切换模块1330。其中:第一时刻获取模块1310,用于在接收到分辨率切换请求时获取第一时刻,所述第一时刻为第一解码器播放的第一视频的当前播放进度时刻;关键帧查询模块1320,用于查询第二视频中,时间戳在所述第一时刻后且距所述第一时刻最近的关键帧;其中所述第二视频与所述第一视频内容相同分辨率不同,且所述第二视频被编码为多个视频分片,各所述视频分片均包括关键帧;第二视频切换模块1330,用于将查询到的所述关键帧的时间戳作为第二时刻,并在所述第一视频播放至所述第二时刻时,通过第二解码器对所述第二视频的视频分片进行解码并从所述第二时刻开始播放。在本公开的一种示例性实施例中,所述装置还包括切换请求生成模块,用于根据接收到的用户输入信息,生成所述分辨率切换请求;或者,用于根据当前网络状态信息,生成所述分辨率切换请求;或者,用于根据所述第一视频的当前播放状态,生成所述分辨率切换请求。在本公开的一种示例性实施例中,所述装置还包括,第二视频确定模块,用于根据所述分辨率切换请求,确定目标分辨率;以及,从多个候选视频中,选择分辨率与所述目标分辨率一致的视频作为所述第二视频;其中,所述候选视频与所述第一视频内容相同分辨率不同。在本公开的一种示例性实施例中,所述关键帧查询模块1320通过下述方法查询第二视频中,时间戳在所述第一时刻后且距所述第一时刻最近的关键帧:向服务器发送包括所述第一时刻的视频获取请求,以通过所述服务器根据所述第一时刻,在所述第二视频中,查询时间戳在所述第一时刻后且距所述第一时刻最近的关键帧。在本公开的一种示例性实施例中,所述第二视频切换模块1330通过下述方法对所述第二视频的视频分片进行解码:对所述视频分片中的所述关键帧进行解码得到对应的已解码视频帧;以及根据所述视频分片中各编码视频帧与当前的已解码视频帧之间的依赖关系,对各所述编码视频帧进行解码。在本公开的一种示例性实施例中,所述装置还包括视频分片缓存模块,用于在所述第二时刻之前,获取包括查询到的所述关键帧的视频分片并缓存。在本公开的一种示例性实施例中,所述第一视频和所述第二视频的编码方式不同。进一步的,本示例实施方式中,还提供了一种视频分辨率切换装置。该视频分辨率切换装置可以应用于一服务器或终端设备。参考图14所示,该视频分辨率切换装置1400可以包括视频获取请求接收模块1410、关键帧查询模块1420以及第二视频传输模块1430。其中:视频获取请求接收模块1410,用于接收客户端发送的包括第一时刻的视频获取请求;所述第一时刻为所述客户端在接收到分辨率切换请求时,获取的第一解码器播放的第一视频的当前播放进度时刻;关键帧查询模块1420,用于根据所述第一时刻,在第二视频中,查询时间戳在所述第一时刻后且距所述第一时刻最近的关键帧;其中所述第二视频与所述第一视频内容相同分辨率不同,且所述第二视频被编码为多个视频分片,各所述视频分片均包括关键帧;第二视频传输模块1430,用于将所述第二视频的视频分片发送给所述客户端,以使所述客户端在所述第一视频播放至第二时刻时,通过第二解码器对所述第二视频的视频分片进行解码并从所述第二时刻开始播放;所述第二时刻为查询到的所述关键帧的时间戳。上述视频分辨率切换装置中各模块或单元的具体细节已经在对应的视频分辨率切换方法中进行了详细的描述,因此此处不再赘述。应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1