视频编码、视频解码方法和装置、电子设备及存储介质与流程

文档序号:23177002发布日期:2020-12-04 14:07阅读:121来源:国知局
视频编码、视频解码方法和装置、电子设备及存储介质与流程

本申请通信技术领域,尤其涉及一种视频编码、视频解码方法和装置、电子设备及存储介质。



背景技术:

目前,对于一些要求数据传输时效性的视频处理场景,可以使用低延迟编码方式对视频进行编码。例如,在vr编码中,主视角采用的是高清码流,其他视角采用的是低清码流。当使用者发生转头动作时,其他视角的码流需要切换到高清码流,避免使用者由于视角内的画面清晰度发生改变(由高清晰度的画面切换到低清晰度的画面)产生晕眩等不适反应,影响使用者的视觉体验。为了快速进行低清视频流到高清视频流的切换,vr编码需要使用低延迟编码。

相关技术中采用的低延迟编码一般为ldp编码。在编码一个gop内的每一个p帧时,既需要参考i帧,又需要参考前一个p帧,因此,编解码p帧的过程是串行的。在随机解码非第一个p帧时,需要等待前面的帧解码完才能解码该帧,即,需要首先解码其前面参考的帧,因此会有至少3帧的延迟,延迟时间大,不能满足快速转换视频流的需求。

例如,在vr编码中,一个gop中的最后一个帧需要前面所有的帧均解码完成才能解码该帧。当vr发生视角切换时,延迟过大,会大大降低使用体验。

因此,相关技术中的视频编解码方式存在由于编解码时延过大导致数据传输时效性差的问题。



技术实现要素:

本申请提供了一种视频编码、视频解码方法和装置、电子设备及存储介质,以至少解决相关技术中的视频编解码方式存在由于编解码时延过大导致数据传输时效性差的问题。

根据本申请实施例的一个方面,提供了一种视频编码方法,包括:获取待编码视频的待编码图像组,其中,所述待编码图像组包括待编码关键帧和多个待编码非关键帧;确定与所述待编码图像组匹配的目标编码模式,其中,所述目标编码模式用于指示在多个所述待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有所述待编码非关键帧参考所述待编码关键帧,第二个待编码片段中的各个所述待编码非关键帧参考位于各个所述待编码非关键帧之前的至少一个非关键帧;按照所述目标编码模式对所述待编码图像组进行编码。

根据本申请实施例的另一个方面,还提供了一种视频解码方法,包括:获取待解码视频的待解码图像组,其中,所述待解码图像组包括待解码关键帧和多个待解码非关键帧;确定与所述待解码图像组对应的目标参考关系,其中,所述目标参考关系用于指示在多个所述待解码非关键帧所划分为的两个待解码片段中,第一个所述待解码片段中的所有所述待解码非关键帧参考所述待解码关键帧,第二个所述待解码片段中的各个所述待解码非关键帧参考位于各个所述待解码非关键帧之前的至少一个非关键帧;按照所述目标参考关系对所述待解码图像组进行解码。

根据本申请实施例的又一个方面,还提供了一种视频编码装置,包括:获取单元,用于获取待编码视频的待编码图像组,其中,所述待编码图像组包括待编码关键帧和多个待编码非关键帧;确定单元,用于确定与所述待编码图像组匹配的目标编码模式,其中,所述目标编码模式用于指示在多个所述待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有所述待编码非关键帧参考所述待编码关键帧,第二个待编码片段中的各个所述待编码非关键帧参考位于各个所述待编码非关键帧之前的至少一个非关键帧;编码单元,用于按照所述目标编码模式对所述待编码图像组进行编码。

可选地,所述编码单元包括:确定模块,用于确定与所述待编码图像组对应的两个所述待编码片段,其中,每个所述待编码片段包括至少一个所述待编码非关键帧;第一编码模块,用于按照所述目标编码模式,对每个所述待编码片段中的每个所述待编码非关键帧进行编码。

可选地,所述确定模块包括:第一确定子模块,用于根据目标延迟时间和目标编解码时间,确定目标级数,其中,所述目标延迟时间为允许的最大延迟时间,所述目标编解码时间为一个视频帧的编解码时间,所述编解码时间包含编码所用的时间和解码所用的时间,所述目标级数为在所述目标延迟时间内允许编解码出的非关键帧的数量;第二确定子模块,用于按照所述目标级数,确定与所述待编码图像组对应的两个所述待编码片段,其中,所述第二个待编码片段中包含的所述待编码非关键帧的数量小于或者等于所述目标级数与1的差值。

可选地,所述第一确定子模块包括:第一确定子单元,用于确定所述目标延迟时间与第一编解码时间的目标时间差值,其中,所述第一编解码时间为一个关键帧的所述编解码时间;第二确定子单元,用于将所述目标时间差值与第二编解码时间的商,确定为所述目标级数,其中,所述第二编解码时间为一个非关键帧的所述编解码时间,所述目标编解码时间包含所述第一编解码时间和所述第二编解码时间。

可选地,编码单元包括:第二编码模块,用于在当前待编码视频帧为所述待编码关键帧的情况下,对所述当前待编码视频帧进行帧内编码;第三编码模块,用于在当前待编码视频帧属于所述第一个待编码片段的情况下,按照所述目标编码模式,将所述待编码关键帧作为所述当前待编码视频帧的参考视频帧,对所述当前待编码视频帧进行目标编码;第四编码模块,用于在当前待编码视频帧属于所述第二个待编码片段的情况下,按照所述目标编码模式,将目标参考视频帧作为所述当前待编码视频帧的参考视频帧,对所述当前待编码视频帧进行目标编码,其中,所述目标参考视频帧包含位于所述当前待编码视频帧之前的至少一个非关键帧;其中,所述目标编码为以下之一:帧间编码,帧内编码结合帧间编码。

可选地,所述第四编码模块包括:第三确定子模块,用于在与所述当前待编码视频帧对应的参考视频帧的数量为多个的情况下,按照所述目标编码模式,将所述待编码关键帧、以及位于所述当前待编码视频帧之前的至少一个非关键帧,确定为与所述当前待编码视频帧对应的所述目标参考视频帧;编码子模块,用于将所述目标参考视频帧作为所述当前待编码视频帧的参考视频帧,对所述当前待编码视频帧进行目标编码。

可选地,所述编码单元包括:第五编码模块,用于按照所述目标编码模式,对所述待编码图像组中处于所述第一个待编码片段内的所有所述待编码非关键帧进行并行编码。

可选地,获取单元包括:获取模块,用于在全景视频中目标对象的主视角区域由第一视角区域切换到第二视角区域的情况下,获取所述待编码视频的所述待编码图像组,其中,所述待编码视频为待编码全景视频中与所述主视角区域对应的部分,所述待编码图像组为发生视角切换后的第一个视频帧所在的图像组,与所述主视角区域对应的清晰度为第一清晰度,与所述全景视频中除了所述主视角区域以外的其他区域对应的清晰度为第二清晰度,所述第一清晰度高于所述第二清晰度。

根据本申请实施例的又一个方面,还提供了一种视频解码装置,包括:获取单元,用于获取待解码视频的待解码图像组,其中,所述待解码图像组包括待解码关键帧和多个待解码非关键帧;确定单元,用于确定与所述待解码图像组对应的目标参考关系,其中,所述目标参考关系用于指示在多个所述待解码非关键帧所划分为的两个待解码片段中,第一个所述待解码片段中的所有所述待解码非关键帧参考所述待解码关键帧,第二个所述待解码片段中的各个所述待解码非关键帧参考位于各个所述待解码非关键帧之前的至少一个非关键帧;解码单元,用于按照所述目标参考关系对所述待解码图像组进行解码。

可选地,所述解码单元包括:第一解码模块,用于在当前待解码视频帧为所述待解码关键帧的情况下,对所述待解码关键帧进行帧内解码;第二解码模块,用于在当前待解码视频帧属于第一个所述待解码片段的情况下,按照所述目标参考关系,将所述待解码关键帧作为所述当前待解码视频帧的参考视频帧,对所述当前待解码视频帧进行目标解码;第三解码模块,用于在当前待解码视频帧属于第二个所述待解码片段的情况下,按照所述目标参考关系,将目标参考视频帧作为所述当前待解码视频帧的参考视频帧,对所述当前待解码视频帧进行目标解码,其中,所述目标参考视频帧包含位于所述当前待解码视频帧至少一个非关键帧;其中,所述目标解码为以下之一:帧间解码,帧内解码结合帧间解码。

可选地,所述第三解码模块包括:确定子模块,用于在与所述当前待解码视频帧对应的参考视频帧的数量为多个的情况下,按照所述目标参考关系,将所述待解码关键帧、以及位于所述当前待解码视频帧之前的至少一个非关键帧,确定为与所述当前待解码视频帧对应的所述目标参考视频帧;解码子模块,用于将所述目标参考视频帧作为所述当前待解码视频帧的参考视频帧,对所述当前待解码视频帧进行目标解码。

可选地,所述解码单元包括:第四解码模块,用于按照所述目标参考关系,对所述待解码图像组中处于第一个所述待解码片段内的所有所述待解码非关键帧进行并行解码。

可选地,获取单元包括:获取模块,用于在全景视频中目标对象的主视角区域由第一视角区域切换到第二视角区域的情况下,获取所述待解码视频的所述待解码图像组,其中,所述待解码视频为待解码全景视频中与所述主视角区域对应的部分,所述待解码图像组为发生视角切换后的第一个视频帧所在的图像组,与所述主视角区域对应的清晰度为第一清晰度,与所述全景视频中除了所述主视角区域以外的其他区域对应的清晰度为第二清晰度,所述第一清晰度高于所述第二清晰度。

根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。

根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。

在本申请实施例中,采用分段编解码的方式,通过获取待编码视频的待编码图像组,其中,待编码图像组包括待编码关键帧和多个待编码非关键帧;确定与待编码图像组匹配的目标编码模式,其中,目标编码模式用于指示在多个待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有待编码非关键帧参考待编码关键帧,第二个待编码片段中的各个待编码非关键帧参考位于本视频帧之前的至少一个非关键帧;按照目标编码模式对待编码图像组进行编码,由于对图像组的非关键帧进行分段,第一个分段的所有非关键帧参考关键帧进行编解码,第二个分段的非关键帧参考其前的至少一个非关键帧,一个非关键帧最多只需等待关键帧的解码时间、第一个分段的最后一个非关键帧的解码时间以及第二个分段最后一个非关键帧之前的所有非关键帧的解码时间就能解码,可以实现减少编解码等待时间的目的,达到了减少编解码时延、提高编解码效率的技术效果,进而解决了相关技术中的视频编解码方式存在由于编解码时延过大导致数据传输时效性差的问题。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

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

图1是根据本发明实施例的一种可选的视频编码方法的硬件环境的示意图;

图2是根据本申请实施例的一种可选的视频编码方法的流程示意图;

图3是一种可选的ldp编码模式的示意图;

图4是根据本申请实施例的一种可选的vr视角的示意图;

图5是根据本申请实施例的一种可选的视频编码方法的示意图;

图6是根据本申请实施例的一种可选的视频解码方法的流程示意图;

图7是根据本申请实施例的一种可选的视频编解码方法的示意图;

图8是根据本申请实施例的一种可选的视频编解码方法的流程示意图;

图9是根据本申请实施例的一种可选的视频编码装置的结构框图;

图10是根据本申请实施例的一种可选的视频编码装置的结构框图;

图11是根据本申请实施例的一种可选的电子设备的结构框图。

具体实施方式

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

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先,在对本申请实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:

1、视频编码:是指通过压缩技术,将原始视频格式的文件转换成另一种视频格式文件的方式,常见的视频编解码标准有h.264、h.265、avs、av1等等。

2、延迟:是网络传输中的一个重要指标,测量了数据从一个端点到另外一个端点所需的时间,一般使用毫秒、秒等作为其单位。

3、编码延迟:是指编码过程中产生的延迟,即视频帧输入至编码完成生成码流所消耗的时间。

4、编码帧类型:编码帧通常分为3种类型:i帧(内部编码帧)亦称为关键帧,作为视频流中的随机访问点,采取帧内预测的方式编码(帧内编码),不参考其他帧,通常编码质量较高,压缩效率低;p帧(预测编码帧),通过参考前向的i帧或前向的其他p帧,采用帧间预测、或者帧内与帧间预测结合的方式编码,压缩效率高;b帧(双向预测编码帧),可参考前向与后向的帧进行预测编码,压缩效率最高。

5、gop(groupofpictures,编码组):在视频编码中,gop是一组多帧连续编码帧序列,用于辅助解码时随机访问,通常每一个gop以i帧开头。

6、poc(pictureordercount,图像序列号):表示视频编码时,源视频帧的显示顺序。

7、ldp(lowdelayp,低延迟p帧)编码:每个gop内第一帧以i帧编码,后续帧全部以p帧编码,并且编码每个p帧时,只参考播放顺序在其前的图像。通过避免后向参考,以保证编解码顺序与显示顺序一致,降低编解码延迟。视频编码中除了ldp编码模式外,还有all-intra(全i帧)编码配置和random-access(随机访问)编码配置。

8、rtc(real-timecommunications,实时通信):狭义一般称为实时音视频,最典型的应用为直播连麦、实时音视频通话、视频会议、交互式在线教育等。

9、vr(virtualreality,虚拟现实):是指综合利用计算机图形系统和各种显示及控制等接口设备,在计算机上生成的、可交互的三维环境中提供沉浸感觉的技术。

根据本申请实施例的一个方面,提供了一种视频编码方法。可选地,在本实施例中,上述视频编码方法可以应用于如图1所示的由编码端(编码设备)102、解码端(解码设备)104和播放设备106所构成的硬件环境中。如图1所示,编码端102通过网络与解码端104进行连接,可以在编码端102(和/或解码端104)上或独立于编码端102(和/或解码端104)设置数据库,用于为编码端102(和/或解码端104)提供数据存储服务。解码端104和播放设备106可以是独立设置的两个设备,也可以是同一设备,本实施例中对此不作限定。

如图1所示,编码端102可以用于对输入的待传输视频(或者,待传输视频中的视频帧)进行编码,得到对应的视频码流,并通过网络将视频码流传输给解码端104;解码端104可用于对接收到的视频码流进行解码,得到对应的视频(或者,视频帧),并将得到的视频(或者,视频帧)通过播放设备106进行播放。

上述网络可以包括但不限于:广域网、城域网或局域网,编码端102和解码端104可以是终端设备,也可以是服务器,可以但不限于是以下至少之一:pc、手机、平板电脑、vr设备等。本申请实施例的视频编码方法可以由编码端102来执行,该编码端102可以是终端设备,还可以是服务器。其中,终端设备执行本申请实施例的视频编码方法也可以是由安装在其上的客户端来执行。

以由编码端102来执行本实施例中的视频编码方法为例,图2是根据本申请实施例的一种可选的视频编码方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:

步骤s202,获取待编码视频的待编码图像组,其中,待编码图像组包括待编码关键帧和多个待编码非关键帧。

本实施例中的视频编码方法可以应用于具有视频传输需求的场景,例如,直播,rtc,vr等,上述视频可以是直播视频、实时音视频、全景视频等,本实施例中对此不作限定。

编码设备可以对待编码视频进行编码,待编码视频可以是待传输至解码端并由播放设备进行播放的视频。待编码视频可以包含有多个图像组,每个图像组可以包含一个关键帧和多个非关键帧,一个图像组内的视频帧的poc可以从0开始连续编号。poc=0的视频帧可以是关键帧,其余的视频帧为非关键帧。待编码视频当前待编码的图像组,即,待编码图像组。待编码图像组可以包含待编码关键帧和多个待编码非关键帧。

例如,当前待编码的图像组中包含9个视频帧,按照视频帧的播放顺序,9个视频帧的poc依次为:0,1,2,3,4,5,6,7,8。

步骤s204,确定与待编码图像组匹配的目标编码模式,其中,目标编码模式用于指示在多个待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有待编码非关键帧参考待编码关键帧,第二个待编码片段中的各个待编码非关键帧参考位于各个待编码非关键帧之前的至少一个非关键帧。

相关技术中,采用ldp及ldb进行编码时,由于gop的某一帧(非第一个帧及第二个帧)既参考i帧,又参考其前一帧的图像,如果要解码该帧,首先要解码其参考的帧,因此,会有最少3帧的延迟。对于一个gop中的最后一帧,需要前面所有的帧均解码完成之后才能解码该帧。

例如,ldp编码方式可以如图3所示。对于一个gop,编码每一个p帧同时参考i帧以及其前面一p帧,当解码任意一帧时,需要i帧及其前面所有的p帧均已被解码才能解码该帧,因此,需要等待i帧、以及若干个p帧的解码时间。

对于时延要求较高的场景,采用ldp及ldb进行编码延迟过大,会大大降低使用体验。例如,对于vr场景,如图4所示,用户的主视角区域是高清码流,其他视角是低清码流。用户的主视角区域会随着用户视角的转移发生切换,例如,用户的视角向左移动,主视角区域会随着向左移动。在任意时刻切换视角,需要快速将当前视角转换到高清视频流。如果采用ldp编码方式,若随机切换的时机刚好是后面的某一帧,则需要等待约1.2至1.5秒的时间,超过vr使用者可以容忍的时间,降低了使用体验。

在本实施例中,对于待编码图像组,编码设备可以确定与待编码图像组匹配的目标编码模式,或者,与待编码视频匹配的目标编码模式。上述目标编码模式用于指示在多个待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有待编码非关键帧参考待编码关键帧,第二个待编码片段中的各个待编码非关键帧参考位于其前的至少一个非关键帧。

采用上述片段划分方式,能够在视觉切换时,用较快的速度编解码出帧,因为人的动态视觉对运动快的物体细节不敏感,因此,并行片段(第一个片段)内帧能够较快速度显示出来,主观上不容易被人察觉到细节误差较大;随后随着切换到串行帧,帧间误差进一步降低,视觉固定后即使对细节较为敏感也能够获得更好的画质。

需要说明的是,目标编码模式描述了视频帧之间的参考关系,其可以有不同的表述方式,例如,目标编码模式用于指示在多个待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有待编码非关键帧参考待编码关键帧,第二个待编码片段的第一个待编码非关键帧参考待编码关键帧,除了第一个待编码非关键帧以外的其他待编码非关键帧参考第二个待编码片段中位于其他待编码非关键帧之前的至少一个非关键帧。

待编码片段包含的待编码非关键帧的数量可以是大于或者等于1的整数,对于第一个待编码片段,其包含的待编码非关键帧的数量可以是大于1的整数。每个待编码片段包含的待编码非关键帧的数量可以是相同,也可以是不同的,本实施例中对此不作具体限定。

目标编码模式可以是根据配置信息指示的,该配置信息可以是与目标编码模式对应的编码规则,该编码规则可以包括但不限于:视频帧的分段规则,视频帧的参考规则,视频帧的编码方式(例如,帧内编码,帧间编码,帧内编码结合帧间编码),还可以包含其他编码规则。该配置信息也可以是用于指示视频帧之间参考关系的编码指示信息,也就是,第几个视频帧参考第几个视频帧,该编码指示信息还可以指示各个视频帧的编码方式。本实施例中对此不作限定。

步骤s206,按照目标编码模式对待编码图像组进行编码。

在确定出目标编码模式之后,编码设备可以按照目标编码模式对待编码图像组进行编码,得到对应的视频码流。如果目标编码模式是通过编码规则指示的,编码设备可以根据目标编码规则确定出各个待编码非关键帧的参考视频帧。如果目标编码模式是通过编码指示信息指示的,编码设备可以根据编码指示信息确定出各个待编码非关键帧的参考视频帧。编码设备可以根据各个待编码非关键帧的参考视频帧,按照各个待编码非关键帧对应的编码方式对各个待编码非关键帧进行编码。

编码得到的视频码流内的每一帧可以包含这一帧编码时参考了哪些帧(也就是,参考关系)的信息,即,用于指示视频帧之间的参考关系的指示信息。编码设备可以通过网络将得到的视频码流传输给解码设备。

需要说明的是,除了视频帧以外,待编码视频还可以包含其他数据,例如,对应的音频数据,字幕信息等等。对于其他数据,编码设备可以采用一定的数据压缩方式进行数据压缩,得到对应的数据码流,通过网络传输给解码端,采用的数据压缩方式和传输方式(例如,与视频码流一起传输、单独进行传输等)可以根据需要进行配置,本实施例中对此不作限定。

在本实施例中,通过采用分段编解码的方式,图像组的非关键帧被划分成两个分段,第一个片段中的所有非关键帧参考关键帧,第二个片段中的各非关键帧参考其前的至少一个非关键帧,图像组的多个视频帧之间不再是链式参考关系,可以减少编解码的时延,加快编解码的速度。

例如,对于vr场景,若随机切换的时机是后面的某一帧,需要等待的时间包括:其所在的图像组的i帧、以及与其具有关联关系(直接参考关系,间接参考关系)的p帧的编解码时间,相对于等待其所在的图像组中位于其前的全部视频帧的编解码时间,可以缩短等待时间,快速将当前视角转换到高清视频流,从而提升用户的使用体验。

通过上述步骤s202至步骤s206,通过获取待编码视频的待编码图像组,其中,待编码图像组包括待编码关键帧和多个待编码非关键帧;确定与待编码图像组匹配的目标编码模式,其中,目标编码模式用于指示在多个待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有待编码非关键帧参考待编码关键帧,第二个待编码片段中的各个待编码非关键帧参考位于各个待编码非关键帧之前的至少一个非关键帧;按照目标编码模式对待编码图像组进行编码,解决了相关技术中的视频编解码方式存在由于编解码时延过大导致数据传输时效性差的问题,减少了编解码时延,提高编解码效率。

作为一种可选的实施例,按照目标编码模式对待编码图像组进行编码包括:

s11,确定与待编码图像组对应的两个待编码片段,其中,每个待编码片段包括至少一个待编码非关键帧;

s12,按照目标编码模式,对每个待编码片段中的每个待编码非关键帧进行编码。

基于目标编码模式,编码设备可以首先确定与待编码图像组对应的两个待编码片段,每个待编码片段可以包括至少一个待编码非关键帧。不同的待编码片段包含的待编码非关键帧的数量可以是相同的,也可以是不同的,本实施例中对此不作限定。

按照目标编码模式所指示的参考关系,编码设备可以首先确定每个待编码片段中的每个待编码非关键帧的参考视频帧,然后,根据每个待编码非关键帧对应的参考视频帧,编码设备可以对每个待编码非关键帧进行编码。不同的待编码视频帧的参考视频帧可以是相同的,也可以是不同的。

通过本实施例,通过对图像组的非关键帧进行分组,并按照分组对各个非关键帧进行编码,可以提高视频编码的准确性和可靠性。

作为一种可选的实施例,确定与待编码图像组对应的两个待编码片段包括:

s21,根据目标延迟时间和目标编解码时间,确定目标级数,其中,目标延迟时间为允许的最大延迟时间,目标编解码时间为一个视频帧的编解码时间,编解码时间包含编码所用的时间和解码所用的时间,目标级数为在目标延迟时间内允许编解码出的非关键帧的数量;

s22,按照目标级数,确定与待编码图像组对应的两个待编码片段,其中,第二个待编码片段中包含的待编码非关键帧的数量小于或者等于目标级数与1的差值。

对于待编码图像组,每个待编码片段中包含的待编码非关键帧的数量可以是预先配置的,编码设备可以读取与待编码视频对应的分段配置信息,根据分段配置信息确定出各个待编码片段包含的待编码非关键帧,从而确定与待编码图像组对应的两个待编码片段。

可选地,与待编码图像组对应的两个待编码片段也可以是根据时延需求(目标延迟时间)和编解码一帧的用时(目标编解码时间)进行估计的:在编码一个gop内某一帧时,编码设备可以根据时延需求和编解码一帧的用时估计出用户能够忍耐的最大延迟帧数,根据最大延迟帧数计算出最小并行帧数或者最大串行帧数(目标级数),按照最小并行帧数划分第一个待编码片段包含的非关键帧,或者,按照最大串行帧数划分第二个待编码片段包含的非关键帧,从而确定与待编码图像组对应的两个待编码片段。

上述时延需求可以是用户可忍受的最大解码延时(允许的最大延迟时间),例如,对于vr场景(或者,类似的全景视频场景),时延需求是指:切换视角之后,用户可以忍受的、当前视角转换到高清视频流所需等待的时间。上述时延需求可以是人工输入的(用户手动输入的,根据经验值等预先设定的默认值),也可以是根据某一对象的对象特征(例如,用于表征对象状态的特征)计算得到的,或者,根据多个对象的对象特征计算得到的,本实施例中对此不作限定。

编解码一帧的用时为一个视频帧的编解码时间,编解码时间包含编码所用的时间和解码所用的时间。编解码一帧的用时是一个估计值,是在连续传输视频流的前提下,编解码一个视频帧(图像帧,例如,i帧,p帧)的、统计性的估计时间。编解码一帧的用时可以是由人工输入的(用户手动输入,相关人员根据经验值等预先设定),也可以是在编解码的过程中基于统计值进行动态调整的,本实施例中对此不作限定。

编码设备可以根据时延需求和编解码一帧的用时,估计出用户能够忍耐的最大延迟帧数,也就是,在目标延迟时间内允许编解码出的视频帧的数量,可以是所有类型的视频帧(例如,i帧和p帧)的数量,也可以是特定类型的视频帧(例如,p帧)的数量。

根据最大延迟帧数,编码设备可以确定与待编码图像组对应的目标级数,也就是,在目标延迟时间内允许编解码出的非关键帧的数量,由于第二个待编码片段的第一个非关键帧参考了第一个待编码片段的最后一个非关键帧,因此,目标级数与1的差值是为了满足最大延迟帧数的需求,第二待编码片段内最多允许包含的非关键帧的数量。如果最大延迟帧数是关键帧和非关键帧的总数量,目标级数是最大延迟帧数与关键帧的数量的差值,如果最大延迟帧数是非关键帧的数量,目标级数为最大延迟帧数。

按照目标级数,编码设备可以确定与待编码图像组对应的两个待编码片段,第二个待编码片段包含的待编码非关键帧的数量最多为目标级数与1的差值,第一待编码片段包含的待编码非关键帧的数量为待编码图像组中包含的待编码非关键帧的总数量与第二待编码片段包含的待编码非关键帧的数量的差值。

需要说明的是,由于编解码器会有波动,本实施例中是根据统计得到的延时动态估计目标级数,从而调整图形组中的非关键帧的分段方式。

例如,如图5所示,目标级数为5,对应地,最小并行帧数为4,最大串行帧数为5,图像组中包含9个视频帧,分别为一个i帧和8个p帧,8个p帧之间被分成了2个片段,第一个片段包含的p帧的数量为4,第一个片段包含的p帧的数量为4。

通过本实施例,根据时延需求和编解码一帧的用时估计出目标级数(用户能够忍耐的p帧的最大延迟帧数),可以提高编解码速度,保证编解码时延能够满足时延需求,提高用户的使用体验。

作为一种可选的实施例,根据目标延迟时间和目标编解码时间,确定目标级数包括:

s31,确定目标延迟时间与第一编解码时间的目标时间差值,其中,第一编解码时间为一个关键帧的编解码时间;

s32,将目标时间差值与第二编解码时间的商,确定为目标级数,其中,第二编解码时间为一个非关键帧的编解码时间,目标编解码时间包含第一编解码时间和第二编解码时间。

由于编解码方式不同,一个图像组的关键帧(例如,i帧)的编解码时间和非关键帧(例如,p帧)的编解码时间存在差异,目标编解码时间可以包括:与一个图像组的关键帧对应的第一编解码时间和与一个图像组的非关键帧对应的第二编解码时间。编码设备可以确定目标延迟时间、第一编解码时间和第二编解码时间,并根据第一编解码时间和第二编解码时间确定目标级数。

可选地,在本实施例中,编码设备可以计算目标延迟时间与第一编解码时间的目标时间差值,目标时间差值为允许的编解码非关键帧帧的最大延迟时间;并将目标时间差值与第二编解码时间的商,确定为目标级数(p帧的最大延迟帧数)。

例如,当可忍受的时延为t,编解码一帧i需要的时间为ti,编解码一帧p需要的时间为tp,gop内包含n个p帧,则可以计算出自适应级数l(自适应最大串行帧数,作用同目标级数)为:(t-ti)/tp,自适应最小并行帧数n为:n+1-(t-ti)/tp。根据l将一个gop内的帧划分成两个片段,第一个片段包含n个p帧,第二个片段包含(l-1)个p帧。

可选地,也可以第一个片段的p帧参考前一帧图像进行编解码,第二个片段的p帧参考i帧进行编解码,对应的编解码过程在此不作赘述。

通过本实施例,根据目标延迟时间、i帧的编解码时间和p帧的编解码时间确定最大延迟帧数,从而可以根据延时和算力(计算能力)自适应调整目标级数,可以满足应用延时需求,保证用户的使用体验。

作为一种可选的实施例,按照目标编码模式对待编码图像组进行编码包括:

s41,在当前待编码视频帧为待编码关键帧的情况下,对当前待编码视频帧进行帧内编码;

s42,在当前待编码视频帧属于第一个待编码片段的情况下,按照目标编码模式,将待编码关键帧作为当前待编码视频帧的参考视频帧,对当前待编码视频帧进行目标编码;

s43,在当前待编码视频帧属于第二个待编码片段的情况下,按照目标编码模式,将目标参考视频帧作为当前待编码视频帧的参考视频帧,对当前待编码视频帧进行目标编码,其中,目标参考视频帧包含位于当前待编码视频帧之前的至少一个非关键帧;

其中,目标编码为以下之一:帧间编码,帧内编码结合帧间编码。

如果当前待编码视频帧为待编码图像组的待编码关键帧(第一个视频帧),可以作为视频流中的一个随机访问点。编码设备可以不参考其他帧,采用帧内预测的方式对其进行编码(帧内编码),得到与待编码图像组对应的i帧(内部编码帧)。i帧通常编码质量较高,压缩效率较低。

如果当前待编码视频帧属于第一个待编码片段,则按照目标编码模式,当前待编码视频帧的参考视频帧为待编码关键帧。编码设备可以将待编码关键帧作为当前待编码视频帧的参考视频帧,对当前待编码视频帧采用帧间预测的方式进行编码(帧间编码),或者,对当前待编码视频帧采用帧内预测和帧间预测结合的方式进行编码(帧内编码结合帧间编码),从而提高压缩效率。

如果当前待编码视频帧属于第二个待编码片段,则按照目标编码模式,当前待编码视频帧的参考视频帧包括位于当前待编码视频帧之前的至少一个非关键帧。编码设备可以首先确定与当前待编码视频帧对应的目标参考视频帧。目标参考视频帧可以包括:位于当前待编码视频帧之前的至少一个非关键帧,也可以包括:待编码关键帧。

编码设备可以将目标参考视频帧作为当前待编码视频帧的参考视频帧,对待编码视频帧进行帧间编码,或者,对当前待编码视频帧进行帧内编码结合帧间编码,提高压缩效率。

通过本实施例,对图像组的关键帧、处于各个分段不同位置的非关键帧采用不同的编码方式进行编码,可以兼顾编码质量和压缩效率,提高资源利用率。

作为一种可选的实施例,按照目标编码模式,将目标参考视频帧作为当前待编码视频帧的参考视频帧,对当前待编码视频帧进行目标编码包括:

s51,在与当前待编码视频帧对应的参考视频帧的数量为多个的情况下,按照目标编码模式,将待编码关键帧、以及位于当前待编码视频帧之前的至少一个非关键帧,确定为与当前待编码视频帧对应的目标参考视频帧;

s52,将目标参考视频帧作为当前待编码视频帧的参考视频帧,对当前待编码视频帧进行目标编码。

如果当前待编码视频帧允许参考多帧,即,与当前待编码视频帧对应的参考视频帧的数量为多个,按照目标编码模式,编码设备可以确定与当前待编码视频帧对应的多个参考视频帧(目标参考视频帧),可以包括:待编码关键帧,待编码图像组中位于当前待编码视频帧之前的至少一个非关键帧,比如,当前待编码视频帧的前一个非关键帧。

例如,可以将待编码关键帧、以及当前待编码视频帧的前一个非关键帧,确定为与当前待编码视频帧对应的目标参考视频帧。

在确定出目标参考视频帧之后,编码设备可以将目标参考视频帧作为当前待编码视频帧的参考视频帧,对当前待编码视频帧进行帧间编码、或者帧内编码结合帧间编码。

例如,如图5所示,如果允许参考多帧,第二个片段内的帧可以往前参考多帧,比如,参考帧数为2时,图5中poc=6的帧可以参考poc=0和poc=4的帧。

通过本实施例,在允许参考多帧时,基于图像组的片段确定与待编码视频帧对应的多个参考视频帧,可以保证参考视频帧确定的合理性。

作为一种可选的实施例,按照目标编码模式对待编码图像组进行编码包括:

s61,按照目标编码模式,对待编码图像组中处于第一个待编码片段内的所有待编码非关键帧进行并行编码。

在ldp编码模式中,从第二个p帧开始,每个p帧既参考i帧,又参考其前面的p帧,因此,编码p帧的方式是串行的,编码效率低。

可选地,在本实施例中,在编码时,gop根据目标级数进行片段划分,由于对p帧进行了分段,不再是链式参考关系,因此,gop内同级p帧可以并行编解码,大大加快编解码速度。

按照目标编码模式,第一个待编码片段内的所有待编码非关键帧均参考待编码关键帧,因此,编码设备可以对处于第一个待编码片段内的所有待编码非关键帧进行并行编解码,从而加快编解码速度。

例如,如图5所示,第一个分段包含第1个p帧、第2个p帧、第3个p帧和第4个p帧,这4个p帧可以并行编解码。p帧编解码使用并行方式,可以加快编解码速度。

通过本实施例,通过对处于第一个待编码片段内的所有待编码非关键帧进行并行编解码,可以加快编解码速度。

作为一种可选的实施例,获取待编码视频的待编码图像组包括:

s71,在全景视频中目标对象的主视角区域由第一视角区域切换到第二视角区域的情况下,获取待编码视频的待编码图像组,其中,待编码视频为待编码全景视频中与主视角区域对应的部分,待编码图像组为发生视角切换后的第一个视频帧所在的图像组,与主视角区域对应的清晰度为第一清晰度,与全景视频中除了主视角区域以外的其他区域对应的清晰度为第二清晰度,第一清晰度高于第二清晰度。

本实施例中的编码方法可以应用于不同的视频传输场景,例如,全景视频传输的场景。对于全景视频(例如,vr场景中的全景视频),可以将用户的主视角区域对应的清晰度配置为第一清晰度(高清),将全景视频中除了主视角区域以外的其他区域对应的清晰度配置为第二清晰度(低清),第一清晰度高于第二清晰度。

在未发生视角切换之前,目标对象(用户)的主视角区域为第一视角区域,则第一视角区域内显示的是高清视频,全景视频中除了第一视角区域以外的其他区域显示的是低清视频。在某一时刻,目标对象的视角发生切换,其主视角区域由第一视角区域切换到第二视角区域,则需要将第二视角区域对应的视频码流切换为高清码流,从而在第二视角区域内显示高清视频。

待编码视频可以是待编码全景视频中处于主视角区域内的部分,待编码视频的视频码流对应的清晰度为第一清晰度。待编码图像组为发生视角切换后的第一个视频帧所在的图像组,例如,vr设备检测到用户在某一时刻发生切换,发生切换后,需要快速将位于主视角区域内的视频码流切换为高清码流。编码设备中的编码器本身具有控制视频流质量的参数,可以通过此参数来控制视频码流的清晰度。

通过本实施例,根据用户视角区域的切换来控制视频码流对应的清晰度,可以提高主视角区域内的低清流到高清流的转换速度,提高用户的使用体验。

可选地,在本实施例中,在获取待编码视频的待编码图像组之前,编码设备可以接收目标设备传输的目标视角信息,目标设备是用于获取目标对象查看全景视频的视角信息的设备;根据目标视角信息,编码设备可以确定在全景视频中目标对象的主视角区域由第一视角区域切换到第二视角区域。

在解码端、或者播放设备端,目标设备(例如,vr设备)可以获取目标对象查看全景视频的视角信息,得到目标视角信息,并由目标设备、编码设备或者播放设备通过网络将目标视角信息传输给编码设备。目标设备、编码设备和播放设备可以是同一设备,也可以是不同设备,本实施例中对此不作限定。

编码设备可以接收目标设备传输的目标视角信息,并根据目标视角信息,确定在全景视频中目标对象的主视角区域由第一视角区域切换到第二视角区域。目标视角信息可以是主视角区域的区域信息,也可以是目标对象的主视点在全景视频(全景视频帧)上的位置。编码设备可以通过目标视角信息直接确定出主视角区域,也可以通过主视点在全景视频(全景视频帧)上的位置、以及主视角区域的范围信息,确定出主视角区域,本实施例中对此不作限定。

例如,vr眼镜(或者,手机的vr在划动画面时)可以得到用户的视角信息,判断主视点在图像的位置,进而确定用户的主视角区域。

通过本实施例,通过获取目标对象的视角信息确定目标对象的主视角区域,可以提高主视角区域确定的准确性。

可选地,在本实施例中,对于待编码图像组中的待编码视频帧,编码设备可以对待编码视频帧进行编码,得到第一视频码流,第一视频码流对应的清晰度为第一清晰度,可以是高清码流。为了保证用户在转换视角时,可以看到切换后的视角区域内的视频画面,编码设备可以对待编码全景视频的待编码全景视频帧进行编码,得到第二视频码流,第二视频码流对应的清晰度为第二清晰度,是低清码流。编码设备可以将第一视频码流和第二视频码流传输给解码设备,以便解码设备可以将第一视频码流解码得到的视频帧(图像帧,图像)渲染到第二视频码流解码得到的视频帧的主视角区域内,从而在主视角区域内显示高清视频画面。

待编码全景视频帧的编码过程与待编码视频帧的编码过程可以是同时执行的(消耗一定的存储资源),也可以是先后执行的,本实施例中对此不作限定。

例如,如果某一视角区域显示的视频画面转高清,低清码流仍然会被传输,因为传输代价较小,视角转换时如果当前视角对应区域不再是主视觉范围,可以直接切换为低清流进行解码。

通过本实施例,通过同时传输低清码流和高清码流,可以保证用户在视角切换时视频信息显示的完整性,提高用户的使用体验。

根据本申请实施例的另一个方面,还提供了一种视频解码方法。可选地,在本实施例中,上述视频解码方法可以应用于如图1所示的由编码端102、解码端104和播放设备106所构成的硬件环境中。已经进行过说明的,在此不做赘述。

本申请实施例的视频解码方法可以由解码端104来执行,该解码端104可以是终端设备,还可以是服务器。其中,终端设备执行本申请实施例的视频解码方法也可以是由安装在其上的客户端来执行。以由解码端104来执行本实施例中的视频解码方法为例,图6是根据本申请实施例的一种可选的视频解码方法的流程示意图,如图6所示,该方法的流程可以包括以下步骤:

步骤s602,获取待解码视频的待解码图像组,其中,待解码图像组包括待解码关键帧和多个待解码非关键帧。

本实施例中的视频解码方法可以用于解码通过上述任一项视频编码方法对待编码图像组进行编码所得到的视频码流。解码设备可以获取设备通过网络所传输的视频码流,即,待解码视频的待解码图像组,待解码图像组包括待解码关键帧和多个待解码非关键帧。

步骤s604,确定与待解码图像组对应的目标参考关系,其中,目标参考关系用于指示在多个待解码非关键帧所划分为的两个待解码片段中,第一个待解码片段中的所有待解码非关键帧参考待解码关键帧,第二个待解码片段中的各个待解码非关键帧参考位于各个待解码非关键帧之前的至少一个非关键帧。

解码设备可以确定与待解码图像组对应的目标参考关系,目标参考关系用于指示在待解码图像组中的各个待解码视频帧参考的视频帧。该目标参考关系的指示信息可以携带在与待解码图像组中的每个待解码视频帧对应的视频码流中。

目标参考关系与编码侧所采用的目标编码模式对应,其所指示的参考关系为:在多个待解码非关键帧所划分为的两个待解码片段中,第一个待解码片段中的所有待解码非关键帧参考待解码关键帧,第二个待解码片段中的各个待解码非关键帧参考位于各个待解码非关键帧之前的至少一个非关键帧。

步骤s606,按照目标参考关系对待解码图像组进行解码。

按照目标参考关系,解码设备可以对待解码图像组中的各个待解码视频帧进行解码。对于待解码图像组中的待解码关键帧,解码设备可以对其进行帧内解码,得到对应的视频帧;对于待解码图像中的待解码非关键帧,解码设备可以基于目标参考关系,确定出待解码非关键帧的参考图像帧,并按照对应的参考图像帧进行帧间解码,或者,帧内解码结合帧间解码,得到对应的视频帧。待解码视频帧的解码过程可以参考相关技术,本实施例中对此不作限定。

通过上述步骤s602至步骤s606,通过获取待解码视频的待解码图像组,其中,待解码图像组包括待解码关键帧和多个待解码非关键帧;确定与待解码图像组对应的目标参考关系,其中,目标参考关系用于指示在多个待解码非关键帧所划分为的两个待解码片段中,第一个待解码片段中的所有待解码非关键帧参考待解码关键帧,第二个待解码片段中的各个待解码非关键帧参考位于各个待解码非关键帧之前的至少一个非关键帧;按照目标参考关系对待解码图像组进行解码,解决了相关技术中的视频编解码方式存在由于编解码时延过大导致数据传输时效性差的问题,减少了编解码时延,提高了编解码效率。

作为一种可选的实施例,按照目标参考关系对待解码图像组进行解码包括:

s81,在当前待解码视频帧为待解码关键帧的情况下,对待解码关键帧进行帧内解码;

s82,在当前待解码视频帧属于第一个待解码片段的情况下,按照目标参考关系,将待解码关键帧作为当前待解码视频帧的参考视频帧,对当前待解码视频帧进行目标解码;

s83,在当前待解码视频帧属于第二个待解码片段的情况下,按照目标参考关系,将目标参考视频帧作为当前待解码视频帧的参考视频帧,对当前待解码视频帧进行目标解码,其中,目标参考视频帧包含位于当前待解码视频帧之前的至少一个非关键帧;

其中,目标解码为以下之一:帧间解码,帧内解码结合帧间解码。

如果当前待解码视频帧为待解码图像组的待解码关键帧(第一个视频帧,i帧),可以作为视频流中的一个随机访问点。解码设备可以不参考其他帧,直接对其进行帧内解码,得到对应的视频帧。

如果当前待解码视频帧属于第一个待解码片段,按照目标参考关系,当前待解码视频帧的参考视频帧为待解码关键帧。解码设备可以将待解码关键帧作为当前待解码视频帧的参考视频帧,对当前待解码视频帧进行帧间解码,或者,对当前待解码视频帧进行帧内解码结合帧间解码。

如果当前待解码视频帧属于第二个待解码片段,按照目标指示信息,当前待解码视频帧的参考视频帧包含位于当前待解码视频帧之前的至少一个非关键帧(待解码非关键帧)。解码设备可以首先确定与当前待解码视频帧对应的目标参考视频帧。目标参考视频帧可以包括:当前待解码图像组中位于当前待解码视频帧之前的至少一个非关键帧,也可以包括:待解码关键帧。

解码设备可以将目标参考视频帧作为当前待解码视频帧的参考视频帧,对待解码视频帧进行帧间解码,或者,对当前待解码视频帧进行帧内解码结合帧间解码。

通过本实施例,对图像组的关键帧、处于不同分段的非关键帧采用不同的解码方式进行解码,可以兼顾视频质量和压缩效率,提高资源利用率。

作为一种可选的实施例,按照目标参考关系,将目标参考视频帧作为当前待解码视频帧的参考视频帧,对当前待解码视频帧进行目标解码包括:

s91,在与当前待解码视频帧对应的参考视频帧的数量为多个的情况下,按照目标参考关系,将待解码关键帧、以及位于当前待解码视频帧之前的至少一个非关键帧,确定为与当前待解码视频帧对应的目标参考视频帧;

s92,将目标参考视频帧作为当前待解码视频帧的参考视频帧,对当前待解码视频帧进行目标解码。

如果允许参考多帧,即,与当前待解码视频帧对应的参考视频帧的数量可以为多个,按照目标参考关系,解码设备可以将待解码图像组的待解码关键帧、以及当前待解码图像组中位于当前待解码视频帧之前的至少一个非关键帧,确定为与当前待解码视频帧对应的目标参考视频帧。

例如,可以将待解码关键帧、以及当前待解码视频帧的前一个非关键帧,确定为与当前待解码视频帧对应的目标参考视频帧。

在确定出目标参考视频帧之后,解码设备可以将目标参考视频帧作为当前待解码视频帧的参考视频帧,对当前待解码视频帧进行帧间解码、或者帧内解码结合帧间解码。

通过本实施例,通过参考多个视频帧对待解码视频帧进行解码,可以提高视频帧解码的准确性。

作为一种可选的实施例,按照目标参考关系对待解码图像组进行解码包括:

s101,按照目标参考关系,对待解码图像组中处于第一个待解码片段内的所有待解码非关键帧进行并行解码。

按照目标参考关系,解码设备可以待解码图像组中处于第一个待解码片段内的所有待解码非关键帧,第一个待解码片段内的所有待解码非关键帧的数量为至少两个。

对于第一个待解码片段内的所有待解码非关键帧,解码设备可以对其进行并行解码,由于对第一个片段内的所有非关键帧进行并行编解码,可以加快编解码速度。

通过本实施例,通过对第一个片段内的所有非关键帧进行并行编解码,可以加快编解码速度。

作为一种可选的实施例,获取待解码视频的待解码图像组包括:

s111,在全景视频中目标对象的主视角区域由第一视角区域切换到第二视角区域的情况下,获取待解码视频的待解码图像组,其中,待解码视频为待解码全景视频中与主视角区域对应的部分,待解码图像组为发生视角切换后的第一个视频帧所在的图像组,与主视角区域对应的清晰度为第一清晰度,与全景视频中除了主视角区域以外的其他区域对应的清晰度为第二清晰度,第一清晰度高于第二清晰度。

对于上述全景视频的应用场景,在用户的主视角区域内可以显示高清视频,对应于第一清晰度,在除了主视角区域以外的其他区域内可以显示低清视频,对应于第二清晰度,第一清晰度高于第二清晰度。

如果目标对象的主视角区域由第一视角区域切换到第二视角区域,解码设备可以获取发生视角切换后的第一个视频帧所在的图像组,即,待解码图像组。例如,vr设备检测到用户在某一时刻发生切换,发生切换后,解码设备可以采用上述解码方式进行视频解码,从而可以快速将位于主视角区域内的视频码流切换为高清码流。

解码设备可以接收编码设备传输来的视频码流,例如,第一视频码流,对应于待解码图像组中的待解码视频帧,可以是高清码流,又例如,第二视频码流,对应于待解码全景视频的待解码全景视频帧,可以是低清码流。待解码视频帧和待解码全景视频帧之间具有对应关系,解码设备可以将第一视频码流解码出的视频帧(图像帧,图像)渲染到第二视频码流解码得到的视频帧的主视角区域内,从而在主视角区域内显示高清视频画面。主视角区域(第二视角区域)对应的清晰度为第一清晰度,与除了第二视角区域以外的其他区域对应的清晰度为第二清晰度,第一清晰度高于第二清晰度。

第二视角区域可以是通过视频码流中的区域指示信息所指示的。区域指示信息用于指示主视角区域在全景视频中的位置,可以是上述主视角区域的区域信息,也可以是其他类型的信息,能够指示主视角区域的区域范围的信息,均可以作为区域指示信息。

可选地,第二视角区域也可以是通过由目标设备传输来的目标视角信息确定的,通过匹配时间,解码设备可以确定目标视角信息与待解码视频帧之间的对应关系,从而确定出用于显示待解码视频帧的第二视角区域。

通过本实施例,根据用户视角区域的切换来控制视频码流对应的清晰度,可以提高用户主视角区域内的低清流到高清流的转换速度,提升用户的使用体验。

下面结合可选示例对本申请实施例中的视频编解码方法进行解释说明。本示例中提供的是一种应用于vr场景中的混合自适应低延迟编码帧参考方法,编码时全景视频的gop根据级数进行片段划分,支持并行片段的p帧可以并行编解码,加快了编码速度。同理,解码时支持并行片段的p帧可以并行被解码,加速了解码速度。使用这种方式进行编码时,当vr从主视角切换到左、右任一视角时,可以快速完成高清流到低清流的转换。

本示例中所提供的混合自适应低延迟编码帧参考方法可以应用于如图7所示的网络架构,在该网络架构中包含:

编码器,用于获取并拼接全景视频,该全景视频是在vr设备中所播放的视频;对全景视频中位于用户的主视角区域内的视频数据按照第一清晰度(高清)进行编码,得到对应的高清流,对全景视频按照第二清晰度(低清)进行编码,得到对应的低清流,将得到的高清流和低清流通过网络传输给解码器;接收vr设备传输的用户的视角信息,并根据视角信息确定用户的主视角区域;

解码器,用于分别对高清流和低清流进行解码,将对高清流进行解码得到的视频帧渲染到对对应的低清流进行解码得到的视频帧的主视角区域,得到解码后的视频,并将解码后的视频通过vr设备进行播放;

vr设备,用于播放解码器解码得到的视频,并获取用户的视角信息,在用户的视角发生切换时,将用户的视角信息通过网络传输给编码器。

如图8所示,本示例中的视频编解码方法的流程可以包括以下步骤:

步骤s802,根据时延的需求和编解码一帧的用时估计出用户能够忍耐的最大延迟帧数,根据帧数计算出最大串行帧数(目标级数)。

在编码侧,在编码一个gop内某一帧时,编码器可以根据时延需求和编解码一帧的用时估计出用户能够忍耐的最大延迟帧数,并根据最大延迟帧数计算出最大串行帧数(或者,最小并行帧数)。

例如,用户可忍受的时延为t,编解码一帧i需要ti,编解码一帧p需要tp,gop内包含n个p帧,则可以计算出自适应最大串行帧数m,为:((t-ti))/tp,最小并行帧数n为:n+1-m。

步骤s804,按照最大串行帧数对全景视频中与主视角区域的对应的视频帧进行编码,得到对应的视频码流,并将得到的视频码流通过网络传输至解码器。

按照最大串行帧数m可以将一个gop内的p帧划分成两个片段,第一个片段包含的帧数至少为(n-m),其中,n为一个gop内包含的p帧的总数量,第二个片段包含的帧数至多为m。

第一个片段是并行片段,所有p帧均参考i帧进行编解码,第二个片段中的p帧参考前一帧进行编解码。编码器可以按照上述编码模式对全景视频中与主视角区域的对应的视频帧进行编码,得到对应的视频码流,并将得到的视频码流通过网络传输至解码器。此外,编码器可以采用同样的方式或者不同的方式对全景视频帧进行编码,本示例中对此不作限定。

使用这种方式进行编码时,当vr从主视角切换到左右任一视角(向左或者向右切换视角)时,可以快速完成高清流到低清流的转换。

步骤s806,按照编码时的参考关系对接收到的视频码流进行解码,得到对应的视频,并通过vr设备播放解码出的视频。

编码得到的码流内每一帧都包含这一帧编码时候参考了哪些帧的信息,也就是参考关系。解码器可以按照编码时的参考关系对接收到的视频码流进行解码,得到对应的视频,并将其传输至vr设备进行播放。

此外,由于第一个片段内的图像都参考i帧编码,不再依赖于其前面的p帧,对第一个片段内的图像可以并行编解码,大大加快编解码速度。

相关技术中的ldp模式,解码任意一个p帧时,需要将其所有的参考帧放在内存中。而在本示例中,解码到第一个片段内的p帧时,需要等待一个i帧的解码时间,解码第二个片段中的任一p帧时,需要等待一个i帧的解码时间加上第二个片段中位于该p帧之前的p帧的数量+1个p帧的解码时间。

通过本示例,由于每一个gop都进行了两个片段划分编码,因此,可以根据当前计算能力和应用时延需求计算出编码延时和可以忍受最大延时,划分支持并行的p帧进行并行编码,加快编码速度;同理,解码时支持并行的p帧可以并行被解码,加速了解码速度。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom(read-onlymemory,只读存储器)/ram(randomaccessmemory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

根据本申请实施例的又一个方面,还提供了一种用于实施上述视频编码方法的视频编码装置。图9是根据本申请实施例的一种可选的视频编码装置的结构框图,如图9所示,该装置可以包括:

获取单元902,用于获取待编码视频的待编码图像组,其中,待编码图像组包括待编码关键帧和多个待编码非关键帧;

确定单元904,与获取单元902相连,用于确定与待编码图像组匹配的目标编码模式,其中,目标编码模式用于指示在多个待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有待编码非关键帧参考待编码关键帧,第二个待编码片段中的各个待编码非关键帧参考位于各个待编码非关键帧之前的至少一个非关键帧;

编码单元906,与确定单元904相连,用于按照目标编码模式对待编码图像组进行编码。

需要说明的是,该实施例中的获取单元902可以用于执行上述步骤s202,该实施例中的确定单元904可以用于执行上述步骤s204,该实施例中的编码单元906可以用于执行上述步骤s206。

通过上述模块,通过获取待编码视频的待编码图像组,其中,待编码图像组包括待编码关键帧和多个待编码非关键帧;确定与待编码图像组匹配的目标编码模式,其中,目标编码模式用于指示在多个待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有待编码非关键帧参考待编码关键帧,第二个待编码片段中的各个待编码非关键帧参考位于各个待编码非关键帧之前的至少一个非关键帧;按照目标编码模式对待编码图像组进行编码,解决了相关技术中的视频编解码方式存在由于编解码时延过大导致数据传输时效性差的问题,减少了编解码时延,提高了编解码效率。

作为一种可选的实施例,编码单元906包括:

确定模块,用于确定与待编码图像组对应的两个待编码片段,其中,每个待编码片段包括至少一个待编码非关键帧;

第一编码模块,用于按照目标编码模式,对每个待编码片段中的每个待编码非关键帧进行编码。

作为一种可选的实施例,确定模块包括:

第一确定子模块,用于根据目标延迟时间和目标编解码时间,确定目标级数,其中,目标延迟时间为允许的最大延迟时间,目标编解码时间为一个视频帧的编解码时间,编解码时间包含编码所用的时间和解码所用的时间,目标级数为在目标延迟时间内允许编解码出的非关键帧的数量;

第二确定子模块,用于按照目标级数,确定与待编码图像组对应的两个待编码片段,其中,第二个待编码片段中包含的待编码非关键帧的数量小于或者等于目标级数与1的差值。

作为一种可选的实施例,第一确定子模块包括:

第一确定子单元,用于确定目标延迟时间与第一编解码时间的目标时间差值,其中,第一编解码时间为一个关键帧的编解码时间;

第二确定子单元,用于将目标时间差值与第二编解码时间的商,确定为目标级数,其中,第二编解码时间为一个非关键帧的编解码时间,目标编解码时间包含第一编解码时间和第二编解码时间。

作为一种可选的实施例,编码单元906包括:

第二编码模块,用于在当前待编码视频帧为待编码关键帧的情况下,对当前待编码视频帧进行帧内编码;

第三编码模块,用于在当前待编码视频帧属于第一个待编码片段的情况下,按照目标编码模式,将待编码关键帧作为当前待编码视频帧的参考视频帧,对当前待编码视频帧进行目标编码;

第四编码模块,用于在当前待编码视频帧属于第二个待编码片段的情况下,按照目标编码模式,将目标参考视频帧作为当前待编码视频帧的参考视频帧,对当前待编码视频帧进行目标编码,其中,目标参考视频帧包含位于当前待编码视频帧之前的至少一个非关键帧;

其中,目标编码为以下之一:帧间编码,帧内编码结合帧间编码。

作为一种可选的实施例,第四编码模块包括:

第三确定子模块,用于在与当前待编码视频帧对应的参考视频帧的数量为多个的情况下,按照目标编码模式,将待编码关键帧、以及位于当前待编码视频帧之前的至少一个非关键帧,确定为与当前待编码视频帧对应的目标参考视频帧;

编码子模块,用于将目标参考视频帧作为当前待编码视频帧的参考视频帧,对当前待编码视频帧进行目标编码。

作为一种可选的实施例,编码单元906包括:

第五编码模块,用于按照目标编码模式,对待编码图像组中处于第一个待编码片段内的所有待编码非关键帧进行并行编码。

作为一种可选的实施例,获取单元902包括:

第一获取模块,用于在全景视频中目标对象的主视角区域由第一视角区域切换到第二视角区域的情况下,获取待编码视频的待编码图像组,其中,待编码视频为待编码全景视频中与主视角区域对应的部分,待编码图像组为发生视角切换后的第一个视频帧所在的图像组,与主视角区域对应的清晰度为第一清晰度,与全景视频中除了主视角区域以外的其他区域对应的清晰度为第二清晰度,第一清晰度高于第二清晰度。

根据本申请实施例的又一个方面,还提供了一种用于实施上述视频解码方法的视频解码装置。图10是根据本申请实施例的一种可选的视频解码装置的结构框图,如图10所示,该装置可以包括:

获取单元1002,用于获取待解码视频的待解码图像组,其中,待解码图像组包括待解码关键帧和多个待解码非关键帧;

确定单元1004,与获取单元1002相连,用于确定与待解码图像组对应的目标参考关系,其中,目标参考关系用于指示在多个待解码非关键帧所划分为的两个待解码片段中,第一个待解码片段中的所有待解码非关键帧参考待解码关键帧,第二个待解码片段中的各个待解码非关键帧参考位于各个待解码非关键帧之前的至少一个非关键帧;

解码单元1006,与确定单元1004相连,用于按照目标参考关系对待解码图像组进行解码。

需要说明的是,该实施例中的获取单元1002可以用于执行上述步骤s602,该实施例中的确定单元1004可以用于执行上述步骤s604,该实施例中的解码单元1006可以用于执行上述步骤s606。

通过上述模块,通过获取待解码视频的待解码图像组,其中,待解码图像组包括待解码关键帧和多个待解码非关键帧;确定与待解码图像组对应的目标参考关系,其中,目标参考关系用于指示在多个待解码非关键帧所划分为的两个待解码片段中,第一个待解码片段中的所有待解码非关键帧参考待解码关键帧,第二个待解码片段中的各个待解码非关键帧参考位于各个待解码非关键帧之前的至少一个非关键帧;按照目标参考关系对待解码图像组进行解码,解决了相关技术中的视频编解码方式存在由于编解码时延过大导致数据传输时效性差的问题,减少了编解码时延,提高了编解码效率。

作为一种可选的实施例,解码单元1006包括:

第一解码模块,用于在当前待解码视频帧为待解码关键帧的情况下,对待解码关键帧进行帧内解码;

第二解码模块,用于在当前待解码视频帧属于第一个待解码片段的情况下,按照目标参考关系,将待解码关键帧作为当前待解码视频帧的参考视频帧,对当前待解码视频帧进行目标解码;

第三解码模块,用于在当前待解码视频帧属于第二个待解码片段的情况下,按照目标参考关系,将目标参考视频帧作为当前待解码视频帧的参考视频帧,对当前待解码视频帧进行目标解码,其中,目标参考视频帧包含位于当前待解码视频帧之前的至少一个非关键帧;

其中,目标解码为以下之一:帧间解码,帧内解码结合帧间解码。

作为一种可选的实施例,第三解码模块包括:

确定子模块,用于在与当前待解码视频帧对应的参考视频帧的数量为多个的情况下,按照目标参考关系,将待解码关键帧、以及位于当前待解码视频帧之前的至少一个非关键帧,确定为与当前待解码视频帧对应的目标参考视频帧;

解码子模块,用于将目标参考视频帧作为当前待解码视频帧的参考视频帧,对当前待解码视频帧进行目标解码。

作为一种可选的实施例,解码单元1006包括:

第四解码模块,用于按照目标参考关系,对待解码图像组中处于第一个待解码片段内的所有待解码非关键帧进行并行解码。

作为一种可选的实施例,获取单元1002包括:

第三获取模块,用于在全景视频中目标对象的主视角区域由第一视角区域切换到第二视角区域的情况下,获取待解码视频的待解码图像组,其中,待解码视频为待解码全景视频中与主视角区域对应的部分,待解码图像组为发生视角切换后的第一个视频帧所在的图像组,与主视角区域对应的清晰度为第一清晰度,与全景视频中除了主视角区域以外的其他区域对应的清晰度为第二清晰度,第一清晰度高于第二清晰度。

根据本申请实施例的又一个方面,还提供了一种视频传输系统,包括:编码端,与编码端进行通信连接的解码端,其中,编码端可以包含本申请实施例中提供的上述任一项视频编码装置(或者,编码端为上述视频编码装置),解码端可以包含本申请实施例中提供的上述任一项视频解码装置(或者,解码端为上述视频解码装置)。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

根据本申请实施例的又一个方面,还提供了一种用于实施上述视频编码方法和/或视频解码方法的电子设备,该电子设备可以是服务器、终端、或者其组合。

图11是根据本申请实施例的一种可选的电子设备的结构框图,如图11所示,包括处理器1102、通信接口1104、存储器1106和通信总线1108,其中,处理器1102、通信接口1104和存储器1106通过通信总线1108完成相互间的通信,其中,

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

处理器1102,用于执行存储器1106上所存放的计算机程序时,实现如下步骤:

s1,获取待编码视频的待编码图像组,其中,待编码图像组包括待编码关键帧和多个待编码非关键帧;

s2,确定与待编码图像组匹配的目标编码模式,其中,目标编码模式用于指示在多个待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有待编码非关键帧参考待编码关键帧,第二个待编码片段中的各个待编码非关键帧参考位于各个待编码非关键帧之前的至少一个非关键帧;

s3,按照目标编码模式对待编码图像组进行编码。

可选地,处理器1102,用于执行存储器1106上所存放的计算机程序时,实现如下步骤:

s1,获取待解码视频的待解码图像组,其中,待解码图像组包括待解码关键帧和多个待解码非关键帧;

s2,确定与待解码图像组对应的目标参考关系,其中,目标参考关系用于指示在多个待解码非关键帧所划分为的两个待解码片段中,第一个待解码片段中的所有待解码非关键帧参考待解码关键帧,第二个待解码片段中的各个待解码非关键帧参考位于各个待解码非关键帧之前的至少一个非关键帧;

s3,按照目标参考关系对待解码图像组进行解码。

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

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

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

作为一种示例,上述存储器1102中可以但不限于包括上述视频编码装置中的获取单元902、确定单元904以及编码单元906。此外,还可以包括但不限于上述视频编码装置中的其他模块单元,本示例中不再赘述。

作为另一种示例,上述存储器1102中可以但不限于包括上述视频解码装置中的获取单元1002、确定单元1004以及解码单元1006。此外,还可以包括但不限于上述视频解码装置中的其他模块单元,本示例中不再赘述。

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

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图11所示的结构仅为示意,实施上述视频编码方法和/或视频解码方法的设备可以是终端设备,该终端设备可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图11其并不对上述电子装置的结构造成限定。例如,终端设备还可包括比图11中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图11所示的不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、rom、ram、磁盘或光盘等。

根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行设备投屏的方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s1,获取待编码视频的待编码图像组,其中,待编码图像组包括待编码关键帧和多个待编码非关键帧;

s2,确定与待编码图像组匹配的目标编码模式,其中,目标编码模式用于指示在多个待编码非关键帧所划分为的两个待编码片段中,第一个待编码片段中的所有待编码非关键帧参考待编码关键帧,第二个待编码片段中的各个待编码非关键帧参考位于各个待编码非关键帧之前的至少一个非关键帧;

s3,按照目标编码模式对待编码图像组进行编码。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s1,获取待解码视频的待解码图像组,其中,待解码图像组包括待解码关键帧和多个待解码非关键帧;

s2,确定与待解码图像组对应的目标参考关系,其中,目标参考关系用于指示在多个待解码非关键帧所划分为的两个待解码片段中,第一个待解码片段中的所有待解码非关键帧参考待解码关键帧,第二个待解码片段中的各个待解码非关键帧参考位于各个待解码非关键帧之前的至少一个非关键帧;

s3,按照目标参考关系对待解码图像组进行解码。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、rom、ram、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

根据本申请实施例的又一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一个实施例中的方法步骤。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

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