视频编码方法、装置、计算机设备和存储介质与流程

文档序号:18524797发布日期:2019-08-24 10:08阅读:203来源:国知局
视频编码方法、装置、计算机设备和存储介质与流程

本申请涉及计算机技术领域,特别是涉及一种视频编码方法、装置、计算机设备和存储介质。



背景技术:

随着计算机技术领域的发展,视频的应用场景越来越广。传统的编码器对视频中的各个视频帧无区分地进行编码,这种编码方式对于原始视频中存在关注度低的视频帧的场景,对于关注度低的视频帧无区分进行视频编码,容易导致编码时间长,造成编码效率低。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种视频编码方法、装置、计算机设备和存储介质,在视频编码过程中,根据视频帧的关注度,采用不同的编码方式进行编码能够减少编码时间,从而提高编码效率。

一种视频编码方法,该方法包括:

获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度;

获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的;

根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式;

根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

一种视频编码装置,该装置包括:

第一编码复杂度获取模块,用于获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度;

第二编码复杂度获取模块,用于获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的;

编码方式确定模块,用于根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式;

待编码视频帧编码模块,用于根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行所述程序时实现以下步骤:

获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度;

获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的;

根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式;

根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:

获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度;

获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的;

根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式;

根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

上述视频编码方法、装置、计算机可读存储介质和计算机设备,获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度,获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式,根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。由于根据待编码视频帧的第一编码复杂度和待编码视频帧之前的前向视频帧的第二编码复杂度确定待编码视频帧的编码方式,根据待编码视频帧的第一编码复杂度和待编码视频帧之前的前向视频帧的第二编码复杂度确定待编码视频帧的关注度,根据待编码视频帧的关注度自适应的确定对应的编码方式,能够减少编码时间,提高编码效率。

附图说明

图1为一个实施例中视频编码方法的应用环境图;

图2为一个实施例中视频编码方法的流程示意图;

图3为一个实施例中第一编码复杂度和第二编码复杂度的生成步骤的流程示意图;

图4为一个实施例中目标帧间复杂度生成步骤的流程示意图;

图5为一个实施例中各个预编码视频块对应的帧间复杂度生成步骤的流程示意图;

图6为一个实施例中当前视频帧对应的编码复杂度确定步骤的流程示意图;

图7为一个实施例中根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式的流程示意图;

图8为另一个实施例中视频编码方法的流程示意图;

图8a为一个实施例中视频编码方法的示意图;

图9为一个实施例中视频编码方法的应用场景图;

图10为一个实施例中视频编码装置的结构框图;

图11为另一个实施例中视频编码装置的结构框图;

图12为一个实施例中目标帧间复杂度生成模块的结构框图;

图13为一个实施例中编码复杂度确定模块的结构框图;

图14为一个实施例中计算机设备的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中视频编码方法的应用环境图。参照图1,该视频编码方法应用于视频编码系统。该视频编码系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

具体地,终端110获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度,获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,再根据预编码数据计算得到的,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式,最后根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。或者,终端110将待编码视频帧发送至服务器120,服务器120获取到待编码视频帧后,获取待编码视频帧对应的第一编码复杂度,获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式,根据目标编码方式对待编码视频帧进行编码得到对应的编码数据,最后将编码数据发送至终端110。

如图2所示,在一个实施例中,提供了一种视频编码方法。本实施例主要以该方法应用于上述图1中的终端110或服务器120来举例说明。参照图2,该视频编码方法具体包括如下步骤:

步骤202,获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度。

其中,待编码视频帧是构成待编码视频的基本单位,待编码视频即为若干帧视频帧构成的帧序列。待编码视频是指未进行视频编码的视频,视频编码是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。其中,待编码视频帧可以是实时采集的视频帧,用于即时通信,也可以是存储的视频对应的视频帧。

编码复杂度体现了视频帧在编码时的复杂程度,编码复杂度越高,消耗的编码时间越长。可通过不同的算法计算待编码视频帧对应的第一编码复杂度,如通过图像内容的纹理检测计算待编码视频帧对应的第一编码复杂度,或通过待编码视频帧与预编码参考帧之间的像素差距计算待编码视频帧对应的第一编码复杂度,其中像素差距可以通过绝对误差和sad(sumofabsolutedifferences,绝对误差和)进行统计,或者可以通过率失真代价来表示第一编码复杂度等等。第一编码复杂度可以通过对待编码视频帧进行预编码得到对应的预编码数据,再根据预编码数据计算得到的。

其中,预编码是指在对待编码视频帧进行视频编码之前,对待编码视频帧进行预先处理的过程。预编码过程包括但不限于对待编码视频帧分割过程,再对待编码视频帧分割过程产生的各个预编码视频块进行预编码帧间预测和预编码帧内预测,进而最后计算得到预编码数据等过程。而预编码数据是指在对待编码视频帧进行预编码过程中产生的编码数据。

具体地,终端在获取到待编码视频帧后,为了减少最后视频编码器的编码时间,从而提高编码效率,可在对待编码视频帧进行视频编码之前先对待编码视频帧进行预编码,如先对该待编码视频帧进行预编码,得到待编码视频帧对应的预编码数据,最后根据预编码数据计算得到第一编码复杂度,第一编码复杂度越高说明待编码视频帧的编码过程复杂程度越高。其中,对待编码视频帧进行预编码过程具体可以是但不限于,对待编码视频帧进行分割,得到多个预编码视频块,再对各个预编码视频块分别进行预编码帧间预测和预编码帧内预测,分别得到对应的目标帧间复杂度和目标帧内复杂度,最后根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度计算得到第一编码复杂度。

步骤204,获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的。

其中,前向视频帧是指待编码视频帧之前的视频帧,可以是已编码的前向视频帧,也可以是丢弃的未编码的前向视频帧。具体可根据预设规则获取待编码视频帧的前向视频帧。预设规则可自定义,自定义可以是但不限于从待编码视频帧之前的所有的视频帧中获取预设数量个视频帧作为前向视频帧等等。第二编码复杂度是指对获取到的前向视频帧进行预编码,根据预编码产生的预编码数据计算得到的编码复杂度。其中,需要保证第一编码复杂度和第二编码复杂度具有可比较性,在一个实施例中,第一编码复杂度和第二编码复杂度采用同类型的复杂算法计算得到。

具体地,终端在获取到待编码视频帧后,根据预设规则获取待编码视频帧之前的前向视频帧,为了计算得到前向视频帧对应的第二编码复杂度,需对前向视频帧进行预编码。预编码具体可以是但不限于,先对前向视频帧进行分割得到多个预编码视频块,再对各个预编码视频块分别进行预编码帧间预测和预编码帧内预测,得到各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,最后根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度计算得到前向视频帧对应的第二编码复杂度。其中预编码是比实际编码过程耗时少的编码方式,为了保证预编码是比实际编码过程耗时少,预编码过程中的预编码帧间预测和预编码帧内预测采用快速预测算法。

步骤206,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式。

其中,编码方式是通过视频编码器对待编码视频帧进行编码的方式,编码方式包括但不限于第一编码方式,或者第二编码方式等等。其中,不同的编码方式采用不同的编码算法对待编码视频帧进行编码。不同的编码算法是指进行编码时设置的各个编码参数不同,如运动搜索范围不同,量化参数不同,率失真代价计算方式不同,码率信息不同等等。其中,第一编码方式可以是需将整个视频帧丢弃,即对丢弃的视频帧不进行视频编码,第二编码方式可以是对视频帧进行快速编码算法,减少运动搜索范围,进行简单编码方式等等。第一编码方式的编码时间对应的编码时间与第二编码方式对应的编码时间不同,具体可通过快速编码算法使得对应的编码时间耗时少,其中,关注度高的视频帧采用耗时少的编码方式进行编码。

具体地,在获取待编码视频帧对应的第一编码复杂度和待编码视频帧之前的前向视频帧对应的第二编码复杂度后,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式。其中,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式的方式可自定义,自定义可以是根据第一编码复杂度和第二编码复杂度得到对应的复杂度差距,根据复杂度差距与各个候选编码方式的关系确定待编码视频帧对应的目标编码方式,或者判定第一编码复杂度和第二编码复杂度的复杂度差距是否超过预设范围,从而确定待编码视频帧对应的目标编码方式,或者第一编码复杂度和第二编码复杂度的复杂度差距达到预设阈值时,则确定待编码视频帧对应的目标编码方式等。其中,复杂度差距可以是第一编码复杂度与第二编码复杂度的差值,或者是第一编码复杂度与第二编码复杂度的比值等等。其中,预设范围以及复杂度差距与各个候选编码方式的关系可预先根据实际需求进行设置。

步骤208,根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

其中,编码数据是视频编码器在对待编码视频帧进行编码时产生的相关数据。具体地,在根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式后,根据目标编码方式对应的视频编码器对待编码视频帧进行编码,从而得到对应的编码数据。其中,视频编码器是用来对待编码视频帧进行编码的,视频编码器可以是但不限于物理视频编码器、软件视频编码器等等。

在一个实施例中,若目标编码方式为丢弃待编码视频帧,则根据目标编码方式将待编码视频帧进行丢弃,则说明待编码视频帧是关注度低的视频帧,即用户感兴趣度低的视频帧,对于关注度低或者感兴趣度低的待编码视频帧则无需采用视频编码器进行视频编码,直接进行丢弃从而减少编码时间,提高编码效率。

在一个实施例中,若待编码视频帧的编码复杂度高,则目标编码方式为使用快速编码算法编码,进行简单的视频编码的编码方式,根据该目标编码方式使用快速编码算法对该待编码视频帧进行简单的视频编码,能够减少视频编码消耗的时间,提高编码效率。

上述视频编码方法,获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度,获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式,根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。由于根据待编码视频帧的第一编码复杂度和待编码视频帧之前的前向视频帧的第二编码复杂度确定待编码视频帧的编码方式,根据待编码视频帧的第一编码复杂度和待编码视频帧之前的前向视频帧的第二编码复杂度确定待编码视频帧的关注度,根据待编码视频帧的关注度自适应的确定对应的编码方式,能够减少编码时间,提高编码效率。

在一个实施例中,如图3所示,第一编码复杂度和第二编码复杂度的生成步骤,当计算第一编码复杂度时,将待编码视频帧作为当前视频帧,当计算第二编码复杂度时,将前向视频帧作为当前视频帧,包括:

步骤302,对当前视频帧进行分割,得到多个预编码视频块。

其中,由于第一编码复杂度是对待编码视频帧进行预编码计算得到的,因此当计算第一编码复杂度时,则将待编码视频帧作为当前视频帧,同样地,由于第二编码复杂度是对待编码视频帧之前的前向视频帧进行预编码计算得到的,因此当计算第二编码复杂度时,则将前向视频帧作为当前视频帧。

具体地,可根据预设分割规则对当前视频帧进行分割,得到多个预编码视频块。预设分割规则可自定义,自定义可以是但不限于将当前视频帧按照预设相同比例进行均一分割,如将当前视频帧划分成8*8的预编码视频块。或者将当前视频帧按照编码器的编码规则对当前视频帧进行分割,如将当前视频帧部分区域划分为8*8的预编码视频块,另外部分区域划分为16*16的预编码视频块。

步骤304,对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的目标帧间复杂度。

其中,预编码帧间预测是指预编码过程中的帧间预测,帧间预测是利用视频时域的相关性,使用邻近视频帧的像素预测当前视频帧的像素,以达到有效去除视频时域冗余的目的。预编码帧间预测包括但不限于运动估计、运动补偿等,运动估计包括但不限于运动搜索方法、运动估计准则、亚像素插值和运动矢量估计。

具体地,在对当前视频帧进行分割得到多个预编码视频块后,对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的目标帧间复杂度。对各个预编码视频块进行预编码帧间预测可以是通过简单快速的运动搜索算法对各个预编码视频块进行运动搜索,根据运动搜索结果从而得到各个预编码视频块对应的目标帧间复杂度。运动搜索就是在允许的搜索范围内查找最佳预编码视频块的过程,而目标帧间复杂度可以是将各个预编码视频块与对应的最佳预编码视频块的相对偏移量作为各个预编码视频块对应的目标帧间复杂度。

步骤306,对各个预编码视频块进行预编码帧内预测,得到各个预编码视频块对应的目标帧内复杂度。

其中,预编码帧内预测是指预编码过程中的帧内预测,帧内预测是利用相邻预编码视频块的空间相关性,根据预测像素值和实际像素值达到有效去除视频空间冗余的目的。预编码帧内预测包括但不限于遍历所有的预测模式,得到每种预测模式下的残差信号,再对残差信号进行变换计算绝对误差和sad值等,预测模式包括水平方向模式、垂直方向模式以及dc模式。

具体地,在对当前视频帧进行分割得到多个预编码视频块后,对各个预编码视频块进行预编码帧内预测,得到各个预编码视频块对应的目标帧内复杂度。对各个预编码视频块进行预编码帧内预测可以是简单对各个预编码视频块做水平方向模式、垂直方向模式以及dc模式的帧内预测,从而得到各个预编码视频块在各个预测模式下对应的残差信号,再对各个预编码视频块的残差信号进行变换计算得到各个预编码视频块在各个预测模式下的绝对误差和sad值,最后根据预设规则从各个预测模式下的绝对误差和sad值选取目标sad值作为各个预编码视频块对应的目标帧内复杂度。

步骤308,根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度。

具体地,在对各个预编码视频块进行预编码帧间预测得到各个预编码视频块对应的目标帧间复杂度和对各个预编码视频块进行预编码帧内预测得到各个预编码视频块对应的目标帧内复杂度后,根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度。其中根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度的确定方式可自定义,自定义可以是先根据第一预设条件从各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度选取目标复杂度,再统计各个预编码视频块的目标复杂度得到综合复杂度,将综合复杂度作为当前视频帧对应的编码复杂度。或者是先统计各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度分别得到综合标帧间复杂度和综合目标帧内复杂度,再根据第二预设条件从综合标帧间复杂度和综合目标帧内复杂度选取目标综合复杂度,将目标综合复杂度作为当前视频帧对应的编码复杂度等等。其中,统计过程可以是求和计算,也可以是加权计算等等。第一预设条件和第二预设条件可预先根据实际需求进行设置。

在一个实施例中,如图4所示,对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的目标帧间复杂度包括:

步骤402,获取当前视频帧的前向视频帧,从前向视频帧中获取与各个预编码视频块对应的预编码参考视频块。

其中,当计算第一编码复杂度时,将待编码视频帧作为当前视频帧。而当计算第二编码复杂度时,将前向视频帧作为当前视频帧。当前视频帧的前向视频帧是指当前视频帧之前的视频帧,具体可根据预设规则获取当前视频帧的前向视频帧。预设规则可自定义,自定义可以是但不限于从当前视频帧之前的视频帧中获取预设数量个视频帧作为前向视频帧等等。进一步地,在获取与各个预设编码视频块对应的预编码参考视频块。预编码参考视频块是预编码过程中用来参考的视频块,其中获取与各个预设编码视频块对应的预编码参考块具体可根据预设参考规则获取与各个预编码视频块对应的预编码参考视频块。该预设参考规则包括但不限于当前视频帧与参考帧的参考关系,参考关系具体可以是但不限于分辨率大小关系。

具体地,先根据预设参考规则中当前视频帧与参考帧的参考关系获取与当前视频帧对应的参考帧,再对获取到的参考帧按照当前视频帧相同的预设分割规则分割,得到多个参考视频块,再从多个参考视频块中获取与各个预编码视频块对应的预编码参考视频块。

步骤404,根据各个预编码视频块和对应的预编码参考视频块的像素值,计算得到各个预编码视频块对应的第一帧间复杂度,将第一帧间复杂度作为目标帧间复杂度。

其中,帧间复杂度是用来表示各个预编码视频块进行预编码帧间预测的复杂程度。帧间复杂度可以根据各个预编码视频块和对应的预编码参考视频块的像素值计算得到的,或者根据各个预编码视频块和对应的预编码参考视频块的位置计算得到的等等。这里的第一帧间复杂度是根据各个预编码视频块和对应的预编码参考视频块的像素值计算得到的。

具体地,在从前向视频帧中获取与各个预编码视频块对应的预编码参考视频块后,根据各个预编码视频块和对应的预编码参考视频块的像素值,计算得到各个预编码视频块对应的第一帧间复杂度。其中,像素值可以根据图像rgb值计算得到。其中根据各个预编码视频块和对应的预编码参考视频块的像素值,计算得到各个预编码视频块对应的第一帧间复杂度具体可以是但不限于,将各个预编码视频块和对应的预编码参考视频块的像素值的像素值差值作为各个预编码视频块对应的第一帧间复杂度,或者是将各个预编码视频块和对应的预编码参考视频块的像素值的像素值差值按照预设比重计算进而得到各个预编码视频块对应的第一帧间复杂度等等。最后,再将各个预编码视频块对应的第一帧间复杂度作为各个预编码视频块对应的目标帧间复杂度。

在一个实施例中,如图5所示,对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的帧间复杂度包括:

步骤502,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块对应的第二帧间复杂度。

其中,第二帧间复杂度是根据各个预编码视频块和对应的预编码参考视频块的位置计算得到的等等。这里的第二帧间复杂度是根据各个预编码视频块和对应的预编码参考视频块的位置计算得到的。其中,第二帧间复杂度代表了运动复杂度,运动复杂度可以通过运动矢量来表示等等。

其中,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到第二帧间复杂度可以是但不限于将各个预编码视频块和对应的预编码参考视频块的位置的差值作为各个预编码视频块对应的第二帧间复杂度,或者将各个预设编码视频块和对应的预编码参考视频块的位置的差值按照预设比重计算进而得到各个预编码视频块对应的第二帧间复杂度,或者将各个预编码视频块和对应的预编码参考视频块的位置的比值作为各个预编码视频块对应的第二帧间复杂度等等。

在一个实施例中,若各个预编码视频块和对应的预编码参考视频块在第一维度和第二维度分别进行了图像运动,则根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块对应的第二帧间复杂度具体可以是但不限于,先分别根据各个预编码视频块和对应的预编码参考视频块在第一维度的位置计算得到第一维度帧间复杂度,和根据各个预编码视频块和对应的预编码参考视频块在第二维度的位置计算得到第二维度帧间复杂度,然后再分别根据各个预编码视频块和对应的预编码参考视频块在第一维度的第一维度帧间复杂度和在第二维度的第二维度帧间复杂度计算得到各个预编码视频块对应的第二帧间复杂度。其中,根据各个预编码视频块和对应的预编码参考视频块在第一维度的第一维度帧间复杂度和在第二维度的第二维度帧间复杂度计算得到各个预编码视频块对应的第二帧间复杂度可以是但不限于,统计各个预编码视频块和对应的预编码参考视频块在第一维度的第一维度帧间复杂度和在第二维度的第二维度帧间复杂度得到综合帧间复杂度,再将各个预编码视频块对应的综合帧间复杂度作为各个预编码视频块对应的第二帧间复杂度。

步骤504,根据第一帧间复杂度和第二帧间复杂度计算得到各个预编码视频块对应的目标帧间复杂度。

具体地,在得到各个预编码视频块对应的第一帧间复杂度和第二帧间复杂度后,根据第一帧间复杂度和第二帧间复杂度计算得到各个预编码视频块对应的目标帧间复杂度。其中,根据第一帧间复杂度和第二帧间复杂度计算得到各个预编码视频块对应的目标帧间复杂度可以是但不限于,将各个预编码视频块对应的第一帧间复杂度和第二帧间复杂度的平均值作为各个预编码视频块对应的目标帧间复杂度。或者根据预设规则从各个预编码视频块对应的第一帧间复杂度和第二帧间复杂度选取各个预编码视频块对应的目标帧间复杂度,预设规则可自定义,自定义可以是将帧间复杂度最小的帧间复杂度作为目标帧间复杂度等。或者是将各个预编码视频块对应的第一帧间复杂度和第二帧间复杂度进行加权计算得到各个预编码视频块对应的综合帧间复杂度,将综合帧间复杂度作为各个预编码视频块对应的目标帧间复杂度等等。

在一个实施例中,如图6所示,根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度,包括:

步骤602,根据预设条件从目标帧间复杂度和目标帧内复杂度选取目标复杂度。

步骤604,统计各个预编码视频块对应的目标复杂度,计算得到当前视频帧对应的编码复杂度。

具体地,在对各个预编码视频块分别进行了预编码帧间预测和预编码帧内预测得到各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度后,根据预设条件从目标帧间复杂度和目标帧内复杂度中选取目标复杂度。其中,预设条件可自定义,自定义可以是将目标帧间复杂度和目标帧内复杂度中复杂度低的复杂度作为目标复杂度,或者将目标帧间复杂度和目标帧内复杂度中复杂度低于预设复杂度阈值的复杂度作为目标复杂度,或者将目标帧间复杂度和目标帧内复杂度的平均复杂度作为目标复杂度等等。

进一步地,当根据预设条件从目标帧间复杂度和目标帧内复杂度选取得到各个预编码视频块对应的目标复杂度后,统计各个预编码视频块对应的目标复杂度,从而计算得到当前视频帧对应的编码复杂度。其中,统计的计算方式可自定义,自定义可以是求和计算,如将各个预编码视频块对应的目标复杂度的总和作为当前视频帧对应的编码复杂度。或者自定义可以是加权计算,如将各个预编码视频块对应的目标复杂度按照预设权重进行加权计算得到综合目标复杂度,将综合目标复杂度作为当前视频帧对应的编码复杂度。或者自定义可以是平均值计算,如将各个预编码视频块对应的目标复杂度的平均值作为当前视频帧对应的编码复杂度。或者自定义可以是方差计算,如将各个预编码视频块对应的目标复杂度的方差作为当前视频帧对应的编码复杂度。

在一个实施例中,如图7所示,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式,包括:

步骤702,当第一编码复杂度大于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围时,确定待编码视频帧对应的编码方式为第一编码方式。

具体地,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式可以是,当第一编码复杂度大于第二编码复杂度,说明第一编码复杂度对应的待编码视频帧比第二编码复杂度对应的前向视频帧复杂,计算第一编码复杂度与第二编码复杂度的复杂度差距,再判断该复杂度差距是否超过第一预设范围,若当第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围时,则说明第一编码方式更适合待编码视频帧,因此确定待编码视频帧对应的编码方式为第一编码方式,当第一编码复杂度与第二编码复杂度的复杂度差距未超过第一预设范围时,则说明第一编码方式并不适合待编码视频帧,因此可以通过步骤704进行判定待编码视频帧对应的目标编码方式,或者可以直接确定待编码视频帧对应的目标编码方式为第二编码方式。其中,第一编码方式的编码时间少于第二编码方式的编码时间,具体第一编码方式可通过快速编码算法使得第一编码方式的编码时间少于第二编码方式的编码时间。其中,若第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围说明第一编码复杂度对应的待编码视频帧复杂度高,需使用第一编码方式对其进行编码,从而减少编码时间,提高编码效率。

其中,复杂度差距可以是将第一编码复杂度与第二编码复杂度的复杂度差值作为复杂度差距,或者可以是将第一编码复杂度与第二编码复杂度的比值作为复杂度差距。第一预设范围可预先根据实际需要进行设置,第一编码方式可以是将整个视频帧直接进行丢弃,并不进行任何视频编码的编码方式,通过这样的编码方式可以减少编码时间,提高编码效率。或者第一编码方式可以是对视频帧进行简单的视频编码的编码方式,如使用快速编码算法进行视频编码。

在一个实施例中,若确定待编码视频帧对应的目标编码方式为第一编码方式,则说明该待编码视频帧是感兴趣度低,且关注度低的视频帧内容,因此可以将其进行丢弃可提高编码效率,减少编码时间,人们能够快速观看自己感兴趣的内容。

步骤704,当第一编码复杂度小于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围时,确定待编码视频帧对应的编码方式为第二编码方式。

具体地,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式也可以是,当第一编码复杂度小于第二编码复杂度,说明第二编码复杂度对应的前向视频帧比第一编码复杂度对应的待编码视频帧复杂,计算第一编码复杂度与第二编码复杂度的复杂度差距,再判断该复杂度差距是否超过第二预设范围,若当第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围时,则说明第二编码方式更适合待编码视频帧,因此确定待编码视频帧对应的编码方式为第二编码方式,当第一编码复杂度与第二编码复杂度的复杂度差距未超过第二预设范围时,则说明第二编码方式并不适合该待编码视频帧,因此可以通过步骤702进行判定待编码视频帧对应的目标编码方式,或者可以直接确定待编码视频帧对应的目标编码方式为第一编码方式。其中,当第一编码复杂度小于第二编码复杂度时,第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围时说明第一编码复杂度对应的待编码视频帧复杂度较低,无需使用第一编码方式对其进行编码,直接可通过第二编码方式对其视频编码即可。

其中,复杂度差距可以是将第一编码复杂度与第二编码复杂度的复杂度差值作为复杂度差距,或者可以是将第一编码复杂度与第二编码复杂度的比值作为复杂度差距。第二预设范围可预先根据实际需要进行设置,第二编码方式可以是对视频帧进行视频编码,而第一编码方式可以是将整个视频帧直接进行丢弃,并不进行任何视频编码。其中第一编码方式的编码时间低于第二编码方式的编码时间。

在一个实施例中,若确定待编码视频帧对应的目标编码方式为第二编码方式,说明该编码视频帧是感兴趣度高且关注度高的视频帧内容,因此需要对其进行视频编码,从而呈现给人们观看。

应当说明的是,步骤702和步骤704并没有先后执行顺序,也可以同时执行,或者先执行步骤704再执行步骤702,或者只执行步骤702或者只执行步骤704。

在一个实施例中,如图8所示,视频编码方法还包括:

步骤802,计算第一编码复杂度与第二编码复杂度的比值,当比值大于第一阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围。

步骤804,当比值小于第二阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围。

其中,第一阈值可预先根据实际需要进行设置,可以设置为大于1的第一阈值。而第二阈值也可预先根据实际需要进行设置,可以设置为小于1的第二阈值。同样地,第一预设范围和第二预设范围可根据实际需要进行设置,如根据应用场景的具体需要进行设置。若第一预设范围设置的范围较大,那么第一阈值随之进行调整,可将第一阈值调整成较大的阈值。同样若第二预设范围设置的范围较大,那么第二阈值随之进行调整,可将第二阈值调整成较大的阈值。其中,第一预设范围的具体设置可以是将小于第一阈值对应的复杂度差距组成第一预设范围,同样第二预设范围的具体设置可以是将小于第二阈值对应的复杂度差距组成第二预设范围,第一预设范围和第二预设范围可表示第一编码复杂度与第二编码复杂度之间的复杂度差距。这里的复杂度差距可以是第一编码复杂度与第二编码复杂度的比值,也可以是第一编码复杂度与第二编码复杂度的差值。

具体地,首先计算第一编码复杂度与第二编码复杂度的比值,再判断第一编码复杂度与第二编码复杂度的比值是否大于第一阈值,若第一编码复杂度与第二编码复杂度的比值大于第一阈值时,说明第一编码复杂度与第二编码复杂度之间的复杂度差距越大,则判定第一编码复杂度与第二编码复杂度的复杂度差距超过了第一预设范围。同样地,若第一编码复杂度与第二编码复杂度的比值小于第二阈值时,说明第一编码复杂度与第二编码复杂度之间的复杂度差距越大,则判定第一编码复杂度与第二编码复杂度的复杂度差距超过了第二预设范围。

在一个实施例中,第一阈值设置为第一编码复杂度与第二编码复杂度的比值阈值为4,第二阈值设置为第一编码复杂度与第二编码复杂度的比值阈值为1/4,第一预设范围为0~4。假设第一编码复杂度为25,第二编码复杂度为5,则第一编码复杂度与第二编码复杂度的比值为5。判断该比值是否大于第一阈值,由于第一编码复杂度与第二编码复杂度的比值5大于第一阈值4,则判定第一编码复杂度与第二编码复杂度的复杂度差距超过了第一预设范围。

在一个实施例中,第一阈值设置为第一编码复杂度与第二编码复杂度的比值阈值为4,第二阈值设置为第一编码复杂度与第二编码复杂度的比值阈值为1/4,第二预设范围为0~1/4。假设第一编码复杂度为1,第二编码复杂度为8,则第一编码复杂度与第二编码复杂度的比值为1/8。判断该比值是否小于第二阈值,由于第一编码复杂度与第二编码复杂度的比值1/8小于第二阈值1/4,则判定第一编码复杂度与第二编码复杂度的复杂度差距超过了第二预设范围。

在一个实施例中,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的编码方式,包括:当第一编码复杂度与第二编码复杂度的复杂度差距小于第三预设范围时,确定待编码视频帧对应的目标编码方式为前向视频帧对应的编码方式。

其中,第三预设范围可根据实际需要进行设置,具体可根据待编码视频帧的具体应用场景进行设置。第三预设范围可以设置为1,复杂度差距可以是第一编码复杂度与第二编码复杂度的比值,也可以是第一编码复杂度与第二编码复杂度的差值。

具体地,当第一编码复杂度与第二编码复杂度的复杂度差距小于第三预设范围时,确定待编码视频帧对应的目标编码方式为前向视频帧对应的编码方式。其中,第三预设范围可以设置为一个区间范围,也可以设置为具体的阈值。当第一编码复杂度与第二编码复杂度的复杂度差距小于第三预设范围时,说明第一编码复杂度对应的待编码视频帧的复杂度和第二编码复杂度对应的前向视频帧的复杂度相同或者相近,因此,将待编码视频帧对应的目标编码方式为前向视频帧对应的编码方式,使得待编码视频帧对应的目标编码方式与前向视频帧对应的编码方式保持不变。

在一个实施例中,如图8a所示,图8a示出一个实施例中视频编码方法的示意图。将图8a中的第5帧作为待编码视频帧,第4帧作为前向视频帧,由于第4帧满足第一编码方式的条件,因此第4帧视频帧的编码方式为第一编码方式。可从图8a中的折线图中看出,第5帧视频帧对应的编码复杂度与第4帧视频帧对应的编码复杂度相同,则直接将第5帧视频帧对应的编码方式确定为与第4帧视频帧对应的编码方式相同,都为第一编码方式。同样地,图8a中的第4帧视频帧、第5帧视频帧、第6帧视频帧、第7帧视频帧、第8帧视频帧对应的编码复杂度都相同,因此这些视频帧对应的编码方式都相同。若第4帧视频帧的第一编码方式是将整个视频帧进行丢弃,并不进行视频编码,则将4帧视频帧、第5帧视频帧、第6帧视频帧、第7帧视频帧、第8帧视频帧都直接丢弃,并不进行视频编码,从而提高编码效率,减少编码时间。

在一个实施例中,待编码视频帧为屏幕录制待编码视频帧。

其中,待编码视频帧可以是在屏幕录制这个场景中的屏幕录制待编码视频帧,屏幕录制待编码视频帧是直接从屏幕像素采集得到的,而屏幕录制是指所有出现在屏幕上的内容全部都记录下来。具体地,终端将屏幕上显示的像素采集为rgb数据,再将采集到的rgb数据转换成yuv色彩空间,得到转换后的数据,可将转换后的数据作为屏幕录制待编码视频帧。其中,将采集到的rgb数据转换成yuv色彩空间可通过现有技术中的色彩转换算法得到,在此不再做赘述。

在一个幻灯片播放的场景中,如图9所示,图9示出一个实施例中视频编码方法的应用场景图,终端正在进行幻灯片播放的展示,为了幻灯片播放的效果,经常会在两个幻灯片之间渲染,例如加入一些动画效果等。其中,图9a和图9d对应的正常的幻灯片内容,即呈现给用户观看的幻灯片内容,而图9b和图9c是幻灯片应用场景中的动画效果,如百叶窗、渐入等动画效果,图9b和图9c是图9a的幻灯片切入到图9d的幻灯片之间的动画效果示意图。对于观看者来说,观看者可能并不关注这些幻灯片之间的切换动画效果,只关注幻灯片本身的内容,因此将人们并不关注的这些幻灯片之间的切换动画效果进行丢弃,并不编码,从而减少编码时间,提高编码效率。具体地,将图9a、图9b、图9c和图9d作为待编码视频帧,获取待编码视频帧对应的第一编码复杂度,获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式,根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。其中,图9b和图9c对应的编码方式可以是采用第一编码方式,如直接将待编码视频帧进行丢弃,并不进行视频编码,因此图9b和图9c对应的内容由于在编码时被丢弃,从而解码后不存在图9b和图9c对应的内容,不会呈现给观看者观看,从而减少了编码的时间,提高了编码的效率,而图9a和图9d在编码时进行了编码,因此能够解码出图9a和图9d对应的内容,呈现给观看者观看。

在一个具体的实施例中,提供了一种视频编码方法,具体包括以下步骤:

步骤902,获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度。其中,待编码视频帧可以为屏幕录制待编码视频帧。

步骤904,获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的。

步骤904a,当计算第一编码复杂度时,将待编码视频帧作为当前视频帧;当计算第二编码复杂度时,将前向视频帧作为当前视频帧,对当前视频帧进行分割,得到多个预编码视频块。

步骤904b,对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的目标帧间复杂度。

步骤904ba,获取当前视频帧的前向视频帧,从前向视频帧中获取与各个预编码视频块对应的预编码参考视频块。

步骤904bb,根据各个预编码视频块和对应的预编码参考视频块的像素值,计算得到各个预编码视频块对应的第一帧间复杂度,将第一帧间复杂度作为目标帧间复杂度。

步骤904bc,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块对应的第二帧间复杂度。

步骤904bd,根据第一帧间复杂度和第二帧间复杂度计算得到各个预编码视频块对应的目标帧间复杂度。

步骤904c,对各个预编码视频块进行预编码帧内预测,得到各个预编码视频块对应的目标帧内复杂度。

步骤904d,根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度。

步骤904da,根据预设条件从目标帧间复杂度和目标帧内复杂度选取目标复杂度。

步骤904db,统计各个预编码视频块对应的目标复杂度,计算得到当前视频帧对应的编码复杂度。

步骤904dba,根据预设条件从目标帧间复杂度和目标帧内复杂度选取目标复杂度。

步骤904dbb,统计各个预编码视频块对应的目标复杂度,计算得到当前视频帧对应的编码复杂度。

步骤906,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式。

步骤906a,当第一编码复杂度大于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围时,确定待编码视频帧对应的编码方式为第一编码方式。和/或

步骤906b,当第一编码复杂度小于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围时,确定待编码视频帧对应的编码方式为第二编码方式。

步骤906c,计算第一编码复杂度与第二编码复杂度的比值,当比值大于第一阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围。

步骤906d,当比值小于第二阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围。

步骤908,根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

步骤908a,当第一编码复杂度与第二编码复杂度的复杂度差距小于第三预设范围时,确定待编码视频帧对应的目标编码方式为前向视频帧对应的编码方式。

应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

如图10所示,在一个实施例中,提供了一种视频编码装置1000,该装置包括:

第一编码复杂度获取模块1002,用于获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度。

第二编码复杂度获取模块1004,用于获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的。

编码方式确定模块1006,用于根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式。

待编码视频帧编码模块1008,用于根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

在一个实施例中,如图11所示,视频编码装置1000还包括:

当计算第一编码复杂度时,将待编码视频帧作为当前视频帧;

当计算第二编码复杂度时,将前向视频帧作为当前视频帧;

当前视频帧分割模块1102,用于对当前视频帧进行分割,得到多个预编码视频块。

目标帧间复杂度生成模块1104,用于对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的目标帧间复杂度。

目标帧内复杂度生成模块1106,用于对各个预编码视频块进行预编码帧内预测,得到各个预编码视频块对应的目标帧内复杂度。

编码复杂度确定模块1108,用于根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度。

在一个实施例中,如图12所示,目标帧间复杂度生成模块1104包括:

预编码参考视频块获取单元1104a,用于获取当前视频帧的前向视频帧,从前向视频帧中获取与各个预编码视频块对应的预编码参考视频块。

目标帧间复杂度计算单元1104b,用于根据各个预编码视频块和对应的预编码参考视频块的像素值,计算得到各个预编码视频块对应的第一帧间复杂度,将第一帧间复杂度作为目标帧间复杂度。

在一个实施例中,目标帧间复杂度生成模块1104还用于根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块对应的第二帧间复杂度,根据第一帧间复杂度和第二帧间复杂度计算得到各个预编码视频块对应的目标帧间复杂度。

在一个实施例中,如图13所示,编码复杂度确定模块1108包括:

目标复杂度选取单元1108a,用于根据预设条件从目标帧间复杂度和目标帧内复杂度选取目标复杂度。

编码复杂度计算单元1108b,用于统计各个预编码视频块对应的目标复杂度,计算得到当前视频帧对应的编码复杂度。

在一个实施例中,编码方式确定模块1006还用于当第一编码复杂度大于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围时,确定待编码视频帧对应的编码方式为第一编码方式;和/或当第一编码复杂度小于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围时,确定待编码视频帧对应的编码方式为第二编码方式。

在一个实施例中,编码方式确定模块1006还用于计算第一编码复杂度与第二编码复杂度的比值,当比值大于第一阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围;当比值小于第二阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围。

在一个实施例中,编码方式确定模块1006还用于当第一编码复杂度与第二编码复杂度的复杂度差距小于第三预设范围时,确定待编码视频帧对应的目标编码方式为前向视频帧对应的编码方式。

在一个实施例中,待编码视频帧为屏幕录制待编码视频帧。

图14示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110。如图14所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现视频编码方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行视频编码方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的视频编码装置可以实现为一种计算机程序的形式,计算机程序可在如图14所示的计算机设备上运行。计算机设备的存储器中可存储组成该视频编码装置的各个程序模块,比如,图10所示的第一编码复杂度获取模块、第二编码复杂度获取模块、编码方式确定模块和待编码视频帧编码模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的视频编码方法中的步骤。

例如,图14所示的计算机设备可以通过如图10所示的视频编码装置中的第一编码复杂度获取模块执行获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度。计算机设备可通过第二编码复杂度获取模块执行获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的。计算机设备可通过编码方式确定模块执行根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式。计算机设备可通过待编码视频帧编码模块执行根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

在一个实施例中,提出了一种计算机设备,计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度;获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的;根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式;根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

在一个实施例中,第一编码复杂度和第二编码复杂度的生成步骤,包括:当计算第一编码复杂度时,将待编码视频帧作为当前视频帧;当计算第二编码复杂度时,将前向视频帧作为当前视频帧;对当前视频帧进行分割,得到多个预编码视频块;对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的目标帧间复杂度;对各个预编码视频块进行预编码帧内预测,得到各个预编码视频块对应的目标帧内复杂度;根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度。

在一个实施例中,对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的目标帧间复杂度包括:获取当前视频帧的前向视频帧,从前向视频帧中获取与各个预编码视频块对应的预编码参考视频块;根据各个预编码视频块和对应的预编码参考视频块的像素值,计算得到各个预编码视频块对应的第一帧间复杂度,将第一帧间复杂度作为目标帧间复杂度。

在一个实施例中,对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的帧间复杂度包括:根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块对应的第二帧间复杂度;根据第一帧间复杂度和第二帧间复杂度计算得到各个预编码视频块对应的目标帧间复杂度。

在一个实施例中,根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度,包括:根据预设条件从目标帧间复杂度和目标帧内复杂度选取目标复杂度;统计各个预编码视频块对应的目标复杂度,计算得到当前视频帧对应的编码复杂度。

在一个实施例中,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式,包括:当第一编码复杂度大于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围时,确定待编码视频帧对应的编码方式为第一编码方式;和/或当第一编码复杂度小于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围时,确定待编码视频帧对应的编码方式为第二编码方式。

在一个实施例中,计算机程序还使得处理器执行如下步骤:计算第一编码复杂度与第二编码复杂度的比值,当比值大于第一阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围;当比值小于第二阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围。

在一个实施例中,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式,包括:当第一编码复杂度与第二编码复杂度的复杂度差距小于第三预设范围时,确定待编码视频帧对应的目标编码方式为前向视频帧对应的编码方式。

在一个实施例中,待编码视频帧为屏幕录制待编码视频帧。

在一个实施例中,提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:获取待编码视频帧,获取待编码视频帧对应的第一编码复杂度;获取待编码视频帧之前的前向视频帧对应的第二编码复杂度,第一编码复杂度和第二编码复杂度是对对应的视频帧进行预编码,根据预编码数据计算得到的;根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式;根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

在一个实施例中,第一编码复杂度和第二编码复杂度的生成步骤,包括:当计算第一编码复杂度时,将待编码视频帧作为当前视频帧;当计算第二编码复杂度时,将前向视频帧作为当前视频帧;对当前视频帧进行分割,得到多个预编码视频块;对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的目标帧间复杂度;对各个预编码视频块进行预编码帧内预测,得到各个预编码视频块对应的目标帧内复杂度;根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度。

在一个实施例中,对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的目标帧间复杂度包括:获取当前视频帧的前向视频帧,从前向视频帧中获取与各个预编码视频块对应的预编码参考视频块;根据各个预编码视频块和对应的预编码参考视频块的像素值,计算得到各个预编码视频块对应的第一帧间复杂度,将第一帧间复杂度作为目标帧间复杂度。

在一个实施例中,对各个预编码视频块进行预编码帧间预测,得到各个预编码视频块对应的帧间复杂度包括:根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块对应的第二帧间复杂度;根据第一帧间复杂度和第二帧间复杂度计算得到各个预编码视频块对应的目标帧间复杂度。

在一个实施例中,根据各个预编码视频块对应的目标帧间复杂度和目标帧内复杂度,确定当前视频帧对应的编码复杂度,包括:根据预设条件从目标帧间复杂度和目标帧内复杂度选取目标复杂度;统计各个预编码视频块对应的目标复杂度,计算得到当前视频帧对应的编码复杂度。

在一个实施例中,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式,包括:当第一编码复杂度大于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围时,确定待编码视频帧对应的编码方式为第一编码方式;和/或当第一编码复杂度小于第二编码复杂度,且第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围时,确定待编码视频帧对应的编码方式为第二编码方式。

在一个实施例中,计算机程序还使得处理器执行如下步骤:计算第一编码复杂度与第二编码复杂度的比值,当比值大于第一阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第一预设范围;当比值小于第二阈值时,判定第一编码复杂度与第二编码复杂度的复杂度差距超过第二预设范围。

在一个实施例中,根据第一编码复杂度和第二编码复杂度确定待编码视频帧对应的目标编码方式,包括:当第一编码复杂度与第二编码复杂度的复杂度差距小于第三预设范围时,确定待编码视频帧对应的目标编码方式为前向视频帧对应的编码方式。

在一个实施例中,待编码视频帧为屏幕录制待编码视频帧。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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