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

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

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



背景技术:

随着计算机技术领域的发展,视频的应用场景越来越广。传统的编码器对视频中的各个视频帧无区分地进行编码,这种编码方式对于当原始视频中突然插入一段目标视频的场景,对于突然插入的目标视频依旧采用原始视频对应的编码方式进行编码,造成编码效率低。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种视频编码方法、装置、计算机设备和存储介质,在视频编码过程中,针对不同的视频内容能够自适应的选择合适的目标编码方式进行编码,从而提高编码效率。

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

获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种;

第一图像运动信息是对待编码视频帧进行预编码得到的;

第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的;

根据图像运动信息确定待编码视频帧对应的目标编码方式;

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

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

待编码视频帧获取模块,用于获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种;

第一图像运动信息是对待编码视频帧进行预编码得到的;

第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的;

目标编码方式获取模块,用于根据图像运动信息确定待编码视频帧对应的目标编码方式;

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

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

获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种;

第一图像运动信息是对待编码视频帧进行预编码得到的;

第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的;

根据图像运动信息确定待编码视频帧对应的目标编码方式;

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

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

获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种;

第一图像运动信息是对待编码视频帧进行预编码得到的;

第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的;

根据图像运动信息确定待编码视频帧对应的目标编码方式;

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

上述视频编码方法、装置、计算机可读存储介质和计算机设备,获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种,第一图像运动信息是对待编码视频帧进行预编码得到的,第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的,根据图像运动信息确定待编码视频帧对应的目标编码方式,根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。由于不同的视频内容对应的图像运动信息不同,而不同的视频内容对应的目标编码方式也不同,因此针对不同的视频内容能够自适应的选择合适的目标编码方式进行编码,从而提高编码效率。

附图说明

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

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

图3为一个实施例中第一图像运动信息的生成步骤的流程示意图;

图4为一个实施例中统计运动波动信息的生成步骤的流程示意图;

图5为一个实施例中第二图像运动信息的生成步骤的流程示意图;

图6为一个实施例中目标编码方式的确定步骤的流程示意图;

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

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

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

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

图10为一个实施例中统计运动波动信息计算模块的结构框图;

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

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

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

具体实施方式

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

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

具体地,终端110获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种,其中第一图像运动信息是对待编码视频帧进行预编码得到的,第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的,终端根据图像运动信息确定待编码视频帧对应的目标编码方式,再根据目标编码方式对待编码视频帧进行编码得到对应的编码数据,可将编码得到的编码数据发送至服务器120。或者,终端110将待编码视频帧发送至服务器120,服务器120获取到待编码视频帧后,获取待编码视频帧对应的图像运动信息,再根据图像运动信息确定待编码视频帧对应的目标编码方式,根据目标编码方式对待编码视频帧进行编码得到对应的编码数据,最后将编码数据发送至终端110。

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

步骤202,获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种;第一图像运动信息是对待编码视频帧进行预编码得到的;第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的。

其中,待编码视频帧是构成待编码视频的基本单位,待编码视频即为若干帧视频帧构成的帧序列。待编码视频是指未进行视频编码的视频,视频编码是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。其中,待编码视频帧可以是实时采集的视频帧,用于即时通信,也可以是存储的视频对应的视频帧。图像运动信息是待编码视频帧在进行图像运动时与图像运动相关的信息。其中图像运动包括但不限于在第一维度进行水平运动、或者在第二维度进行竖直运动等等。图像运动信息包括但不限于对待编码视频帧进行预编码得到的第一图像运动信息、或者是根据待编码视频之前的历史已编码视频帧的编码数据得到的第二图像运动信息中的至少一种等等。

其中,为了减少视频编码器的编码时间,提高编码效率,可在进行对待编码视频帧进行视频编码之前先对待编码视频帧进行预编码,预编码是指在对待编码视频帧进行视频编码之前,对待编码视频帧进行预先处理的过程。预编码包括但不限于先对待编码视频帧进行分割得到多个预编码视频块,再根据预编码视频块进一步计算得到第一图像运动信息等等过程。第一图像运动信息可以是但不限于对待编码视频帧进行预编码得到的统计运动波动信息,统计运动波动信息是统计各个预编码视频块的图像运动信息得到的。各个预编码视频块的图像运动信息可以是各个预编码视频块在第一维度对应的第一维度运动位移,或者是各个预编码视频块在第二维度对应的第二维度运动位移,或者是根据各个预编码视频块在第一维度对应的第一维度运动位移和各个预编码视频块在第二维度对应的第二维度运动位移综合计算得到等等。

其中,历史已编码视频帧是待编码视频帧之前的已经进行视频编码的帧序列,因为历史已编码视频帧是经过视频编码器进行编码得到的,因此在视频编码器对历史已编码视频帧进行编码过程中会产生视频编码相关的编码数据。进一步地,可根据历史已编码视频帧的编码数据得到第二图像运动信息。其中根据历史已编码视频帧的编码数据得到第二图像运动信息的方式可自定义,自定义可以是但不限于将历史已编码视频帧的编码数据中的运动矢量直接作为第二图像运动信息,或者先获取历史已编码视频帧各个已编码视频块对应的运动矢量,再根据各个已编码视频块对应的运动矢量综合得到第二图像运动信息等等。其中,根据各个已编码视频块对应的运动矢量综合包括但不限于各个视频编码块在第一维度的运动矢量和各个视频编码块在第二维度的运动矢量进行综合。

步骤204,根据图像运动信息确定待编码视频帧对应的目标编码方式。

其中,编码方式是通过视频编码器对待编码视频帧进行编码的方式,编码方式包括但不限于第一编码方式,或者第二编码方式等等。其中,不同的编码方式采用不同的编码算法对待编码视频帧进行编码。不同的编码算法是指进行编码时设置的各个编码参数不同,如运动搜索范围不同,量化参数不同,率失真代价计算方式不同,码率信息不同等等。

具体地,可根据图像运动信息确定待编码视频帧对应的目标编码方式,若待编码视频帧的图像运动信息只包括在单维度存在对应的图像运动信息时,如将待编码视频帧在第一维度的图像运动信息作为待编码视频帧的图像运动信息,或者将待编码视频帧在第二维度的图像运动信息作为待编码视频帧的图像运动信息。当待编码视频帧的图像运动信息符合第一预设规则时,则可确定待编码视频帧对应的目标编码方式为第一编码方式,或者当待编码视频帧的图像运动信息符合第二预设规则时,则可确定待编码视频帧对应的目标编码方式为第二编码方式等等。其中,第一预设规则和第二预设规则可根据实际需求进行自定义。

在一个实施例中,若图像运动信息包括多个图像运动信息,其中各个图像运动信息在多维度上都存在对应的图像运动信息,如第一图像运动信息和第二图像运动信息,第一图像运动信息在第一维度存在对应的图像运动信息且在第二维度存在对应的图像运动信息,第二图像运动信息在第一维度存在对应的图像运动信息且在第二维度存在对应的图像运动信息。当第一图像运动信息在第一维度对应的图像运动信息符合第一预设规则且第一图像运动信息在第二维度对应的图像运动信息符合第二预设规则时,则可确定待编码视频帧对应的目标编码方式为第一编码方式,和/或第二图像运动信息在第一维度对应的图像运动信息符合第三预设规则且第二图像运动信息在第二维度对应的图像运动信息符合第四预设规则时,则可确定待编码视频帧对应的目标编码方式为第二编码方式等等。其中,第一预设规则、第二预设规则、第三预设规则和第四预设规则可根据实际需求进行自定义。

在一个实施例中,若图像运动信息包括多维度的图像运动信息时,如第一图像运动信息和第二图像运动信息时,当第一图像运动信息在第一维度对应的图像运动信息小于第一预设阈值且第一图像运动信息在第二维度对应的图像运动信息小于第二预设阈值时,确定待编码视频帧对应的目标编码方式为第一编码方式。或者第二图像运动信息在第一维度对应的图像运动信息大于第三预设阈值且第二图像运动信息在第二维度对应的图像运动信息大于第四预设阈值时,确定待编码视频帧对应的目标编码方式为第二编码方式等等。

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

其中,编码数据是视频编码器在对待编码视频帧进行编码时产生的相关数据。具体地,在根据图像运动信息确定待编码视频帧对应的目标编码方式后,可以根据目标编码方式切换对应的视频编码器对待编码视频帧进行编码,从而得到对应的编码数据。其中,视频编码器是用来对待编码视频帧进行编码的,视频编码器可以是但不限于物理视频编码器、软件视频编码器等等。其中,在确定待编码视频帧对应的目标编码方式之前,已经使用第一编码器对待编码视频帧的历史已编码视频帧进行编码,而待编码视频帧对应的目标编码方式为第二编码器的编码方式,则在对待编码视频帧进行编码具体是将第一编码器切换至第二编码器进行编码,第一编码器切换至第二编码器的具体切换可以是但不限于同一视频编码器改变编码参数进行切换等等。或者,在确定待编码视频帧对应的目标编码方式之前,待编码视频帧对应的历史待编码视频帧都未进行视频编码,当确定待编码视频帧对应的目标编码方式后,则对历史待编码视频帧和待编码视频帧一起使用待编码视频帧对应的目标编码方式进行编码,从而得到对应的编码数据。

上述视频编码方法,获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种,第一图像运动信息是对待编码视频帧进行预编码得到的,第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的,根据图像运动信息确定待编码视频帧对应的目标编码方式,根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。由于不同的视频内容对应的图像运动信息不同,而不同的视频内容对应的目标编码方式也不同,因此针对不同的视频内容能够自适应的选择合适的目标编码方式进行编码,从而提高编码效率。

在一个实施例中,如图3所示,第一图像运动信息的生成步骤包括:

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

第一图像运动信息是对待编码视频帧进行预编码得到,预编码是在对待编码视频帧进行视频编码之前先对待编码视频帧进行预先处理的过程。具体地,可根据预设分割规则对待编码视频帧进行分割,得到多个预编码视频块。预设分割规则可自定义,自定义可以是但不限于将待编码视频帧按照预设相同比例进行均一分割,如将待编码视频帧划分成8*8的预编码视频块。或者将待编码视频帧按照编码器的编码规则对待编码视频帧进行分割,如将待编码视频帧部分区域划分为8*8的预编码视频块,另外部分区域划分为16*16的预编码视频块。

步骤304,获取待编码视频帧的前向视频帧,获取与各个预编码视频块对应的预编码参考视频块。

其中,前向视频帧是指待编码视频帧之前的帧,具体可根据预设规则获取待编码视频帧的前向视频帧。预设规则可自定义,自定义可以是但不限于从待编码视频帧之前的视频帧中获取预设数量个视频帧作为前向视频帧等等。进一步地,在获取与各个预设编码视频块对应的预编码参考视频块。预编码参考视频块是预编码过程中用来参考的视频块,其中获取与各个预设编码视频块对应的预编码参考块具体可根据预设参考规则获取与各个预编码视频块对应的预编码参考视频块。该预设参考规则包括但不限于待编码视频帧与参考帧的参考关系,参考关系具体可以是但不限于分辨率大小关系。具体地,先根据预设参考规则中待编码视频帧与参考帧的参考关系获取与待编码视频帧对应的参考帧,再对获取到的参考帧按照待编码视频帧相同的预设分割规则分割,得到多个参考视频块,再从多个参考视频块中获取与各个预编码视频块对应的预编码参考视频块。

步骤306,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到待编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第一图像运动信息。

其中,运动波动信息是用来体现图像运动变化产生的相关数据,而统计运动波动信息是指各个预编码视频块对应的运动波动信息的总和。统计运动波动信息可根据各个预编码视频块和对应的预编码参考视频块的位置关系计算得到的。具体可以是但不限于将各个预编码视频块和对应的预编码参考视频块的位置差的总和作为统计运动波动信息,或者将各个预设编码视频块和对应的预编码参考视频块的位置差按照预设比重综合计算进而得到统计运动波动信息,或者将各个预编码视频块和对应的预编码参考视频块的位置差的方差作为统计运动波动信息,或者将各个预编码视频块和对应的预编码参考视频块的位置差的平均值作为统计运动波动信息等等。

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

在一个实施例中,如图4所示,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到待编码视频帧对应的统计运动波动信息包括:

步骤402,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第一维度对应的第一维度运动位移。

步骤404,根据各个预编码视频块对应的第一维度运动位移,计算得到待编码视频帧对应的第一维度统计运动波动信息。

其中,若各个预编码视频块和对应的预编码参考视频块分别在第一维度和第二维度进行了图像运动,则分别根据各个预设编码视频块和对应的预编码参考视频块在第一维度的第一维度运动波动信息和在第二维度的第二维度运动波动信息计算得到待编码视频帧对应的统计运动波动信息。对于各个预设编码视频块和对应的预编码参考视频块在第一维度的第一维度统计运动波动信息,具体地,根据各个预编码视频块和对应的预编码参考视频块的位置关系计算得到各个预编码视频块在第一维度对应的第一维度运动位移,第一维度运动位移计算具体可以是但不限于将各个预编码视频块和对应的预编码参考视频块的位置的相对偏移量作为第一维度运动位移。第一维度运动位移是用来体现各个预编码视频块和对应的预编码参考视频块在第一维度上的位置变化。

进一步地,在得到各个预编码视频块在第一维度对应的第一维度运动位移后,根据各个预编码视频块对应的第一维度运动位移进一步计算得到待编码视频帧对应的第一维度统计运动波动信息。第一维度运动位移的计算具体可以是但不限于,对各个预编码视频块对应的第一维度运动位移计算方差得到待编码视频帧对应的第一维度统计运动波动信息。或者对各个预编码视频块对应的第一维度运动位移计算平均值得到待编码视频帧对应的第一维度统计运动波动信息。或者对各个预编码视频块对应的第一维度运动位移进行加权计算得到待编码视频帧对应的第一维度统计运动波动信息等等。

步骤406,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第二维度对应的第二维度运动位移。

步骤408,根据各个预编码视频块对应的第二维度运动位移,计算得到待编码视频帧对应的第二维度统计运动波动信息。

其中,由于各个预编码视频块和对应的预编码参考视频块在第二维度进行了图像运动,则分别根据各个预设编码视频块和对应的预编码参考视频块在第二维度的位置计算得到待编码视频帧对应的第二维度统计运动波动信息。具体地,根据各个预编码视频块和对应的预编码参考视频块的位置关系计算得到各个预编码视频块在第二维度对应的第二维度运动位移,第二维度运动位移计算具体可以是但不限于将各个预编码视频块和对应的预编码参考视频块的位置的相对偏移量作为第二维度运动位移。第二维度运动位移是用来体现各个预编码视频块和对应的预编码参考视频块在第二维度上的位置变化。

进一步地,在得到各个预编码视频块在第二维度对应的第二维度运动位移后,根据各个预编码视频块对应的第二维度运动位移进一步计算得到待编码视频帧对应的第二维度统计运动波动信息。第二维度运动位移的计算具体可以是但不限于,对各个预编码视频块对应的第二维度运动位移计算方差得到待编码视频帧对应的第二维度统计运动波动信息。或者对各个预编码视频块对应的第二维度运动位移计算平均值得到待编码视频帧对应的第二维度统计运动波动信息。或者对各个预编码视频块对应的第二维度运动位移进行加权计算得到待编码视频帧对应的第二维度统计运动波动信息等等。

步骤410,根据第一维度统计运动波动信息和第二维度统计运动波动信息得到待编码视频帧对应的统计运动波动信息。

具体地,在得到第一维度统计运动波动信息和第二维度统计运动波动信息后,根据第一维度统计运动波动信息和第二维度统计运动波动信息计算得到待编码视频帧对应的统计运动波动信息。其中,根据第一维度统计运动波动信息和第二维度统计运动波动信息计算得到待编码视频帧对应的统计运动波动信息具体可以是但不限于,对第一维度统计运动波动信息和第二维度统计运动波动信息计算平均值得到待编码视频帧对应的统计运动波动信息。或者对第一维度统计运动波动信息和第二维度统计运动波动信息计算方差得到待编码视频帧对应的统计运动波动信息。或者对第一维度统计运动波动信息和第二维度统计运动波动信息进行加权计算得到待编码视频帧对应的统计运动波动信息等等。

在一个实施例中,如图5所示,第二图像运动信息的生成步骤包括:

步骤502,获取待编码视频帧之前的历史已编码视频帧。

步骤504,获取历史已编码视频帧中各个已编码视频块对应的运动矢量。

步骤506,根据各个已编码视频块对应的运动矢量计算得到历史已编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第二图像运动信息,统计运动波动信息包括对应的第一维度统计运动波动信息和第二维度统计运动波动信息。

其中,第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的,历史已编码视频帧是指待编码视频帧之前的已经进行视频编码的帧序列。因为历史已编码视频帧是经过视频编码器进行编码得到的,因此在视频编码器对历史已编码视频帧进行编码过程中会产生视频编码相关的编码数据,其中运动矢量是编码数据中的一种。运动矢量是指将历史已编码视频帧分成若干块或宏块,并设法搜索出每个块或宏块在邻近帧图像中的位置,并得出两者之间的空间位置的相对偏移量为运动矢量。

具体地,获取待编码视频帧之前的历史已编码视频帧,其中获取待编码视频帧之前的历史已编码视频帧的具体数量可自定义,再根据预设分割规则对历史已编码视频帧进行分割得到各个已编码视频块。预设分割规则可自定义,自定义可以是但不限于将历史已编码视频帧按照视频编码器的编码规则对历史已编码视频帧进行分割。在得到历史已编码视频帧对应的各个已编码视频块后,获取各个已编码视频块在视频编码过程产生的运动矢量。运动矢量具体是根据各个已编码视频块的参考规则搜索出各个已编码视频块在邻近视频帧图像中的位置,并根据各个已编码视频块在历史已编码视频帧的位置和邻近视频帧图像中的位置计算得到相对偏移量,即各个已编码视频块对应的运动矢量。

进一步地,根据各个已编码视频块对应的运动矢量计算得到历史已编码视频帧对应的统计运动波动信息。具体的计算可以是但不限于将各个已编码视频块对应的运动矢量的总和作为统计运动波动信息,或者将各个已编码视频块对应的运动矢量按照比重综合计算进而得到统计运动波动信息,或者将各个已编码视频块对应的运动矢量的方差作为统计运动波动信息,或者将各个已编码视频块对应的运动矢量的平均值作为统计运动波动信息等等。

在一个实施例中,若各个已编码视频块在第一维度和第二维度分别进行了图像运动,则根据各个已编码视频块在第一维度的第一维度运动矢量计算得到第一维度统计运动波动信息,和根据各个已编码视频块在第二维度的第二维度运动矢量计算得到第二维度统计运动波动信息。第一维度统计运动波动信息和第二维度统计运动波动信息具体计算可以是但不限于,将第一维度运动矢量或者第二维度运动矢量进行方差计算得到对应的第一维度统计运动波动信息或者第二维度统计运动波动信息。或者将第一维度运动矢量或者第二维度运动矢量进行平均计算从而得到对应的第一维度统计运动波动信息或者第二维度统计运动波动信息等等。

进一步地,在得到各个已编码视频块在第一维度统计运动波动信息和第二维度统计运动波动信息后,根据第一维度统计运动波动信息和第二维度统计运动波动信息计算得到历史已编码视频帧对应的统计运动波动信息。其中,根据第一维度统计运动波动信息和第二维度统计运动波动信息具体计算得到历史已编码视频帧对应的统计运动波动信息可以是但不限于,将第一维度统计运动波动信息和第二维度统计运动波动信息按照预设比重计算得到历史已编码视频帧对应的统计运动波动信息等等。

在一个实施例中,如图6所示,根据图像运动信息确定待编码视频帧对应的目标编码方式,包括:

步骤602,当图像运动信息对应的运动状态为一致性运动时,确定待编码视频帧对应的目标编码方式为第一编码方式。

步骤604,否则,确定待编码视频帧对应的目标编码方式为第二编码方式。

其中,图像运动信息是待编码视频帧在进行图像运动时产生与图像运动相关的信息,图像运动信息对应的运动状态为一致性运动时,说明待编码视频帧的每帧图像的运动方向都比较一致。如若待编码视频帧的每个像素点作为一个个体,当每个像素点都朝一个运动方向运动时,则认为待编码视频帧的图像运动信息对应的运动状态为一致性运动。

具体地,当图像运动信息对应的运动状态为一致性运动时,可确定待编码视频帧对应的目标编码方式为第一编码方式,第一编码方式可以是第一编码器对应的编码方式,第一编码器更适用于一致性运动的待编码视频帧。反之,当图像运行信息对应的运动状态不是一致性运动时,说明待编码视频帧对应的图像运动方向都比较分散,第一编码器已不适用于运动方向较分散的待编码视频帧,则将图像运动方向较分散的待编码视频帧对应的目标编码方式为第二编码方式。同样地,第二编码方式可以是第二编码器对应的编码方式,第二编码器更适用于运动方向较分散的待编码视频帧。

在一个实施例中,根据图像运动信息确定待编码视频帧对应的目标编码方式,包括:当第一维度统计运动波动信息对应的第一维度波动值小于第一预设阈值,且第二维度统计运动波动信息对应的第二维度波动值小于第二预设阈值时,将待编码视频帧对应的目标编码方式切换为第一编码方式。

其中,第一维度波动值是用来体现第一维度统计运动波动信息的波动性的,同样地,第二维度波动值是用来体现第二维度统计运动波动信息的波动性的。具体地,当第一维度统计运动波动信息对应的第一维度波动值小于第一预设阈值,且第二维度统计运动波动信息对应的第二维度波动值小于第二预设阈值时,可将待编码视频帧对应的目标编码方式切换成第一编码方式,说明第一编码器对应的第一编码方式更适用于待编码视频帧,能够提高待编码视频帧的编码效率。如,第一维度统计运动波动信息对应的第一维度波动值为第一维度方差值,第一预设阈值为t1,第二维度统计运动波动信息对应的第二维度波动值为第二维度方差值,第二预设阈值为t2,即当第一维度对应的第一维度方差值小于第一预设阈值t1且第二维度对应的第二维度方差值小于第二预设阈值为t2,为了提高待编码视频帧的编码效率,使用第一编码器对应的编码方式对待编码视频帧进行编码。

否则,则确定待编码视频帧的编码方式为第二编码方式,为了保证待编码视频帧的编码效率,使用第二编码器对应的编码方式对待编码视频帧进行编码。具体地,在未确定待编码视频帧对应的编码方式之前,通过第二编码器对应的编码方式对待编码视频帧之前的历史已编码视频帧进行编码,当确定待编码视频帧的目标编码方式为第一编码方式,则在对待编码视频帧进行编码时,将第二编码器切换成第一编码器,通过第一编码器对应的第一编码方式对待编码视频帧进行编码,从而提高待编码视频帧的编码效率。其中,第一预设阈值和第二预设阈值可根据实际需要进行设置。

在一个实施例中,根据图像运动信息确定待编码视频帧对应的目标编码方式,包括:当第一维度统计运动波动信息对应的第一维度波动值大于第三预设阈值,和/或第二维度统计运动波动信息对应的第二维度波动值大于第四预设阈值时,将待编码视频帧对应的目标编码方式切换为第二编码方式。

其中,因为第二编码方式更适用于与图像运动方向较为分散的待编码视频帧,因此当第一维度统计运动波动信息对应的第一维度波动值大于第三预设阈值时,则可将待编码视频帧对应的目标编码方式确定为第二编码方式。或者当第二维度统计运动波动信息对应的第二维度波动值大于第四预设阈值时,则可将待编码视频帧对应的目标编码方式确定为第二编码方式。或者当第一维度统计运动波动信息对应的第一维度波动值大于第三预设阈值且第二维度统计运动波动信息对应的第二维度波动值大于第四预设阈值时,则可将待编码视频帧对应的目标编码方式确定为第二编码方式。其中,第三预设阈值和第四预设阈值可根据实际需要进行设置。

在一个实施例中,待编码视频帧之前的历史已编码视频帧都是通过第一编码器对应的编码方式进行编码的,当根据图像运动信息确定待编码视频帧对应的目标编码方式为第二编码方式时,则在对待编码视频帧进行编码时,为了提高待编码视频帧的视频编码率,则将第一编码器切换至第二编码器,通过第二编码器对应的第二编码方式对待编码视频帧进行编码,从而提高待编码视频帧的编码效率。

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

步骤702,获取待编码视频帧之前的连续历史前向视频帧。

步骤704,获取各个连续历史前向视频帧对应的图像运动信息。

步骤706,根据各个连续历史前向视频帧对应的图像运动信息和待编码视频帧对应的图像运动信息,确定待编码视频帧对应的目标编码方式。

其中,历史前向视频帧是待编码视频帧之前的历史已编码视频帧,其中获取待编码视频帧之前的连续历史前向视频帧的具体数量可根据实际需求设置。由于获取到的历史前向视频帧都是经过编码器编码的,因此根据各个连续历史前向视频帧对应的编码数据,从各个连续历史前向视频帧对应的编码数据中获取与各个连续历史前向视频帧对应的图像运动信息。图像运动信息包括但不限于各个连续历史前向视频帧的运动矢量等等。

进一步地,可根据各个连续历史前向视频帧对应的图像运动信息和待编码视频帧对应的图像运动信息之间的波动值,确定待编码视频帧对应的目标编码方式。其中,各个连续历史前向视频帧对应的图像运动信息可以是但不限于各个连续历史前向视频帧对应的运动矢量等等,待编码视频帧对应的图像运动信息可以是但不限于通过图像搜索算法搜索得到的。

在一个实施例中,第一编码方式的运动搜索范围大于第二编码方式的运动搜索范围;和/或第一编码方式中亚像素插值算法为关闭状态;和/或第一编码方式中帧内编码模式的复杂度高于第二编码方式中帧内编码模式的复杂度。

其中,由于第一编码方式更适用于图像运动方向比较单一的待编码视频帧,针对较大范围的应用场景,采用第一编码方式进行编码能够快速找到更相像的参考块,预测残差小,因此第一编码方式的运动搜索范围大于第二编码方式的运动搜索范围。

在一个实施例中,由于在录制屏幕内容这个应用场景中,屏幕内容经常有上下快速滚动或者左右快速滚动,因此第一编码方式的运动搜索范围大于第二编码方式的运动搜索范围。其中,第一编码方式可以是屏幕视频编码器对应的编码方式,第二编码方式可以是普通编码器对应的编码方式。

其中,亚像素插值是通过待编码视频帧中整像素的参考数据插值得到分像素级别的参考数据的过程,亚像素插值也可以叫分像素插值。由于采用第一编码方式的待编码视频帧是按照整像素运动的,因此第一编码方式对应的第一编码器通常是关闭亚像素插值算法的。而在屏幕内容这个应用场景中,由于屏幕编码内容直接是从屏幕像素采集得到的,因此屏幕内容的运动都是按照整像素运动的,第一编码器为屏幕编码器,通常屏幕编码器关闭亚像素插值算法。

其中,第一编码方式中帧内编码模式的复杂度高于第二编码方式中帧内编码模式的复杂度,帧内编码模式的复杂度是指第一编码方式对应的第一编码器有额外的编码工具,如调色板模式,帧内块复制模式等。而第二编码方式对应的第二编码器并不具有这些额外的编码工具。其中,调色板模式是用颜色表和索引来表示每个像素的颜色,而帧内块复制模式是复制同一帧视频纹理一样或者非常像的相象块。

本实施例中,通过第一编码方式对应的第一编码器和第二编码方式对应的第二编码器的区别,根据待编码视频帧的特性采用合适的编码器对应的编码方式进行编码,能够提高待编码视频帧的编码效率,减少编码时间。

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

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

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

步骤802,获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种,第一图像运动信息是对待编码视频帧进行预编码得到的,第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的。

步骤802a,待编码视频帧为屏幕录制待编码视频帧。

步骤802b,第一图像运动信息的生成步骤包括:

步骤802ba,对待编码视频帧进行分割,得到多个预编码视频块。

步骤802bb,获取待编码视频帧的前向视频帧,获取与各个预编码视频块对应的预编码参考视频块。

步骤802bc,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到待编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第一图像运动信息。

步骤802bca,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第一维度对应的第一维度运动位移。

步骤802bcb,根据各个预编码视频块对应的第一维度运动位移,计算得到待编码视频帧对应的第一维度统计运动波动信息。

步骤802bcc,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第二维度对应的第二维度运动位移。

步骤802bcd,根据各个预编码视频块对应的第二维度运动位移,计算得到待编码视频帧对应的第二维度统计运动波动信息。

步骤802bce,根据第一维度统计运动波动信息和第二维度统计运动波动信息得到待编码视频帧对应的统计运动波动信息。

步骤802c,第二图像运动信息的生成步骤包括:

步骤802ca,获取待编码视频帧之前的历史已编码视频帧。

步骤802cb,获取历史已编码视频帧中各个已编码视频块对应的运动矢量。

步骤802cc,根据各个已编码视频块对应的运动矢量计算得到历史已编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第二图像运动信息,统计运动波动信息包括对应的第一维度统计运动波动信息和第二维度统计运动波动信息。

步骤804,根据图像运动信息确定待编码视频帧对应的目标编码方式。

步骤804a,当图像运动信息对应的运动状态为一致性运动时,确定待编码视频帧对应的目标编码方式为第一编码方式;

步骤804b,否则,确定待编码视频帧对应的目标编码方式为第二编码方式。

步骤804c,当第一维度统计运动波动信息对应的第一维度波动值小于第一预设阈值,且第二维度统计运动波动信息对应的第二维度波动值小于第二预设阈值时,将待编码视频帧对应的目标编码方式切换为第一编码方式。

步骤804d,当第一维度统计运动波动信息对应的第一维度波动值大于第三预设阈值,和/或第二维度统计运动波动信息对应的第二维度波动值大于第四预设阈值时,将待编码视频帧对应的目标编码方式切换为第二编码方式。

步骤804f,第一编码方式的运动搜索范围大于第二编码方式的运动搜索范围;和/或第一编码方式中亚像素插值算法为关闭状态;和/或第一编码方式中帧内编码模式的复杂度高于第二编码方式中帧内编码模式的复杂度。

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

步骤808,获取待编码视频帧之前的连续历史前向视频帧。

步骤810,获取各个连续历史前向视频帧对应的图像运动信息。

步骤812,根据各个连续历史前向视频帧对应的图像运动信息和待编码视频帧对应的图像运动信息,确定待编码视频帧对应的目标编码方式。

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

在一个文本内容的场景中,如图7a所示,图7a示出一个实施例中视频编码方法的应用场景图,终端正在进行word文本内容的展示,当word文本内容中突然插入一段视频,针对突然插入的视频,若依旧使用word文本内容进行编码的第一编码器对突然插入的视频进行编码的话,容易造成编码效率低。因此,终端将突然插入的视频作为待编码视频帧,再获取待编码视频帧对应的图像运动信息,根据图像运动信息确定待编码视频帧对应的目标编码方式,最后根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。具体将word文本内容对应的第一编码器对应的第一编码方式切换至目标编码方式对应的目标编码器,通过目标编码器对待编码视频帧进行编码。通过将上述视频编码方法应用到文本内容的应用场景中,针对文本内容中突然插入不同的视频内容,能够自适应的选择合适的目标编码方式进行编码,进行编码器的切换,从而提高编码效率。

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

待编码视频帧获取模块902,用于获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种,第一图像运动信息是对待编码视频帧进行预编码得到的,第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的。

目标编码方式获取模块904,用于根据图像运动信息确定待编码视频帧对应的目标编码方式。

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

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

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

前向视频帧获取模块1004,用于获取待编码视频帧的前向视频帧,获取与各个预编码视频块对应的预编码参考视频块。

统计运动波动信息计算模块1006,用于根据各个预编码视频块和对应的预编码参考视频块的位置计算得到待编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第一图像运动信息。

在一个实施例中,如图10所示,统计运动波动信息计算模块1006包括:

第一维度运动位移计算单元1006a,用于根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第一维度对应的第一维度运动位移。

第一维度统计运动波动信息计算单元1006b,用于根据各个预编码视频块对应的第一维度运动位移,计算得到待编码视频帧对应的第一维度统计运动波动信息。

第二维度运动位移计算单元1006c,用于根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第二维度对应的第二维度运动位移。

第二维度统计运动波动信息计算单元1006d,用于根据各个预编码视频块对应的第二维度运动位移,计算得到待编码视频帧对应的第二维度统计运动波动信息。

统计运动波动信息生成单元1006e,用于根据第一维度统计运动波动信息和第二维度统计运动波动信息得到待编码视频帧对应的统计运动波动信息。

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

历史已编码视频帧获取模块1102,用于获取待编码视频帧之前的历史已编码视频帧。

运动矢量获取模块1104,用于获取历史已编码视频帧中各个已编码视频块对应的运动矢量。

第二图像运动信息生成模块1106,用于根据各个已编码视频块对应的运动矢量计算得到历史已编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第二图像运动信息,统计运动波动信息包括对应的第一维度统计运动波动信息和第二维度统计运动波动信息。

在一个实施例中,目标编码方式获取模块904还用于当图像运动信息对应的运动状态为一致性运动时,确定待编码视频帧对应的目标编码方式为第一编码方式;否则,确定待编码视频帧对应的目标编码方式为第二编码方式。

在一个实施例中,目标编码方式获取模块904还用于当第一维度统计运动波动信息对应的第一维度波动值小于第一预设阈值,且第二维度统计运动波动信息对应的第二维度波动值小于第二预设阈值时,将待编码视频帧对应的目标编码方式切换为第一编码方式。

在一个实施例中,目标编码方式获取模块904还用于当第一维度统计运动波动信息对应的第一维度波动值大于第三预设阈值,和/或第二维度统计运动波动信息对应的第二维度波动值大于第四预设阈值时,将待编码视频帧对应的目标编码方式切换为第二编码方式。

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

历史前向视频帧获取模块1202,用于获取待编码视频帧之前的连续历史前向视频帧。

图像运动信息获取模块1204,用于获取各个连续历史前向视频帧对应的图像运动信息。

目标编码方式确定模块1206,用于根据各个连续历史前向视频帧对应的图像运动信息和待编码视频帧对应的图像运动信息,确定待编码视频帧对应的目标编码方式。

在一个实施例中,第一编码方式的运动搜索范围大于第二编码方式的运动搜索范围;和/或第一编码方式中亚像素插值算法为关闭状态;和/或第一编码方式中帧内编码模式的复杂度高于第二编码方式中帧内编码模式的复杂度。

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

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

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

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

例如,图13所示的计算机设备可以通过如图8所示的视频编码装置中的待编码视频帧获取模块执行获取待编码视频帧,获取待编码视频帧对应的图像运动信息,图像运动信息包括第一图像运动信息和第二图像运动信息中的至少一种,第一图像运动信息是对待编码视频帧进行预编码得到的,第二图像运动信息是根据待编码视频帧之前的历史已编码视频帧的编码数据得到的。计算机设备可通过目标编码方式获取模块执行根据图像运动信息确定待编码视频帧对应的目标编码方式。计算机设备可通过待编码视频帧编码模块执行根据目标编码方式对待编码视频帧进行编码得到对应的编码数据。

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

在一个实施例中,第一图像运动信息的生成步骤包括:对待编码视频帧进行分割,得到多个预编码视频块;获取待编码视频帧的前向视频帧,获取与各个预编码视频块对应的预编码参考视频块;根据各个预编码视频块和对应的预编码参考视频块的位置计算得到待编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第一图像运动信息。

在一个实施例中,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到待编码视频帧对应的统计运动波动信息包括:根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第一维度对应的第一维度运动位移;根据各个预编码视频块对应的第一维度运动位移,计算得到待编码视频帧对应的第一维度统计运动波动信息;根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第二维度对应的第二维度运动位移;根据各个预编码视频块对应的第二维度运动位移,计算得到待编码视频帧对应的第二维度统计运动波动信息;根据第一维度统计运动波动信息和第二维度统计运动波动信息得到待编码视频帧对应的统计运动波动信息。

在一个实施例中,第二图像运动信息的生成步骤包括:获取待编码视频帧之前的历史已编码视频帧;获取历史已编码视频帧中各个已编码视频块对应的运动矢量;根据各个已编码视频块对应的运动矢量计算得到历史已编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第二图像运动信息,统计运动波动信息包括对应的第一维度统计运动波动信息和第二维度统计运动波动信息。

在一个实施例中,根据图像运动信息确定待编码视频帧对应的目标编码方式,包括:当图像运动信息对应的运动状态为一致性运动时,确定待编码视频帧对应的目标编码方式为第一编码方式;否则,确定待编码视频帧对应的目标编码方式为第二编码方式。

在一个实施例中,根据图像运动信息确定待编码视频帧对应的目标编码方式,包括:当第一维度统计运动波动信息对应的第一维度波动值小于第一预设阈值,且第二维度统计运动波动信息对应的第二维度波动值小于第二预设阈值时,将待编码视频帧对应的目标编码方式切换为第一编码方式。

在一个实施例中,根据图像运动信息确定待编码视频帧对应的目标编码方式,包括:当第一维度统计运动波动信息对应的第一维度波动值大于第三预设阈值,和/或第二维度统计运动波动信息对应的第二维度波动值大于第四预设阈值时,将待编码视频帧对应的目标编码方式切换为第二编码方式。

在一个实施例中,所述计算机程序还使得所述处理器执行如下步骤:获取待编码视频帧之前的连续历史前向视频帧;获取各个连续历史前向视频帧对应的图像运动信息;根据各个连续历史前向视频帧对应的图像运动信息和待编码视频帧对应的图像运动信息,确定待编码视频帧对应的目标编码方式。

在一个实施例中,第一编码方式的运动搜索范围大于第二编码方式的运动搜索范围;和/或第一编码方式中亚像素插值算法为关闭状态;和/或第一编码方式中帧内编码模式的复杂度高于第二编码方式中帧内编码模式的复杂度。

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

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

在一个实施例中,第一图像运动信息的生成步骤包括:对待编码视频帧进行分割,得到多个预编码视频块;获取待编码视频帧的前向视频帧,获取与各个预编码视频块对应的预编码参考视频块;根据各个预编码视频块和对应的预编码参考视频块的位置计算得到待编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第一图像运动信息。

在一个实施例中,根据各个预编码视频块和对应的预编码参考视频块的位置计算得到待编码视频帧对应的统计运动波动信息包括:根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第一维度对应的第一维度运动位移;根据各个预编码视频块对应的第一维度运动位移,计算得到待编码视频帧对应的第一维度统计运动波动信息;根据各个预编码视频块和对应的预编码参考视频块的位置计算得到各个预编码视频块在第二维度对应的第二维度运动位移;根据各个预编码视频块对应的第二维度运动位移,计算得到待编码视频帧对应的第二维度统计运动波动信息;根据第一维度统计运动波动信息和第二维度统计运动波动信息得到待编码视频帧对应的统计运动波动信息。

在一个实施例中,第二图像运动信息的生成步骤包括:获取待编码视频帧之前的历史已编码视频帧;获取历史已编码视频帧中各个已编码视频块对应的运动矢量;根据各个已编码视频块对应的运动矢量计算得到历史已编码视频帧对应的统计运动波动信息,将统计运动波动信息作为第二图像运动信息,统计运动波动信息包括对应的第一维度统计运动波动信息和第二维度统计运动波动信息。

在一个实施例中,根据图像运动信息确定待编码视频帧对应的目标编码方式,包括:当图像运动信息对应的运动状态为一致性运动时,确定待编码视频帧对应的目标编码方式为第一编码方式;否则,确定待编码视频帧对应的目标编码方式为第二编码方式。

在一个实施例中,根据图像运动信息确定待编码视频帧对应的目标编码方式,包括:当第一维度统计运动波动信息对应的第一维度波动值小于第一预设阈值,且第二维度统计运动波动信息对应的第二维度波动值小于第二预设阈值时,将待编码视频帧对应的目标编码方式切换为第一编码方式。

在一个实施例中,根据图像运动信息确定待编码视频帧对应的目标编码方式,包括:当第一维度统计运动波动信息对应的第一维度波动值大于第三预设阈值,和/或第二维度统计运动波动信息对应的第二维度波动值大于第四预设阈值时,将待编码视频帧对应的目标编码方式切换为第二编码方式。

在一个实施例中,计算机程序还使得处理器执行如下步骤:获取待编码视频帧之前的连续历史前向视频帧;获取各个连续历史前向视频帧对应的图像运动信息;根据各个连续历史前向视频帧对应的图像运动信息和待编码视频帧对应的图像运动信息,确定待编码视频帧对应的目标编码方式。

在一个实施例中,第一编码方式的运动搜索范围大于第二编码方式的运动搜索范围;和/或第一编码方式中亚像素插值算法为关闭状态;和/或第一编码方式中帧内编码模式的复杂度高于第二编码方式中帧内编码模式的复杂度。

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

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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