用于自适应地确定用于编码的图片组的帧数的方法和设备与流程

文档序号:25034209发布日期:2021-05-11 17:05阅读:66来源:国知局
用于自适应地确定用于编码的图片组的帧数的方法和设备与流程

本公开涉及视频处理的技术领域,具体地涉及用于自适应地确定用于编码的图片组的帧数的方法和设备。



背景技术:

在对视频序列进行编码时,通常通过减少空间和时间冗余来压缩视频序列,这通过在空间和/或时间域中执行预测过程来进行。在实际压缩时,会采取各种算法减少数据的量,其中i帧、p帧、b帧就是最常被使用的。i帧是关键帧,属于帧内预测帧。p帧与b帧均为帧间预测帧,它们的差别是p帧预测仅基于一个预测块来预测当前块的值,而b帧预测允许基于两个先前编码块来基于插值预测当前块。

视频编码中一般将连续若干帧图片组成的集合称为图片组(groupofpictures,gop)。编码过程就以gop为单位进行编码。gop的大小决定了编码中基本的层级结构以及参考关系,对编码的性能影响较大。现有方案中一般采用固定大小的gop,比如gop16,其表示每个gop中视频帧的个数为16。

然而,视频序列通常由复杂视频片段和简单视频片段构成。对于复杂视频片段,选择较小的gop能够充分参考gop内近距离的帧,得到较好预测。而对于较简单视频片段,选择较大的gop则能够对各层级的帧进行合理的质量分配以得到更好的编码性能。因此现有方案中采用固定大小gop无法自适应视频序列的特性,从而无法得到较好的性能。



技术实现要素:

有鉴于此,本公开提供了用于自适应地确定用于编码的图片组的帧数的方法和设备,期望克服上面提到的部分或全部缺陷以及其它可能的缺陷。

根据本公开的第一方面,提供了一种用于自适应地确定用于编码的图片组的帧数的方法,包括:接收要以所述用于编码的图片组的帧数进行编码的视频片段,所述视频片段包括多个视频帧;在以图片组为单位对所述视频片段的未编码视频帧每进行一次编码之前,确定未编码视频帧的帧数,并且基于未编码视频帧的帧数自适应地确定用于编码的图片组的帧数。

在一些实施例中,基于未编码视频帧的帧数自适应地确定用于编码的图片组的帧数,包括:响应于所述未编码视频帧的帧数不小于第一预定帧数,则基于所述未编码视频帧中第一预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数,其中第一预定帧数为第一图片组的帧数和第二图片组的帧数之和并且第一图片组的帧数大于第二图片组的帧数;响应于所述未编码视频帧的帧数小于第一预定帧数但不小于第二预定帧数,则基于所述未编码视频帧中第二预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数,其中第二预定帧数与第一图片组的帧数相同;响应于所述未编码视频帧的帧数小于第二预定帧数,则将第三图片组的帧数确定为用于编码的图片组的帧数,所述第三图片组与所述未编码视频帧的帧数相同。

在一些实施例中,基于所述未编码视频帧中第一预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数,包括:从未编码视频帧中的第一帧开始选取第一预定帧数的视频帧;分别确定以第一图片组分解、第二图片组分解、第三图片组分解对所述第一预定帧数的视频帧进行编码时每个图片组分解的编码代价。每个图片组分解表示按照图片组对所述第一预定帧数的视频帧进行划分的形式。第一图片组分解包括依次排列的第一图片组和第二图片组,第二图片组分解包括依次排列的第二图片组和第一图片组,第三图片组分解包括依次排列的多个第二图片组;响应于第一图片组分解的编码代价最小,则将第一图片组的帧数确定为用于编码的图片组的帧数;响应于第二图片组分解的编码代价或者第三图片组分解的编码代价最小,则将第二图片组的帧数确定为用于编码的图片组的帧数。

在一些实施例中,基于所述未编码视频帧中第一预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数,包括:从未编码视频帧中的第一帧开始选取第一预定帧数的视频帧;分别确定以第一图片组分解、第二图片组分解对所述第一预定帧数的视频帧进行编码时每个图片组分解的编码代价,其中第一图片组分解包括依次排列的第一图片组和第二图片组,第二图片组分解包括依次排列的第二图片组和第一图片组;响应于第一图片组分解的编码代价小于第二图片组分解的编码代价,则确定以第三图片组分解对所述第一预定帧数的视频帧进行编码时第三图片组分解的编码代价,其中第三图片组包括依次排列的多个第二图片组;响应于第一图片组分解的编码代价小于第三图片组分解的编码代价,则将第一图片组的帧数确定为用于编码的图片组的帧数;响应于第一图片组分解的编码代价不小于第二图片组分解的编码代价或者第三图片组分解的编码代价,将第二图片组的帧数确定为用于编码的图片组的帧数。

在一些实施例中,基于所述未编码视频帧中第二预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数,包括:从未编码视频帧中的第一帧开始选取第二预定帧数的视频帧;分别确定以第四图片组分解、第五图片组分解对所述第二预定帧数的视频帧进行编码时每个图片组分解的编码代价,其中第四图片组分解包括一个第一图片组,第五图片组分解包括多个第二图片组;响应于第四图片组分解的编码代价小于第五图片组分解的编码代价,则将第一图片组的帧数确定为用于编码的图片组的帧数,否则将第二图片组的帧数确定为用于编码的图片组的帧数。

在一些实施例中,确定每个图片组分解的编码代价包括对所述每个图片组分解中的所有图片组的编码代价求和。

在一些实施例中,所述所有图片组中的每个图片组的编码代价为所述每个图片组中所有视频帧的编码代价的和。

在一些实施例中,所有视频帧的每个视频帧的编码代价为所述每个视频帧中所有编码单元的编码代价的和,每个编码单元的编码代价以如下公式确定:;其中,j为当前编码单元的编码代价,sad为当前编码单元与其预测单元之间的绝对误差和,r为通过采用选定预测模式编码当前编码单元所估计的比特数,λ是拉格朗日乘子。

在一些实施例中,第一图片组的帧数为16。

在一些实施例中,第二图片组的帧数为4。

根据本公开的第二方面,提供了一种用于自适应地确定用于编码的图片组的帧数的设备,包括:接收模块,被配置成接收要以所述用于编码的图片组的帧数进行编码的视频片段,所述视频片段包括多个视频帧;确定模块,被配置成在以图片组为单位对所述视频片段的未编码视频帧每进行一次编码之前,确定未编码视频帧的帧数,并且基于未编码视频帧的帧数自适应地确定用于编码的图片组的帧数。

在一些实施例中,所述确定模块包括:第一确定子模块,被配置成响应于所述未编码视频帧的帧数不小于第一预定帧数,则基于所述未编码视频帧中第一预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数,其中第一预定帧数为第一图片组的帧数和第二图片组的帧数之和并且第一图片组的帧数大于第二图片组的帧数;第二确定子模块,被配置成响应于所述未编码视频帧的帧数小于第一预定帧数但不小于第二预定帧数,则基于所述未编码视频帧中第二预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数,其中第二预定帧数与第一图片组的帧数相同;第三确定子模块,被配置成响应于所述未编码视频帧的帧数小于第二预定帧数,则将第三图片组的帧数确定为用于编码的图片组的帧数,所述第三图片组与所述未编码视频帧的帧数相同。

在一些实施例中,第一确定子模块被配置成响应于所述未编码视频帧的帧数不小于第一预定帧数:从未编码视频帧中的第一帧开始选取第一预定帧数的视频帧;分别确定以第一图片组分解、第二图片组分解对所述第一预定帧数的视频帧进行编码时每个图片组分解的编码代价,其中第一图片组分解包括依次排列的第一图片组和第二图片组,第二图片组分解包括依次排列的第二图片组和第一图片组;响应于第一图片组分解的编码代价小于第二图片组分解的编码代价,则确定以第三图片组分解对所述第一预定帧数的视频帧进行编码时的编码代价,其中第三图片组包括依次排列的多个第二图片组;响应于第一图片组分解的编码代价小于第三图片组分解的编码代价,则将第一图片组的帧数确定为用于编码的图片组的帧数;响应于第一图片组分解的编码代价不小于第二图片组分解的编码代价或者第三图片组分解的编码代价,将第二图片组的帧数确定为用于编码的图片组的帧数。

根据本公开的第三方面,提供了一种计算设备,包括处理器;以及存储器,配置为在其上存储有计算机可执行指令,当计算机可执行指令被处理器执行时执行如上面所述的任意方法。

根据本公开的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,当所述计算机可执行指令被执行时,执行如上面所述的任意方法。

通过本公开要求保护的用于自适应地确定用于编码的图片组的帧数的方法和设备,可以在每次以图片组为单位对视频片段编码前基于视频片段中未编码视频帧的帧数确定本次编码的最适合的图片组的帧数或大小,使得所确定的用于编码的图片组的帧数能够自适应视频序列的特性,从而得到较好的编码性能,有效提升视频编码时的压缩能力,同时不带来编码复杂度的增加。

根据下文描述的实施例,本公开的这些和其它优点将变得清楚,并且参考下文描述的实施例来阐明本公开的这些和其它优点。

附图说明

现在将更详细并且参考附图来描述本公开的实施例,其中:

图1图示了根据本公开的一个实施例的用于自适应地确定用于编码的图片组的帧数的方法的示意流程图;

图2图示了根据本公开的一个实施例的用于基于未编码视频帧的帧数自适应地确定用于编码的图片组的帧数的示意流程图;

图3图示了根据本公开的一个实施例的用于基于第一预定帧数的视频帧确定用于编码的图片组的帧数的方法的示意流程图;

图4图示了根据本公开的另一个实施例的用于基于第一预定帧数的视频帧确定用于编码的图片组的帧数的方法的示意流程图;

图5图示了根据本公开的一个实施例的用于基于第二预定帧数的视频帧确定用于编码的图片组的帧数的方法的示意性流程图;

图6a图示了根据本公开的一个实施例的第一图片组分解、第二图片组分解、以及第三图片组分解的示意图;

图6b图示了根据本公开的一个实施例的第四图片组分解、第五图片组分解的示意图;

图7图示了根据本公开的一个实施例的基于gop16对视频片段进行编码的顺序和方式的示意图;

图8图示了根据本公开的一个实施例的基于gop4对视频片段进行编码的顺序和方式的示意图;

图9图示了根据本公开的一个实施例的用于自适应地确定用于编码的图片组的帧数的设备的示例性结构框图;以及

图10图示了一个示例系统,其包括代表可以实现本文描述的各种技术的一个或多个系统和/或设备的示例计算设备。

具体实施方式

下面的说明提供用于充分理解和实施本公开的各种实施例的特定细节。本领域的技术人员应当理解,本公开的技术方案可以在没有这些细节中的一些的情况下被实施。在某些情况下,并没有示出或详细描述一些熟知的结构和功能,以避免不必要地使对本公开的实施例的描述模糊不清。在本公开中使用的术语以其最宽泛的合理方式来理解,即使其是结合本公开的特定实施例被使用的。

首先,对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解:

gop:视频编码中一般将连续若干帧图片组成的集合称为图片组(groupofpictures,gop);

gopn:表示具有n个帧的图片组,n为正整数;

i帧:其是关键帧,属于帧内预测帧,解码时只需要本帧数据就可以完成;

p帧:为帧间预测帧,p帧表示的是当前帧跟之前的一个i帧或p帧的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面;

b帧:为帧间预测帧并且是双向差别帧,记录的可以是本帧与前后帧的差别,要解码b帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。

图1图示了根据本公开的一个实施例的用于自适应地确定用于编码的图片组的帧数的方法100的示意流程图。如图1所示,所述方法包括如下步骤。

在步骤101,接收要编码的视频片段,所述视频片段包括多个视频帧。所述视频片段将以所述用于编码的图片组的帧数被编码。所述用于编码的图片组的帧数限定了对所述视频片段进行编码的gop结构。例如,用于编码的图片组的帧数为16,则将所述视频片段中的16个帧作为一个gop进行编码。应当指出,本公开中所描述的视频片段可以为视频序列的一部分或者全部,而视频序列的第一个帧始终都是i帧并且视频序列可以包括但不限于一个或多个i帧。换句话说,本公开的实施例所述的视频片段的第一帧可以是或者也可以不是i帧,例如其可以是p帧。

在步骤102,在以图片组为单位对所述视频片段的未编码视频帧每进行一次编码之前,确定未编码视频帧的帧数并且基于未编码视频帧的帧数自适应地确定用于编码的图片组的帧数。换句话说,每次对未编码视频帧中的一个图片组进行编码之前,都需要重新确定本次编码所适用的图片组的大小。

通过本公开的实施例中描述的用于自适应地确定用于编码的图片组的帧数的方法,可以在每次以图片组为单位对视频片段编码前基于视频片段中未编码视频帧的帧数确定本次编码的最适合的图片组的帧数或大小,使得所确定的用于编码的图片组的帧数能够自适应视频序列的特性。

图2图是了根据本公开的一个实施例的用于基于未编码视频帧的帧数自适应地确定用于编码的图片组的帧数的方法200流程图。所述方法200可以用于实现参照图1描述的步骤102中的基于未编码视频帧的帧数自适应地确定用于编码的图片组的帧数的步骤。所述方法包括如下步骤。

在步骤201,响应于所述未编码视频帧的帧数不小于第一预定帧数,则基于所述未编码视频帧中第一预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数。第一预定帧数为第一图片组的帧数和第二图片组的帧数之和并且第一图片组的帧数大于第二图片组的帧数。作为示例,所述第一图片组的帧数可以为16,第二图片组的帧数可以为4,第一预定帧数为20。

在步骤202,响应于所述未编码视频帧的帧数小于第一预定帧数但不小于第二预定帧数,则基于所述未编码视频帧中第二预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数。第二预定帧数与第一图片组的帧数相同,例如可以为16。

在步骤203,响应于所述未编码视频帧的帧数小于第二预定帧数,则将第三图片组的帧数确定为用于编码的图片组的帧数,所述第三图片组与所述未编码视频帧的帧数相同。也就是说,在所述未编码视频帧的帧数小于第二预定帧数的情况下,直接将所述未编码视频帧作为一个第三图片组进行编码。

通过本公开的实施例中描述的基于未编码视频帧的帧数自适应地确定用于编码的图片组的帧数的方法,可以基于未编码视频帧的帧数使用不同的确定方式来确定用于编码的图片组的帧数,从而使得所确定的用于编码的图片组的帧数能够更好地自适应视频序列的特性。

作为示例,图3图示了根据本公开的一个实施例用于基于第一预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数的方法300的示意性流程图。所述300包括如下步骤。

在步骤301,从未编码视频帧中的第一帧开始选取第一预定帧数的视频帧。所述未编码视频帧中的第一帧可以指所述未编码视频帧中按显示顺序排序的第一帧。如上面所述,所述第一预定帧数为第一图片组的帧数和第二图片组的帧数之和并且第一图片组的帧数大于第二图片组的帧数。

在步骤302,分别确定以第一图片组分解、第二图片组分解、第三图片组分解对所述第一预定帧数的视频帧进行编码时每个图片组分解的编码代价。第一图片组分解包括依次排列的第一图片组和第二图片组,第二图片组分解包括依次排列的第二图片组和第一图片组,第三图片组分解包括依次排列的多个第二图片组。

以所述第一图片组的帧数为16、第二图片组的帧数为4、第一预定帧数为20为例,图6a图示了第一图片组分解c1、第二图片组分解c2、以及第三图片组分解c3的示意图。如图6a所示,第一图片组分解c1包括依次排列的第一图片组gop16和第二图片组gop4,第二图片组分解包括依次排列的第二图片组gop4和第一图片组gop16,第三图片组分解包括依次排列的五个第二图片组gop4。应当指出,在本文中,gopn(n为正整数)表示具有n个帧的图片组。

在一些实施例中,可以通过对每个图片组分解中的所有图片组的编码代价求和来确定所述每个图片组分解的编码代价。作为示例,每个图片组的编码代价可以为所述每个图片组中所有视频帧的编码代价的和。

在一些实施例中,每个视频帧的编码代价为所述每个视频帧中所有编码单元的编码代价的和。编码单元指的是在对每个视频帧编码时所使用的编码块。可选地,每个编码单元的编码代价可以以如下公式被确定:

其中为当前编码单元的编码代价,sad为当前编码单元与其预测单元之间的绝对误差和,r为通过采用选定预测模式编码当前编码单元所估计的比特数,λ是拉格朗日乘子。

应当指出,所有视频帧中的每个视频帧的编码代价可以在对视频片段开始编码之前被全部确定,以避免后续编码阶段每次需要时的重新计算,从而节省系统资源。

在步骤303,确定第一图片组分解、第二图片组分解、第三图片组分解的编码代价中,第一图片组分解的编码代价是否最小。

在步骤304,响应于确定第一图片组分解的编码代价最小,将第一图片组的帧数确定为用于编码的图片组的帧数。否则,在步骤305将第二图片组的帧数确定为用于编码的图片组的帧数。

在本公开的实施例中,通过分别确定第一图片组分解、第二图片组分解、第三图片组分解的编码代价,能够高效地确定用于编码的图片组的帧数,从而使得所确定的用于编码的图片组的帧数能够更好地自适应视频序列的特性。

作为示例,图4图示了根据本公开的另一个实施例用于基于第一预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数的方法400的示意性流程图。所述400包括如下步骤。

在步骤401,从未编码视频帧中的第一帧开始选取第一预定帧数的视频帧。所述未编码视频帧中的第一帧可以指所述未编码视频帧中按显示顺序排序的第一帧。如上面所述,所述第一预定帧数为第一图片组的帧数和第二图片组的帧数之和并且第一图片组的帧数大于第二图片组的帧数。

在步骤402,分别确定以第一图片组分解、第二图片组分解对所述第一预定帧数的视频帧进行编码时每个图片组分解的编码代价。如上面所述,第一图片组分解包括依次排列的第一图片组和第二图片组,第二图片组分解包括依次排列的第二图片组和第一图片组。

在步骤403,确定第一图片组分解的编码代价是否小于第二图片组分解的编码代价。并且,在步骤404,响应于确定第一图片组分解的编码代价小于第二图片组分解的编码代价,则确定以第三图片组分解对所述第一预定帧数的视频帧进行编码时的编码代价,其中第三图片组包括依次排列的多个第二图片组。

在步骤405,确定第一图片组分解的编码代价是否小于第三图片组分解的编码代价。并且在步骤406,响应于确定第一图片组分解的编码代价小于第三图片组分解的编码代价,则将第一图片组的帧数确定为用于编码的图片组的帧数。

在步骤407,响应于在步骤403确定第一图片组分解的编码代价不小于第二图片组分解的编码代价或者在步骤405确定第一图片组分解的编码代价不小于第三图片组分解的编码代价,则将第二图片组的帧数确定为用于编码的图片组的帧数。

在本实施例中,与上面描述的类似,以所述第一图片组的帧数为16、第二图片组的帧数为4、第一预定帧数为20为例,第一图片组分解c1、第二图片组分解c2、以及第三图片组分解c3的示意图如图6a所示。

应当指出,在本实施例描述的图片组分解的编码代价的计算方式与参照方法300中描述的编码代价的计算方式相同,在此不再详述。

通过使用所描述的实施例,只有在确定第一图片组分解的编码代价小于第二图片组分解的编码代价的时候,才需要进一步确定第一图片组分解的编码代价是否小于第三图片组分解的编码代价。换句话说,在确定第一图片组分解的编码代价不小于第二图片组分解的编码代价的时候,可以直接将第二图片组的帧数确定为用于编码的图片组的帧数,从而不需要确定以第三图片组分解对所述第一预定帧数的视频帧进行编码时的编码代价,这无疑节省了所述方法的计算量,能够极大地提升自适应地确定用于编码的图片组的帧数时的效率。

图5图了根据本公开的一个实施例的基于第二预定帧数从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数的方法500的示意性流程图,所述第二预定帧数不同于上面描述的第一预定帧数。如图5所示,所述方法500包括如下步骤。

在步骤501,从未编码视频帧中的第一帧开始选取第二预定帧数的视频帧。所述未编码视频帧中的第一帧可以指所述未编码视频帧中按显示顺序排序的第一帧。如上面所描述的,所述第二预定帧数与第一图片组的帧数相同。

在步骤502,分别确定以第四图片组分解、第五图片组分解对所述第二预定帧数的视频帧进行编码时每个图片组分解的编码代价。第四图片组分解包括一个第一图片组(gop16),第五图片组分解包括多个第二图片组。

以所述第一图片组的帧数为16、第二图片组的帧数为4、第一预定帧数为16为例,图6b图示了第四图片组分解c4以及第五图片组分解c5的示意图。如图6b所示,第四图片组分解c4包括一个第一图片组gop16,第五图片组分解c5包括依次排列的四个第二图片组gop4。应当指出,在本文中,gopn(n为正整数)表示具有n个帧的图片组。

应当指出,在本实施例描述的图片组分解的编码代价的计算方式与参照方法300中描述的编码代价的计算方式相同,在此不再详述。

在步骤503,确定所述第四图片组分解的编码代价是否小于第五图片组分解的编码代价。

在步骤504,响应于确定第四图片组分解的编码代价小于第五图片组分解的编码代价,则将第一图片组的帧数确定为用于编码的图片组的帧数,否则在步骤505将第二图片组的帧数确定为用于编码的图片组的帧数。

在本公开的实施例中,通过分别确定第四图片组分解、第五图片组分解的编码代价,能够在未编码视频帧的帧数小于第一预定帧数但不小于第二预定帧数的情况下高效地确定用于编码的图片组的帧数,从而使得所确定的用于编码的图片组的帧数能够更好地自适应视频序列的特性。

在一些实施例中,在确定了用于编码的图片组的帧数的情况下,就可以对接收的视频片段进行以图片组为单位的编码,并且可选地也可以确定基于所述用于编码的图片组的帧数进行编码时的编码方法。

作为示例,图7图示了基于gop16对视频片段进行编码的顺序和方式。如图7所示,视频片段中的帧的原始顺序与图中所示的帧的显示顺序相同,在图7中的显示顺序从左到右分别为第0帧、第1帧,……,第16帧。应当指出,图中gop16的范围为图中所示第1-16帧,图中所示的第0帧通常为前一视频片段的帧,并不是该gop16中的帧。所述第0帧可以是i帧或者p帧,这不是限制性的。

如图7中所示,所述视频片段中的第一帧的编码顺序为5,并且被编码为b帧。所述数视频片段中的第二帧的编码顺序为4,并且被编码为b帧,以此类推。应当指出,图7中分别以符号“i”、“b”、“p”表示所编码形成的帧为i帧、b帧、p帧。图7中的箭头表示编码时的参考关系,箭头起始处的帧为被编码的帧,箭头指向的帧为其编码时所参考的帧。例如,所述视频片段中的编码顺序为5的第一帧在编码时是通过参考第0帧(i帧)和编码顺序为4的第二帧被编码形成的b帧而被预测的,而所述视频片段中的编码顺序为1的第16帧在编码时是通过仅参考第0帧(i帧)而被预测的。

作为示例,图8图示了基于gop4对视频片段进行编码的顺序和方式。如图8所示,视频片段中的帧的原始顺序与图中所示的帧的显示顺序相同,在图8中的显示顺序从左到右分别为第0帧、第1帧,第2帧,第3帧和第4帧。应当指出,图中gop4的范围为图中所示的第1-4帧,图中所示的第0帧通常为前一视频片段的帧,并不是gop4中的帧。所述第0帧可以是i帧或者p帧,这不是限制性的。

如图8中所示,所述视频片段中的第一帧的编码顺序为3,并且被编码为b帧。所述数视频片段中的第二帧的编码顺序为2,并且被编码为b帧,以此类推。应当指出,图8中分别以符号“i”、“b”、“p”表示所编码形成的帧为i帧、b帧、p帧。图8中的箭头表示编码时的参考关系,箭头起始处的帧为被编码的帧,箭头指向的帧为其编码时的参考帧。例如,所述视频片段中的编码顺序为3的第一帧在编码时是通过参考第0帧(i帧)和编码顺序为2的第二帧被编码形成的b帧而被预测的,而所述视频片段中的编码顺序为1的第4帧在编码时是通过仅参考第0帧(i帧)而被预测的。

图9图示了根据本公开的一个实施例的用于自适应地确定用于编码的图片组的帧数的设备900的示例性结构框图。如图9所示,所述设备900包括接收模块910和确定模块920。

所述接收模块910被配置成接收要以所述用于编码的图片组的帧数进行编码的视频片段,所述视频片段包括多个视频帧。所述用于编码的图片组的帧数限定了对所述视频片段进行编码的gop结构。例如,用于编码的图片组的帧数为16,则将所述视频片段中的16个帧作为一个gop进行编码。

所述确定模块920被配置成在以图片组为单位对所述视频片段的未编码视频帧每进行一次编码之前,确定未编码视频帧的帧数,并且基于未编码视频帧的帧数自适应地确定用于编码的图片组的帧数。换句话说,每次对未编码视频帧中的一个图片组进行编码之前,所述确定模块920都需要重新确定本次编码所适用的图片组的大小。

在一些实施例中,如图9所示,所述确定模块920可以包括第一确定子模块921、第二确定子模块922、第三确定子模块923。

所述第一确定子模块921被配置成响应于所述未编码视频帧的帧数不小于第一预定帧数,则基于所述未编码视频帧中第一预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数,其中第一预定帧数为第一图片组的帧数和第二图片组的帧数之和并且第一图片组的帧数大于第二图片组的帧数。作为示例,所述第一图片组的帧数可以为16,第二图片组的帧数可以为4,第一预定帧数为20。

所述第二确定子模块922被配置成响应于所述未编码视频帧的帧数小于第一预定帧数但不小于第二预定帧数,则基于所述未编码视频帧中第二预定帧数的视频帧从第一图片组的帧数和第二图片组的帧数中确定用于编码的图片组的帧数。第二预定帧数与第一图片组的帧数相同,例如可以为16。

所述第三确定子模块923被配置成响应于所述未编码视频帧的帧数小于第二预定帧数,则将第三图片组的帧数确定为用于编码的图片组的帧数,所述第三图片组与所述未编码视频帧的帧数相同。也就是说,在所述未编码视频帧的帧数小于第二预定帧数的情况下,所述第三确定子模块923直接将所述未编码视频帧作为一个第三图片组进行编码。

在一些实施例中,所述第一确定子模块921被配置成响应于所述未编码视频帧的帧数不小于第一预定帧数:从未编码视频帧中的第一帧开始选取第一预定帧数的视频帧;分别确定以第一图片组分解、第二图片组分解对所述第一预定帧数的视频帧进行编码时每个图片组分解的编码代价,其中第一图片组分解包括依次排列的第一图片组和第二图片组,第二图片组分解包括依次排列的第二图片组和第一图片组;响应于第一图片组分解的编码代价小于第二图片组分解的编码代价,则确定以第三图片组分解对所述第一预定帧数的视频帧进行编码时的编码代价,其中第三图片组包括依次排列的多个第二图片组;响应于第一图片组分解的编码代价小于第三图片组分解的编码代价,则将第一图片组的帧数确定为用于编码的图片组的帧数;响应于第一图片组分解的编码代价不小于第二图片组分解的编码代价或者第三图片组分解的编码代价,将第二图片组的帧数确定为用于编码的图片组的帧数。

在一些实施例中,所述第一确定子模块921被配置成响应于所述未编码视频帧的帧数不小于第一预定帧数:从未编码视频帧中的第一帧开始选取第一预定帧数的视频帧;分别确定以第一图片组分解、第二图片组分解对所述第一预定帧数的视频帧进行编码时每个图片组分解的编码代价,其中第一图片组分解包括依次排列的第一图片组和第二图片组,第二图片组分解包括依次排列的第二图片组和第一图片组;响应于第一图片组分解的编码代价小于第二图片组分解的编码代价,则确定以第三图片组分解对所述第一预定帧数的视频帧进行编码时第三图片组分解的编码代价,其中第三图片组包括依次排列的多个第二图片组;响应于第一图片组分解的编码代价小于第三图片组分解的编码代价,则将第一图片组的帧数确定为用于编码的图片组的帧数;响应于第一图片组分解的编码代价不小于第二图片组分解的编码代价或者第三图片组分解的编码代价,将第二图片组的帧数确定为用于编码的图片组的帧数。

在一些实施例中,所述第一确定子模块922被配置成响应于所述未编码视频帧的帧数小于第一预定帧数但不小于第二预定帧数:从未编码视频帧中的第一帧开始选取第二预定帧数的视频帧;分别确定以第四图片组分解、第五图片组分解对所述第二预定帧数的视频帧进行编码时每个图片组分解的编码代价,其中第四图片组分解包括一个第一图片组,第五图片组分解包括多个第二图片组;响应于第四图片组分解的编码代价小于第五图片组分解的编码代价,则将第一图片组的帧数确定为用于编码的图片组的帧数,否则将第二图片组的帧数确定为用于编码的图片组的帧数。

图10图示了示例系统1000,其包括代表可以实现本文描述的各种技术的一个或多个系统和/或设备的示例计算设备1010。计算设备1010可以是例如服务提供商的服务器、与服务器相关联的设备、片上系统、和/或任何其它合适的计算设备或计算系统。上面关于图9描述的用于自适应地确定用于编码的图片组的帧数的设备900可以采取计算设备1010的形式。替换地,用于自适应地确定用于编码的图片组的帧数的设备900可以以gop确定应用1016的形式被实现为计算机程序。

如图示的示例计算设备1010包括彼此通信耦合的处理系统1011、一个或多个计算机可读介质1012以及一个或多个i/o接口1013。尽管未示出,但是计算设备1010还可以包括系统总线或其他数据和命令传送系统,其将各种组件彼此耦合。系统总线可以包括不同总线结构的任何一个或组合,所述总线结构诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。还构思了各种其他示例,诸如控制和数据线。

处理系统1011代表使用硬件执行一个或多个操作的功能。因此,处理系统1011被图示为包括可被配置为处理器、功能块等的硬件元件1014。这可以包括在硬件中实现为专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件1014不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(ic))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。

计算机可读介质1012被图示为包括存储器/存储装置1015。存储器/存储装置1015表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置1015可以包括易失性介质(诸如随机存取存储器(ram))和/或非易失性介质(诸如只读存储器(rom)、闪存、光盘、磁盘等)。存储器/存储装置1015可以包括固定介质(例如,ram、rom、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质1012可以以下面进一步描述的各种其他方式进行配置。

一个或多个i/o接口1013代表允许用户向计算设备1010输入命令和信息并且可选地还允许使用各种输入/输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备1010可以以下面进一步描述的各种方式进行配置以支持用户交互。

计算设备1010还包括gop确定应用1016。gop确定应用1016可以例如图9描述的用于自适应地确定用于编码的图片组的帧数的设备900的软件实例,并且与计算设备1010中的其他元件相组合地实现本文描述的技术。

本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”,“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。

所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备1010访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。

与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于ram、rom、eeprom、闪存或其它存储器技术、cd-rom、数字通用盘(dvd)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。

“计算机可读信号介质”是指被配置为诸如经由网络将指令发送到计算设备1010的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。术语“调制数据信号”是指以这样的方式对信号中的信息进行编码来设置或改变其特征中的一个或多个的信号。作为示例而非限制,通信介质包括诸如有线网络或直接连线的有线介质以及诸如声、rf、红外和其它无线介质的无线介质。

如前所述,硬件元件1014和计算机可读介质1012代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(asic)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。

前述的组合也可以用于实现本文所述的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件1014体现的一个或多个指令和/或逻辑。计算设备1010可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件1014,可以至少部分地以硬件来实现将模块实现为可由计算设备1010作为软件执行的模块。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备1010和/或处理系统1011)可执行/可操作以实现本文所述的技术、模块和示例。

在各种实施方式中,计算设备1010可以采用各种不同的配置。例如,计算设备1010可以被实现为包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等的计算机类设备。计算设备1010还可以被实现为包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备的移动装置类设备。计算设备1010还可以实现为电视类设备,其包括具有或连接到休闲观看环境中的一般地较大屏幕的设备。这些设备包括电视、机顶盒、游戏机等。

本文描述的技术可以由计算设备1010的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。功能还可以通过使用分布式系统、诸如通过如下所述的平台1022而在“云”1020上全部或部分地实现。

云1020包括和/或代表用于资源1024的平台1022。平台1022抽象云1020的硬件(例如,服务器)和软件资源的底层功能。资源1024可以包括在远离计算设备1010的服务器上执行计算机处理时可以使用的应用和/或数据。资源1024还可以包括通过因特网和/或通过诸如蜂窝或wi-fi网络的订户网络提供的服务。

平台1022可以抽象资源和功能以将计算设备1010与其他计算设备连接。平台1022还可以用于抽象资源的分级以提供遇到的对于经由平台1022实现的资源1024的需求的相应水平的分级。因此,在互连设备实施例中,本文描述的功能的实现可以分布在整个系统1000内。例如,功能可以部分地在计算设备1010上以及通过抽象云1020的功能的平台1022来实现。

应当理解,为清楚起见,参考不同的功能单元对本公开的实施例进行了描述。然而,将明显的是,在不偏离本公开的情况下,每个功能单元的功能性可以被实施在单个单元中、实施在多个单元中或作为其它功能单元的一部分被实施。例如,被说明成由单个单元执行的功能性可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能性的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本公开可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。

将理解的是,尽管第一、第二、第三等术语在本文中可以用来描述各种设备、元件、部件或部分,但是这些设备、元件、部件或部分不应当由这些术语限制。这些术语仅用来将一个设备、元件、部件或部分与另一个设备、元件、部件或部分相区分。

尽管已经结合一些实施例描述了本公开,但是其不旨在被限于在本文中所阐述的特定形式。相反,本公开的范围仅由所附权利要求来限制。附加地,尽管单独的特征可以被包括在不同的权利要求中,但是这些可以可能地被有利地组合,并且包括在不同权利要求中不暗示特征的组合不是可行的和/或有利的。特征在权利要求中的次序不暗示特征必须以其工作的任何特定次序。此外,在权利要求中,词“包括”不排除其它元件,并且不定冠词“一”或“一个”不排除多个。权利要求中的附图标记仅作为明确的例子被提供,不应该被解释为以任何方式限制权利要求的范围。

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