一种数据编码方法、装置以及计算机可读存储介质与流程

文档序号:23347790发布日期:2020-12-18 16:50阅读:197来源:国知局
一种数据编码方法、装置以及计算机可读存储介质与流程

本申请涉及数据处理的技术领域,尤其涉及一种数据编码方法、装置以及计算机可读存储介质。



背景技术:

在很多日常生活场景中,都会涉及到对视频数据进行压缩的场景,例如用户a向用户b传输一个视频数据时,就会涉及到对视频数据进行压缩再传输的过程。其中,在对视频数据进行压缩时,会用到视频数据中每个图像帧的运动矢量信息。该运动矢量信息可以表征视频数据的相邻图像帧之间的相对变化。

现有技术中,在对视频数据进行压缩时,会对视频数据中的每一个图像帧执行十字搜索算法,对图像帧执行十字搜索算法可以搜索出图像帧的运动矢量信息所包含的运动方向。由于对每一个图像帧执行十字搜索算法通常比较费时,因此,对视频数据中的每个图像帧执行十字搜索算法,会导致对图像帧的编码耗时较多,进一步导致对视频数据的编码耗时较多。



技术实现要素:

本申请提供了一种数据编码方法、装置以及计算机可读存储介质,可提高针对目标图像帧的编码速度。

本申请一方面提供了一种数据编码方法,包括:

获取目标图像帧所包括的至少两个编码单元,获取至少两个编码单元中的每个编码单元的运动矢量信息;

基于每个编码单元的运动矢量信息,确定针对目标图像帧的整体平均矢量信息;

基于每个编码单元的运动矢量信息在参考方向上的分量矢量信息,确定目标图像帧在参考方向上的分量平均矢量信息;

根据整体平均矢量信息和分量平均矢量信息,确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略;帧执行策略为帧启动执行策略或帧关闭执行策略。

本申请一方面提供了一种数据编码装置,包括:

运动信息获取模块,用于获取目标图像帧所包括的至少两个编码单元,获取至少两个编码单元中的每个编码单元的运动矢量信息;

整体信息确定模块,用于基于每个编码单元的运动矢量信息,确定针对目标图像帧的整体平均矢量信息;

分量信息确定模块,用于基于每个编码单元的运动矢量信息在参考方向上的分量矢量信息,确定目标图像帧在参考方向上的分量平均矢量信息;

策略确定模块,用于根据整体平均矢量信息和分量平均矢量信息,确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略;帧执行策略为帧启动执行策略或帧关闭执行策略。

其中,整体信息确定模块,包括:

分量信息获取单元,用于获取每个编码单元的运动矢量信息分别包括的水平分量矢量信息和垂直分量矢量信息;

矢量值确定单元,用于基于每个编码单元分别对应的水平分量矢量信息和垂直分量矢量信息,确定每个编码单元分别对应的单元运动矢量值;

整体信息确定单元,用于根据每个编码单元分别对应的单元运动矢量值、以及至少两个编码单元的单元数量,确定整体平均矢量信息。

其中,参考方向包括水平参考方向;每个编码单元的运动矢量信息在参考方向上的分量矢量信息,包括水平分量矢量信息;

分量信息确定模块,包括:

水平分量获取单元,用于获取每个编码单元的运动矢量信息分别在水平参考方向上的水平分量矢量信息;

水平值确定单元,用于根据每个编码单元分别在水平参考方向上的水平分量矢量信息,确定每个编码单元分别对应的水平分量值;

水平信息确定单元,用于根据每个编码单元分别对应的水平分量值、以及至少两个编码单元的单元数量,确定分量平均矢量信息。

其中,参考方向包括垂直参考方向;每个编码单元的运动矢量信息在参考方向上的分量矢量信息,包括垂直分量矢量信息;

分量信息确定模块,包括:

垂直分量获取单元,用于获取每个编码单元的运动矢量信息分别在垂直参考方向上的垂直分量矢量信息;

垂直值确定单元,用于根据每个编码单元分别在垂直参考方向上的垂直分量矢量信息,确定每个编码单元分别对应的垂直分量值;

垂直信息确定单元,用于根据每个编码单元分别对应的垂直分量值、以及至少两个编码单元的单元数量,确定分量平均矢量信息。

其中,策略确定模块,包括:

帧占比确定单元,用于根据整体平均矢量信息和分量平均矢量信息,确定帧分量占比值;

第一策略确定单元,用于当帧分量占比值大于或等于第一占比阈值,或者帧分量占比值小于或等于第二占比阈值时,确定目标图像帧针对运动搜索操作的帧执行策略为帧启动执行策略;

第二策略确定单元,用于当帧分量占比值小于第一占比阈值且大于第二占比阈值时,确定目标图像帧针对运动搜索操作的帧执行策略为帧关闭执行策略。

其中,上述装置还包括:

单元值确定模块,用于当确定目标图像帧针对运动搜索操作的帧执行策略为帧启动执行策略时,根据每个编码单元的运动矢量信息,确定每个编码单元的单元运动矢量值和单元分量矢量值;

单元策略确定模块,用于根据每个编码单元对应的单元运动矢量值和单元分量矢量值,确定每个编码单元针对运动搜索操作的单元执行策略。

其中,单元执行策略为单元启动执行策略或单元关闭执行策略;至少两个编码单元包括编码单元bi,i为小于或等于至少两个编码单元的单元数量的正整数;

单元策略确定模块,包括:

单元值确定单元,用于根据编码单元bi对应的单元运动矢量值和单元分量矢量值,确定编码单元bi对应的单元分量占比值;

第一单元策略确定单元,用于当单元分量占比值大于或等于第三占比阈值,或者单元分量占比值小于或等于第四占比阈值时,确定编码单元bi针对运动搜索操作的单元执行策略为单元启动执行策略,第三占比阈值大于第四占比阈值;

第二单元策略确定单元,用于当单元分量占比值小于第三占比阈值且大于第四占比阈值时,确定编码单元bi针对运动搜索操作的单元执行策略为单元关闭执行策略。

其中,运动信息获取模块,包括:

参考帧获取单元,用于获取目标图像帧的参考图像帧;

预测快获取单元,用于从参考图像帧中,分别获取与每个编码单元具有相似性的预测图像块;

运动信息确定单元,用于根据每个编码单元与所对应的预测图像块之间的相对位移、以及目标运动矢量精度,确定每个编码单元的运动矢量信息。

其中,上述装置还包括:

分帧模块,用于对视频数据进行分帧,得到视频数据包括的多个图像帧;

目标帧确定模块,用于从多个图像帧中,确定目标图像帧;

参考帧获取单元,用于:

从多个图像帧中,获取与目标图像帧相邻的图像帧,作为参考图像帧。

其中,上述装置还包括:

编码模块,用于基于所确定的目标图像帧针对运动搜索操作的帧执行策略,对视频数据进行编码,得到视频数据的编码数据;

播放模块,用于将编码数据同步至视频客户端,以使视频客户端对编码数据进行解码,得到视频数据的解码数据,播放解码数据。

其中,上述装置还包括:

帧划分模块,用于将目标图像帧划分为至少两个编码区域;

区域划分模块,用于对至少两个编码区域中的每个编码区域进行区域划分,得到每个编码区域分别所属的编码单元;

单元确定模块,用于将每个编码区域分别所属的编码单元,确定为目标图像帧所包括的至少两个编码单元。

本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请中一方面中的方法。

本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时使该处理器执行上述一方面中的方法。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面等各种可选方式中提供的方法。

本申请可以获取目标图像帧所包括的至少两个编码单元,获取至少两个编码单元中的每个编码单元的运动矢量信息;基于每个编码单元的运动矢量信息,确定针对目标图像帧的整体平均矢量信息;基于每个编码单元的运动矢量信息在参考方向上的分量矢量信息,确定目标图像帧在参考方向上的分量平均矢量信息;根据整体平均矢量信息和分量平均矢量信息,确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略;帧执行策略为帧启动执行策略或帧关闭执行策略。由此可见,本申请提出的方法可以根据目标图像帧的分量平均矢量信息与整体平均矢量信息之间的关系(例如所占比例),来确定对目标图像帧采用何种帧执行策略,对目标图像帧采用不同的帧执行策略,会使得对目标图像帧有不同的编码速度,因此通过此种自适应的方法来判断对目标图像帧采用的帧执行策略,这可以提高针对目标图像帧的编码速度。

附图说明

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

图1是本申请实施例提供的一种网络架构的结构示意图;

图2是本申请提供的一种数据编码的场景示意图;

图3是本申请提供的一种数据编码方法的流程示意图;

图4是本申请提供的一种获取运动矢量信息的场景示意图;

图5是本申请提供的一种获取分量平均矢量信息的场景示意图;

图6是本申请提供的一种获取分量平均矢量信息的场景示意图;

图7是本申请提供的一种获取矢量信息的场景示意图;

图8是本申请提供的一种获取单元分量矢量值的场景示意图;

图9是本申请提供的一种数据编码装置的结构示意图;

图10是本申请提供的一种计算机设备的结构示意图。

具体实施方式

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

本申请涉及到云技术。其中,云技术(cloudtechnology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。

云技术(cloudtechnology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。

本申请中主要涉及到的云技术指对视频数据进行传输的技术,具体涉及到可以使用云服务器先对视频数据进行编码压缩再传输的技术。请参见下述内容描述。

请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。如图1所示,网络架构可以包括服务器200和终端设备集群,终端设备集群可以包括一个或者多个终端设备,这里将不对终端设备的数量进行限制。如图1所示,多个终端设备具体可以包括终端设备100a、终端设备101a、终端设备102a、…、终端设备103a;如图1所示,终端设备100a、终端设备101a、终端设备102a、…、终端设备103a均可以与服务器200进行网络连接,以便于每个终端设备可以通过网络连接与服务器200之间进行数据交互。

如图1所示的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视等智能终端。下面以终端设备100a与服务器200之间的通信为例,进行本申请实施例的具体描述。

请一并参见图2,图2是本申请提供的一种数据编码的场景示意图。图像帧100b可以是对视频数据108b进行分帧后,所得到的图像帧,即图像帧100b可以是视频数据108b所包含的任意一个图像帧。该视频数据108b可以是任意一个视频数据,视频数据108b是由终端设备100a获取到的。例如,视频数据108b可以是终端设备100a在实现实时在线会议过程中所录制下来的会议视频数据。终端设备100a在获取到视频数据108b之后,可以将该视频数据108b发送给服务器200,以向服务器200请求对视频数据108b进行编码。因此,服务器108b在获取到视频数据108b之后,就可以对视频数据108b进行分帧,得到图像帧100b。

由于,服务器200对视频数据108b所包含的每一个图像帧进行编码的原理是相同的,因此,此处以服务器200如何对图像帧100b进行编码的过程为例进行说明。

如图2所示,服务器200可以将图像帧100b划分为多个(至少两个)编码单元,此处,图像帧100b被服务器200划分为的多个编码单元可以包括区域101b中的n个编码单元,n的取值可以根据实际应用场景决定,对此不作限制。该n个编码单元具体可以包括:编码单元1、编码单元2、编码单元3、……和编码单元n。

其中,上述n个编码单元中的每个编码单元都有其对应的运动矢量信息,该运动矢量信息可以表征图像帧100b中的编码单元相较于视频数据108b中图像帧100b的前一个图像帧中对应位置处的编码单元之间的变化(即运动情况),该运动矢量信息可以用于对图像帧100b进行编码。

其中,服务器200可以通过图像帧100b所包括的n个编码单元分别对应的运动矢量信息,计算得到图像帧100b的整体平均矢量信息105b,该整体平均矢量信息105b表征了图像帧100b所包含的全部编码单元对应的运动矢量信息的平均值。计算该整体平均矢量信息105b的具体过程,可以参见下述图3对应的实施例中的相应描述。

服务器200还可以通过图像帧100b所包括的n个编码单元分别对应的运动矢量信息,计算得到图像帧100b在垂直方向(可以理解为y轴方向)上的分量平均矢量信息106b,该分量平均矢量信息106b表征了图像帧100b所包含的全部编码单元对应的运动矢量信息在垂直方向上的平均值。计算该分量平均矢量信息106b的具体过程,也可以参见下述图3对应的实施例中的相应描述。

服务器200还可以通过图像帧100b所包括的n个编码单元分别对应的运动矢量信息,计算得到图像帧100b在水平方向(可以理解为x轴方向)上的分量平均矢量信息107b,该分量平均矢量信息107b表征了图像帧100b所包含的全部编码单元对应的运动矢量信息在水平方向上的平均值。计算该分量平均矢量信息107b的具体过程,也可以参见下述图3对应的实施例中的相应描述。

其中,当上述整体平均矢量信息105b、垂直方向上的分量平均矢量信息106b、以及水平方向上的分量平均矢量信息107b,存在区域102b所描述的情况,或者存在区域103b所描述的情况时,那么,在服务器对图像帧100b进行编码时,可以对图像帧100b开启(即执行)十字搜索算法(即得到区域104b中的结论),而在其他情况,即除区域102b所描述的情况和区域103b所描述的情况之外的情况,服务器可以对图像帧100b关闭(即不执行)十字搜索算法。

其中,该十字搜索算法是服务器在对图像帧100b进行编码的过程中,用于搜索图像帧100b所包含的运动矢量信息的运动方向的算法。可以理解的是,对图像帧100b执行十字搜索算法时对图像帧100b的编码速度,相较于对图像帧100b不执行(即关闭)十字搜索算法时对图像帧100b的编码速度要慢。因此,通过上述整体平均矢量信息105b、垂直方向上的分量平均矢量信息106b、以及水平方向上的分量平均矢量信息107b,来决定在某些情况下(即除区域102b所描述的情况和区域103b所描述的情况之外的情况)对图像帧100b关闭十字搜索算法,可以提高针对图像帧100b的编码速度。

其中,上述区域102b所描述的情况为:图像帧100b在垂直方向上的分量平均矢量信息106b与整体平均矢量信息105b之间的比值大于某个比值阈值时,则可以对图像帧100b开启十字搜索算法。分量平均矢量信息106b与整体平均矢量信息105b之间的比值大于某个比值阈值(可以自行设置)时,表明了图像帧100b相较于其前一个图像帧,其在垂直方向上存在明显的运动。

其中,上述区域103b所描述的情况为:图像帧100b在水平方向上的分量平均矢量信息107b与整体平均矢量信息105b之间的比值大于某个比值阈值(可以自行设置)时,则也可以对图像帧100b开启十字搜索算法。分量平均矢量信息107b与整体平均矢量信息105b之间的比值大于某个比值阈值时,表明了图像帧100b相较于其前一个图像帧,其在水平方向上存在明显的运动。

服务器200可以通过所判定的是否需要对图像帧100b执行十字搜索算法的结论,对视频数据108b进行编码,得到视频数据108b的编码数据。服务器200可以将该编码数据传输至需要播放视频数据108b的视频客户端。视频客户端获取到该编码数据之后,可以对该编码数据进行解码,即可得到视频数据108b的解码数据,视频客户端可以对该解码数据进行播放,以实现对视频数据108b的播放。

通过本申请所提供的方法,当某个图像帧(如图像帧100b)在水平方向或者垂直方向具有明显的运动时,即存在明显的水平运动或者垂直运动时,可以对该图像帧启动十字搜索算法,而在其他时候,可以对该图像帧关闭十字搜索算法,以此可以提高针对该图像帧的编码速度。

请参见图3,图3是本申请提供的一种数据编码方法的流程示意图,如图3所示,该方法可以包括:

步骤s101,获取目标图像帧所包括的至少两个编码单元,获取至少两个编码单元中的每个编码单元的运动矢量信息;

具体的,本申请实施例中的执行主体可以是任意一个计算机设备,或者可以是由多个计算机设备构成的设备集群。该计算机设备可以是服务器,也可以是终端设备,对此不进行限定。此处,以本申请中的执行主体为服务器为例进行说明。请参见下述内容描述。

服务器可以获取到视频数据,该视频数据可以是任意一个视频数据,该视频数据可以是终端设备发送给服务器的。终端设备通过向服务器发送视频数据,可以是向服务器请求对该视频数据进行编码。例如,该视频数据可以是摄像头实时拍摄下的视频数据,如在线会议视频数据;该视频数据还可以是屏幕分享的视频数据。

服务器在对视频数据进行编码时,可以对该视频数据进行分帧,即可得到该视频数据所包含的多个(至少两个)图像帧。因此,目标图像帧可以是该视频数据中所分帧得到的多个图像帧中的任意一个图像帧。服务器对视频数据进行编码,就是需要对视频数据的每一个图像帧进行编码,此处,就以服务器对视频数据中的目标图像帧进行编码的过程为例进行说明。可以理解的是,服务器对视频数据中的每个图像帧进行编码的原理是相同的。请参见下述内容描述。

服务器可以将目标图像帧划分为多个编码单元,一个编码单元表示目标图像帧中的一个图像块。通过将目标图像帧划分为多个编码单元,可以实现对目标图像帧进行分块编码。

可选的,服务器将目标图像帧划分为多个编码单元的方式可以为:首先,服务器可以将目标图像帧划分为多个相同大小的编码区域,进而,服务器可以对每个编码区域进行进一步的划分,可以得到每个编码区域分别包括的多个编码单元。所有编码区域包含的全部编码单元,即为目标图像帧包括的多个编码单元。

服务器还可以获取到目标图像帧的每个编码单元的运动矢量信息(可以简称为运动矢量,可以记为mv)。其中,目标图像帧的每个编码单元的运动矢量信息表征了目标图像帧与参考图像帧之间的相对运动。该参考图像帧可以是视频数据中与目标图像帧相邻、并且处于目标图像帧的前面的图像帧,例如,参考图像帧可以是视频数据中目标图像帧的前一个图像帧。因此,可以理解为,目标图像帧的每个编码单元的运动矢量信息表明了目标图像帧针对其前一个图像帧(即参考图像帧)的变化,即目标图像帧的每个编码单元的运动矢量信息表明了参考图像帧是通过哪些运动变化到了目标图像帧。

因此,目标图像帧的每个编码单元的运动矢量信息的获取方式可以是:

服务器在对参考图像帧进行编码时,同样可以将参考图像帧划分为多个图像块,该多个图像块可以理解为是参考图像帧的多个编码单元。服务器可以从参考图像帧被划分的多个图像块中,分别获取与目标图像帧的每个编码单元具有相似性的图像块,作为每个编码单元分别对应的预测图像块。

其中,参考图像帧和目标图像帧可以是相同大小的,参考图像帧的每个图像块与目标图像帧的每个编码单元之间的位置可以是一一对应的,即参考图像帧中与目标图像帧的每个编码单元相对应的预测图像块,可以是参考图像帧中与目标图像帧的每个编码单元对应位置相同的图像块。可以认为参考图像帧与目标图像帧中位置相同处的图像块和编码单元之间是相似的。

因此,服务器可以检测每个编码单元与其对应的预测图像块之间的相对位移,该相对位移表征了从预测图像块到其对应的编码单元所作的运动。进而,服务器就可以通过每个编码单元与其对应的预测图像块之间的相对位移、以及目标运动矢量精度,即可得到每个编码单元的运动矢量信息。

该目标运动矢量精度可以根据实际应用场景自行设置,该目标运动矢量精度表明了每个编码单元的运动矢量信息的精度。例如,该目标运动矢量精度可以是1/16像素精度、1/4像素精度、1/2像素精度、1像素精度、2像素精度、4像素精度或者8像素精度等。

实际上,服务器在对视频数据进行编码之前,会对视频数据进行预分析,该预分析的主要目的是为了分析对视频数据采用何种编码,会使得其率失真代价会最小。该率失真代价同时权衡了对视频数据进行编码的失真度和码率。在对视频数据进行预分析的过程中,服务器就可以得到每个目标图像帧的每个编码单元的运动矢量信息。

请参见图4,图4是本申请提供的一种获取运动矢量信息的场景示意图。如图4所示,服务器对视频数据100c进行分帧,可以得到区域101c中的多个图像帧。换句话说视频数据100c可以包括图像帧102c、图像帧103c、图像帧104c和图像帧105c。

服务器可以将图像帧102c、图像帧103c、图像帧104c和图像帧105c中任意一个视频帧作为目标视频帧,例如此处可以将图像帧104c作为目标图像帧。因此,参考图像帧可以是目标图像帧104c的前一个图像帧103c。服务器可以根据目标图像帧的每个编码单元与参考图像帧中对应位置处的图像块之间的相对运动,得到目标图像帧的每个编码单元的运动矢量信息105c。

步骤s102,基于每个编码单元的运动矢量信息,确定针对目标图像帧的整体平均矢量信息;

具体的,服务器可以获取到目标图像帧的每个编码单元的运动矢量信息分别包括的水平分量矢量信息和垂直分量矢量信息。一个编码单元的运动矢量信息所包括的水平分量矢量信息,也就是该编码单元的运动矢量信息在水平方向(可以理解为xy平面坐标轴的x方向)上的分量。同理,一个编码单元的运动矢量信息所包括的垂直分量矢量信息,也就是该编码单元的运动矢量信息在垂直方向(可以理解为xy平面坐标轴的y方向)上的分量。可以理解的是,编码单元的运动矢量信息为向量,一个编码单元的运动矢量信息对应的水平分量矢量信息和垂直分量矢量信息也都是向量。

由于编码单元的运动矢量信息为向量,因此编码单元的运动矢量信息具有方向和大小,运动矢量信息的大小就是运动矢量信息的长度(即向量的长度),该长度可以称之为运动矢量信息的模长。服务器可以根据每个编码单元分别对应的水平分量矢量信息以及垂直分量矢量信息,得到每个编码单元的运动矢量信息的模长,可以将目标图像帧的每个编码单元的运动矢量信息的模长,称之为每个编码单元分别对应的单元运动矢量值。

例如,一个编码单元的运动矢量信息的水平分量矢量信息的模长为x1,该编码单元的运动矢量信息的垂直分量矢量信息的模长为x2。那么,该编码单元的运动矢量信息对应的单元运动矢量值,就等于该编码单元的运动矢量信息的模长,也等于水平分量矢量信息的模长x1的平方加上垂直分量矢量信息的模长x2的平方后的值再开方得到的值。

通过上述过程,服务器可以计算得到每个编码单元分别对应的单元运动矢量值,服务器可以计算目标图像帧的所有编码单元对应的单元运动矢量值的平均值,作为上述整体平均矢量信息。例如,服务器可以计算所有编码单元分别对应的单元运动矢量值之和,并用该和再除以所有编码单元的总数量,即可得到上述整体平均矢量信息。

例如,目标图像帧包括编码单元1、编码单元2和编码单元3。其中,编码单元1对应的单元运动矢量值为4,编码单元2对应的单元运动矢量值为5,编码单元3对应的单元运动矢量值为6,因此,目标图像帧的整体平均矢量信息就等于(4+5+6)/3,等于5。

步骤s103,基于每个编码单元的运动矢量信息在参考方向上的分量矢量信息,确定目标图像帧在参考方向上的分量平均矢量信息;

具体的,此处,参考方向可以指水平参考方向(可以简称为水平方向)或者垂直参考方向(可以简称为垂直方向)。因此,此处运动矢量信息的分量矢量信息可以是水平参考方向或者垂直参考方向中任意一个方向上的分量信息。

当参考方向为水平参考方向时,服务器获取目标图像帧在参考方向上的分量平均矢量信息的过程可以为:

服务器可以根据每个编码单元(下述中的编码单元都为目标图像帧的编码单元)的运动矢量信息在水平参考方向上的水平分量矢量信息,得到每个编码单元分别对应的水平分量值,该水平分量值也就是水平分量矢量信息的大小。换句话说,可以将一个编码单元的运动矢量信息在水平参考方向上的水平分量矢量信息的模长,称之为该编码单元对应的水平分量值。

服务器可以根据每个编码单元分别对应的水平分量值、以及至少两个编码单元的单元数量,确定分量平均矢量信息:服务器可以将所有编码单元分别对应的水平分量值的平均值,作为目标图像帧的分量平均矢量信息。即服务器可以计算所有编码单元分别对应的水平分量值之和,并用该和除以所有编码单元的总数量(可以称之为单元数量),即可得到目标图像帧的分量平均矢量信息。

例如,若目标图像帧包括编码单元1、编码单元2和编码单元3。其中,编码单元1对应的水平分量值为6,编码单元2对应的水平分量值为7,编码单元3对应的水平分量值为8,那么,目标图像帧的分量平均矢量信息就可以等于(6+7+8)/3,即等于7。

请参见图5,图5是本申请提供的一种获取分量平均矢量信息的场景示意图。如图5所示,目标图像帧可以包括编码单元1、编码单元2、……和编码单元n。n的取值根据实际应用场景确定。

其中,编码单元1的运动矢量信息100d在水平参考方向上的水平分量矢量信息,为水平分量矢量信息101d。编码单元2的运动矢量信息102d在水平参考方向上的水平分量矢量信息,为水平分量矢量信息103d。编码单元n的运动矢量信息104d在水平参考方向上的水平分量矢量信息为水平分量矢量信息105d。

因此,编码单元1对应的水平分量值为水平分量矢量信息101d的模长,编码单元2对应的水平分量值就为水平分量矢量信息103d的模长,编码单元n对应的水平分量值就为水平分量矢量信息105d的模长。模长就是指向量去掉方向元素后剩下的线段的长度。

因此,服务器可以将编码单元1对应的水平分量值、编码单元2对应的水平分量值、……和编码单元n对应的水平分量值的平均值,作为目标图像帧的分量平均矢量信息106d。

同理,当参考方向为垂直参考方向时,服务器获取目标图像帧在参考方向上的分量平均矢量信息的过程可以为:

服务器可以根据每个编码单元的运动矢量信息在垂直参考方向上的垂直分量矢量信息,得到每个编码单元分别对应的垂直分量值,该垂直分量值也就是垂直分量矢量信息的大小。换句话说,可以将一个编码单元的运动矢量信息在垂直参考方向上的垂直分量矢量信息的模长,称之为该编码单元对应的垂直分量值。

服务器可以根据每个编码单元分别对应的垂直分量值、以及至少两个编码单元的单元数量,确定分量平均矢量信息:服务器可以将所有编码单元分别对应的垂直分量值的平均值,作为目标图像帧的分量平均矢量信息。即服务器可以计算所有编码单元分别对应的垂直分量值之和,并用该和除以所有编码单元的总数量(可以称之为单元数量),即可得到目标图像帧的分量平均矢量信息。

例如,若目标图像帧包括编码单元1、编码单元2和编码单元3。其中,编码单元1对应的垂直分量值为10,编码单元2对应的垂直分量值为20,编码单元3对应的垂直分量值为30,那么,目标图像帧的分量平均矢量信息就可以等于(10+20+30)/3,即等于20。

请参见图6,图6是本申请提供的一种获取分量平均矢量信息的场景示意图。如图6所示,目标图像帧可以包括编码单元1、编码单元2、……和编码单元n。n的取值根据实际应用场景确定。

其中,编码单元1的运动矢量信息100e在垂直参考方向上的垂直分量矢量信息,为垂直分量矢量信息101e。编码单元2的运动矢量信息102e在垂直参考方向上的垂直分量矢量信息,为垂直分量矢量信息103e。编码单元n的运动矢量信息104e在垂直参考方向上的垂直分量矢量信息为垂直分量矢量信息105e。

因此,编码单元1对应的垂直分量值就为垂直分量矢量信息101e的模长,编码单元2对应的垂直分量值就为垂直分量矢量信息103e的模长,编码单元n对应的垂直分量值就为垂直分量矢量信息105e的模长。

因此,服务器可以将编码单元1对应的垂直分量值、编码单元2对应的垂直分量值、……和编码单元n对应的垂直分量值的平均值,作为目标图像帧的分量平均矢量信息106e。

请参见图7,图7是本申请提供的一种获取矢量信息的场景示意图。如图7所示,目标图像帧的编码单元可以包括编码单元1、编码单元2、编码单元3和编码单元4。编码单元1的运动矢量信息可以为运动矢量信息106f,编码单元2的运动矢量信息可以为运动矢量信息107f,编码单元3的运动矢量信息可以为运动矢量信息104f,编码单元4的运动矢量信息可以为运动矢量信息105f。

服务器可以将运动矢量信息104f、运动矢量信息105f、运动矢量信息106f和运动矢量信息107f的模长的平均值,作为目标图像帧的整体平均矢量信息108f。服务器可以通过运动矢量信息104f、运动矢量信息105f、运动矢量信息106f和运动矢量信息107f在水平方向或者垂直方向的分量的模长的平均值,作为目标图像帧的分量平均矢量信息109f。

步骤s104,根据整体平均矢量信息和分量平均矢量信息,确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略;帧执行策略为帧启动执行策略或帧关闭执行策略。

具体的,由于上述参考方向可以是水平方向和垂直方向,与参考方向相关联的运动搜索操作,可以是执行十字搜索算法的操作。该十字搜索算法主要用于搜索图像帧或者编码单元的运动矢量信息在水平方向或/和垂直方向上的运动方向。

其中,对目标图像帧执行与参考方向相关联的运动搜索操作,就是表明对目标图像帧执行十字搜索算法的操作,也就是表明目标图像帧针对运动搜索操作的帧执行策略就为帧启动执行策略。不对目标图像帧执行与参考方向相关联的运动搜索操作,就是表明对目标图像帧不执行十字搜索算法的操作,也就是表明目标图像帧针对运动搜索操作的帧执行策略为帧关闭执行策略。

通过对目标图像帧执行与参考方向相关联的运动搜索操作,可以搜索得到目标图像帧所包含的运动矢量信息的运动方向。通过搜索得到目标图像帧所包含的运动矢量信息的运动方向,才可进一步更好地对目标图像帧进行编码。

本申请可以根据整体平均矢量信息和分量平均矢量信息,来判断目标图像帧是否在水平方向或者垂直方向上存在明显的运动。当目标图像帧在水平方向或者垂直方向上存在明显的运动时,可以对目标图像帧所包含的运动矢量信息执行与参考方向相关联的运动搜索操作,即执行十字搜索操作,否则可以不对目标图像帧执行与参考方向相关联的运动搜索操作,即不执行十字搜索操作。即当目标图像帧在水平方向或者垂直方向上不存在明显的运动时,可以对目标图像帧所包含的运动矢量信息不执行与参考方向相关联的运动搜索操作。

其中,需要知道的是,不论目标图像帧是否要执行与参考方向相关联的运动搜索操作(即执行十字搜索算法的操作),都要对目标图像帧执行普通的运动搜索操作。该十字搜索算法主要用于搜索目标图像帧在水平方向或者垂直方向上的运动方向,而该普通的运动搜索则可以指对目标图像帧中每个像素点都进行运动方向的搜索。

可以理解为,对目标图像帧执行十字搜索算法的操作是用于辅助对目标图像帧执行普通的运动搜索的操作。当目标图像帧在水平方向或者垂直方向上具有明显的运动时,对目标图像帧执行十字搜索算法可以使得对目标图像帧的运动矢量信息的运动方向的搜索更准确且更快速。而当目标图像帧在水平方向或者垂直方向上不具有明显的运动时,对目标图像帧执行十字搜索算法的操作的用处不大,因此当目标图像帧在水平方向或者垂直方向上不具有明显的运动时,可以不对目标图像帧执行十字搜索算法的操作(即不执行与参考方向相关联的运动搜索操作)。

由于对图像帧进行十字搜索算法的操作是比较费时的,因此在对视频数据进行编码时,若是对视频数据的每一个图像帧都无条件地执行十字搜索算法的操作,这会导致对视频数据的图像帧的编码耗时久,进一步导致对视频数据的编码耗时久。因此,通过本申请所提供的方法当某个图像帧(该图像帧可以作为上述目标图像帧)在水平方向或者垂直方向上不存在明显的运动时,则可以不对该图像帧执行十字搜索算法的操作。因此,可以提高针对图像帧的编码速度,进一步提高针对视频数据的编码速度。

其中,由于分量平均矢量信息可以是水平方向或者垂直方向中任意一个方向上的分量平均矢量信息,因此,可以理解的是,仅通过水平方向或者垂直方向上的分量平均矢量信息,就可以判断目标图像帧是否在水平方向或者垂直方向上存在明显的运动。

这是由于若分量平均矢量信息是水平方向上的,则当目标图像帧在水平方向上的分量平均矢量信息与整体平均矢量信息之间的比值大于或等于某个阈值(可以自行设置,可以称之为第一占比阈值)时,表明目标图像帧在水平方向上的分量平均矢量信息占据了整体平均矢量信息中的大部分的信息,也就表明了目标图像帧在水平方向上存在明显的运动。当目标图像帧在水平方向上的分量平均矢量信息与整体平均矢量信息之间的比值小于或等于某个阈值(可以自行设置,可以称之为第二占比阈值)时,表明目标图像帧在水平方向上的分量平均矢量信息占据了整体平均矢量信息中的很小部分的信息,也就表明了目标图像帧在水平方向上不存在明显的运动,但是在垂直方向上存在明显的运动。

同理,若分量平均矢量信息是垂直方向上的,则当目标图像帧在垂直方向上的分量平均矢量信息与整体平均矢量信息之间的比值大于或等于某个阈值(也可以为上述第一占比阈值)时,表明目标图像帧在垂直方向上的分量平均矢量信息占据了整体平均矢量信息中的大部分的信息,也就表明了目标图像帧在垂直方向上存在明显的运动。当目标图像帧在垂直方向上的分量平均矢量信息与整体平均矢量信息之间的比值小于或等于某个阈值(可以为上述第二占比阈值)时,表明目标图像帧在垂直方向上的分量平均矢量信息占据了整体平均矢量信息中的很小部分的信息,也就表明了目标图像帧在垂直方向上不存在明显的运动,但是在水平方向上存在明显的运动。

上述第一占比阈值大于第二占比阈值。

换句话说,若目标图像帧在水平方向上的分量平均矢量信息占据整体平均矢量信息的大部分的信息,则目标图像帧在垂直方向上的分量平均矢量信息就占据了整体平均矢量信息的小部分的信息。反之,若目标图像帧在垂直方向上的分量平均矢量信息占据整体平均矢量信息的大部分的信息,则目标图像帧在水平方向上的分量平均矢量信息就占据了整体平均矢量信息的小部分的信息。换句话说,水平方向上的分量平均矢量信息和垂直方向上的分量平均矢量信息之间是负相关的,一方大,另一方就小。

因此,可以将上述过程总结为:

可以将分量平均矢量信息与整体平均矢量信息之间的比值,称之为帧分量占比值,该帧分量占比值的数值范围为0到1。当该帧分量占比值大于或者等于上述第一占比阈值,或者该帧分量占比值小于或者等于上述第二占比阈值时,表明目标图像帧在水平方向或者垂直方向上存在明显的运动,因此,可以确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略为帧启动执行策略。

当上述帧分量占比值小于上述第一占比值并且大于上述第二占比阈值时,表明目标图像帧在水平方向或者垂直方向上不存在明显的运动,因此,可以确定目标图像帧针对与参考方向相关联的运动搜索操作(即执行十字搜索算法的操作)的帧执行策略为帧关闭执行策略。

当服务器确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略为帧关闭执行策略时,则服务器可以对目标图像帧中所有编码单元都不执行十字搜索算法的操作。

更多的,当服务器确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略为帧启动执行策略时,进一步的,服务器还可以具体判断目标图像帧的多个编码单元中,哪些编码单元需要执行十字搜索算法的操作,哪些编码单元不需要执行十字搜索算法的操作,这可以进一步提高针对目标图像帧的编码速度,请参见下述内容描述。

服务器判断每个编码单元是否需要执行十字搜索算法的操作的原理,与判断目标图像帧是否需要执行十字搜索算法的操作的原理相同,只是一个是图像帧级别的,一个是编码单元级别的。

具体的,服务器可以根据每个编码单元的运动矢量信息,得到每个编码单元的单元运动矢量值和单元分量矢量值。一个编码单元的单元运动分量值可以指该编码单元的运动矢量信息的大小,即模长。一个编码单元的单元分量矢量值,可以指该编码单元的运动矢量信息在水平方向上的水平分量矢量信息的模长,或者可以指该编码单元的运动矢量信息在垂直方向上的垂直分量矢量信息的模长。

请参见图8,图8是本申请提供的一种获取单元分量矢量值的场景示意图。如图8所示,运动矢量信息100g可以是目标图像帧的一个编码单元的运动矢量信息。运动矢量信息100g在垂直方向上的分量为垂直分量矢量信息101g,运动矢量信息100g在水平方向上的分量为水平分量矢量信息102g。

如区域103g所示,服务器可以将垂直分量矢量信息101g的模长104g或者将水平分量矢量信息102g的模长105g,作为运动矢量信息100g所属编码单元的单元分量矢量值。

其中,若是需要对某个编码单元执行十字搜索算法的操作,则可以称为该编码单元针对与参考方向相关联的运动搜索操作的单元执行策略为单元启动执行策略。若是不需要对某个编码单元执行十字搜索算法的操作,则可以称为该编码单元针对与参考方向相关联的运动搜索操作的单元执行策略为单元关闭执行策略。

由于判断每个编码单元的单元执行策略为单元启动执行策略还是单元关闭执行策略的原理相同,因此,假设目标图像帧的编码单元包括编码单元bi,i为小于或等于目标图像帧的所有编码单元的总数量的正整数,此处以判断编码单元bi的单元执行策略为单元启动执行策略还是单元关闭执行策略的过程为例进行说明。

可以将编码单元bi对应的单元分量矢量值与编码单元bi的单元运动矢量值之间的比值,称之为编码单元bi对应的单元分量占比值。当编码单元bi对应的单元分量占比值大于或等于某个阈值(可以自行设置,可以称之为第三占比阈值),或者当编码单元bi对应的单元分量占比值小于或等于某个阈值(可以自行设置,可以称之为第四占比阈值)时,可以认为编码单元bi在水平方向或者垂直方向上存在明显的运动,因此,可以确定针对编码单元bi的单元执行策略为单元启动执行策略。第三占比阈值大于第四占比阈值。

当编码单元bi的单元分量占比值小于上述第三占比阈值且大于上述第四占比阈值时,可以认为编码单元bi在水平方向或者垂直方向上不存在明显的运动,因此,可以确定针对编码单元bi的单元执行策略为单元关闭执行策略。

通过上述过程,服务器即可得到针对目标图像帧的帧执行策略,当针对目标图像帧的帧执行策略为帧启动执行策略时,还可以获取到针对目标图像帧的每个编码单元的单元执行策略。

服务器可以通过所得到的针对目标图像帧的帧执行策略和针对每个编码单元的单元执行策略,对目标图像帧所属的视频数据进行编码,可以得到该视频数据的编码数据。服务器可以将该编码数据发送至视频客户端,使得视频客户端可以对该编码数据进行解码,即可得到视频数据的解码数据,进而视频客户端可以对该解码数据进行播放,以实现对视频数据的播放。

例如,目标图像帧所属的视频数据可以是用户1的视频客户端发送给服务器的,用户1的视频客户端通过向服务器发送视频数据,是请求将该视频数据发送给用户2的视频客户端。因此,服务器对视频数据进行编码,得到视频数据的编码数据之后,可以将该编码数据发送至用户2的视频客户端,使得用户2的视频客户端可以对该编码数据进行解码,得到解码数据,并对该解码数据进行播放。

本申请可以获取目标图像帧所包括的至少两个编码单元,获取至少两个编码单元中的每个编码单元的运动矢量信息;基于每个编码单元的运动矢量信息,确定针对目标图像帧的整体平均矢量信息;基于每个编码单元的运动矢量信息在参考方向上的分量矢量信息,确定目标图像帧在参考方向上的分量平均矢量信息;根据整体平均矢量信息和分量平均矢量信息,确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略;帧执行策略为帧启动执行策略或帧关闭执行策略。由此可见,本申请提出的方法可以根据目标图像帧的分量平均矢量信息与整体平均矢量信息之间的关系(例如所占比例),来确定对目标图像帧采用何种帧执行策略,对目标图像帧采用不同的帧执行策略,会使得对目标图像帧有不同的编码速度,因此通过自适应判断对目标图像帧采用的帧执行策略,这可以提高针对目标图像帧的编码速度。

请参见图9,图9是本申请提供的一种数据编码装置的结构示意图。如图9所示,该数据编码装置1可以包括:运动信息获取模块101、整体信息确定模块102、分量信息确定模块103和策略确定模块104;

运动信息获取模块101,用于获取目标图像帧所包括的至少两个编码单元,获取至少两个编码单元中的每个编码单元的运动矢量信息;

整体信息确定模块102,用于基于每个编码单元的运动矢量信息,确定针对目标图像帧的整体平均矢量信息;

分量信息确定模块103,用于基于每个编码单元的运动矢量信息在参考方向上的分量矢量信息,确定目标图像帧在参考方向上的分量平均矢量信息;

策略确定模块104,用于根据整体平均矢量信息和分量平均矢量信息,确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略;帧执行策略为帧启动执行策略或帧关闭执行策略。

其中,运动信息获取模块101、整体信息确定模块102、分量信息确定模块103和策略确定模块104的具体功能实现方式请参见图3对应的实施例中的步骤s101-步骤s104,这里不再进行赘述。

其中,整体信息确定模块102,包括:分量信息获取单元1021、矢量值确定单元1022和整体信息确定单元1023;

分量信息获取单元1021,用于获取每个编码单元的运动矢量信息分别包括的水平分量矢量信息和垂直分量矢量信息;

矢量值确定单元1022,用于基于每个编码单元分别对应的水平分量矢量信息和垂直分量矢量信息,确定每个编码单元分别对应的单元运动矢量值;

整体信息确定单元1023,用于根据每个编码单元分别对应的单元运动矢量值、以及至少两个编码单元的单元数量,确定整体平均矢量信息。

其中,分量信息获取单元1021、矢量值确定单元1022和整体信息确定单元1023的具体功能实现方式请参见图3对应的实施例中的步骤s102,这里不再进行赘述。

其中,参考方向包括水平参考方向;每个编码单元的运动矢量信息在参考方向上的分量矢量信息,包括水平分量矢量信息;

分量信息确定模块103,包括:水平分量获取单元1031、水平值确定单元1032和水平信息确定单元1033;

水平分量获取单元1031,用于获取每个编码单元的运动矢量信息分别在水平参考方向上的水平分量矢量信息;

水平值确定单元1032,用于根据每个编码单元分别在水平参考方向上的水平分量矢量信息,确定每个编码单元分别对应的水平分量值;

水平信息确定单元1033,用于根据每个编码单元分别对应的水平分量值、以及至少两个编码单元的单元数量,确定分量平均矢量信息。

其中,水平分量获取单元1031、水平值确定单元1032和水平信息确定单元1033的具体功能实现方式请参见图3对应的实施例中的步骤s103,这里不再进行赘述。

其中,参考方向包括垂直参考方向;每个编码单元的运动矢量信息在参考方向上的分量矢量信息,包括垂直分量矢量信息;

分量信息确定模块103,包括:垂直分量获取单元1034、垂直值确定单元1035和垂直信息确定单元1036;

垂直分量获取单元1034,用于获取每个编码单元的运动矢量信息分别在垂直参考方向上的垂直分量矢量信息;

垂直值确定单元1035,用于根据每个编码单元分别在垂直参考方向上的垂直分量矢量信息,确定每个编码单元分别对应的垂直分量值;

垂直信息确定单元1036,用于根据每个编码单元分别对应的垂直分量值、以及至少两个编码单元的单元数量,确定分量平均矢量信息。

其中,垂直分量获取单元1034、垂直值确定单元1035和垂直信息确定单元1036的具体功能实现方式请参见图3对应的实施例中的步骤s103,这里不再进行赘述。

其中,策略确定模块104,包括:帧占比确定单元1041、第一策略确定单元1042和第二策略确定单元1043;

帧占比确定单元1041,用于根据整体平均矢量信息和分量平均矢量信息,确定帧分量占比值;

第一策略确定单元1042,用于当帧分量占比值大于或等于第一占比阈值,或者帧分量占比值小于或等于第二占比阈值时,确定目标图像帧针对运动搜索操作的帧执行策略为帧启动执行策略;

第二策略确定单元1043,用于当帧分量占比值小于第一占比阈值且大于第二占比阈值时,确定目标图像帧针对运动搜索操作的帧执行策略为帧关闭执行策略。

其中,帧占比确定单元1041、第一策略确定单元1042和第二策略确定单元1043的具体功能实现方式请参见图3对应的实施例中的步骤s104,这里不再进行赘述。

其中,上述装置1还包括:单元值确定模块105和单元策略确定模块106;

单元值确定模块105,用于当确定目标图像帧针对运动搜索操作的帧执行策略为帧启动执行策略时,根据每个编码单元的运动矢量信息,确定每个编码单元的单元运动矢量值和单元分量矢量值;

单元策略确定模块106,用于根据每个编码单元对应的单元运动矢量值和单元分量矢量值,确定每个编码单元针对运动搜索操作的单元执行策略。

其中,单元值确定模块105和单元策略确定模块106的具体功能实现方式请参见图3对应的实施例中的步骤s104,这里不再进行赘述。

其中,单元执行策略为单元启动执行策略或单元关闭执行策略;至少两个编码单元包括编码单元bi,i为小于或等于至少两个编码单元的单元数量的正整数;

单元策略确定模块106,包括:单元值确定单元1061、第一单元策略确定单元1062和第二单元策略确定单元1063;

单元值确定单元1061,用于根据编码单元bi对应的单元运动矢量值和单元分量矢量值,确定编码单元bi对应的单元分量占比值;

第一单元策略确定单元1062,用于当单元分量占比值大于或等于第三占比阈值,或者单元分量占比值小于或等于第四占比阈值时,确定编码单元bi针对运动搜索操作的单元执行策略为单元启动执行策略,第三占比阈值大于第四占比阈值;

第二单元策略确定单元1063,用于当单元分量占比值小于第三占比阈值且大于第四占比阈值时,确定编码单元bi针对运动搜索操作的单元执行策略为单元关闭执行策略。

其中,单元值确定单元1061、第一单元策略确定单元1062和第二单元策略确定单元1063的具体功能实现方式请参见图3对应的实施例中的步骤s104,这里不再进行赘述。

其中,运动信息获取模块101,包括:参考帧获取单元1011、预测快获取单元1012和运动信息确定单元1013;

参考帧获取单元1011,用于获取目标图像帧的参考图像帧;

预测块获取单元1012,用于从参考图像帧中,分别获取与每个编码单元具有相似性的预测图像块;

运动信息确定单元1013,用于根据每个编码单元与所对应的预测图像块之间的相对位移、以及目标运动矢量精度,确定每个编码单元的运动矢量信息。

其中,参考帧获取单元1011、预测快获取单元1012和运动信息确定单元1013的具体功能实现方式请参见图3对应的实施例中的步骤s101,这里不再进行赘述。

其中,上述装置1还包括:分帧模块107和目标帧确定模块108;

分帧模块107,用于对视频数据进行分帧,得到视频数据包括的多个图像帧;

目标帧确定模块108,用于从多个图像帧中,确定目标图像帧;

参考帧获取单元1011,用于:

从多个图像帧中,获取与目标图像帧相邻的图像帧,作为参考图像帧。

其中,分帧模块107和目标帧确定模块108的具体功能实现方式请参见图3对应的实施例中的步骤s101,这里不再进行赘述。

其中,上述装置1还包括:编码模块109和播放模块110;

编码模块109,用于基于所确定的目标图像帧针对运动搜索操作的帧执行策略,对视频数据进行编码,得到视频数据的编码数据;

播放模块110,用于将编码数据同步至视频客户端,以使视频客户端对编码数据进行解码,得到视频数据的解码数据,播放解码数据。

其中,编码模块109和播放模块110的具体功能实现方式请参见图3对应的实施例中的步骤s104,这里不再进行赘述。

其中,上述装置1还包括:帧划分模块111、区域划分模块112和单元确定模块113;

帧划分模块111,用于将目标图像帧划分为至少两个编码区域;

区域划分模块112,用于对至少两个编码区域中的每个编码区域进行区域划分,得到每个编码区域分别所属的编码单元;

单元确定模块113,用于将每个编码区域分别所属的编码单元,确定为目标图像帧所包括的至少两个编码单元。

其中,帧划分模块111、区域划分模块112和单元确定模块113的具体功能实现方式请参见图3对应的实施例中的步骤s101,这里不再进行赘述。

本申请可以获取目标图像帧所包括的至少两个编码单元,获取至少两个编码单元中的每个编码单元的运动矢量信息;基于每个编码单元的运动矢量信息,确定针对目标图像帧的整体平均矢量信息;基于每个编码单元的运动矢量信息在参考方向上的分量矢量信息,确定目标图像帧在参考方向上的分量平均矢量信息;根据整体平均矢量信息和分量平均矢量信息,确定目标图像帧针对与参考方向相关联的运动搜索操作的帧执行策略;帧执行策略为帧启动执行策略或帧关闭执行策略。由此可见,本申请提出的装置可以根据目标图像帧的分量平均矢量信息与整体平均矢量信息之间的关系(例如所占比例),来确定对目标图像帧采用何种帧执行策略,对目标图像帧采用不同的帧执行策略,会使得对目标图像帧有不同的编码速度,因此通过自适应判断对目标图像帧采用的帧执行策略,这可以提高针对目标图像帧的编码速度。

请参见图10,图10是本申请提供的一种计算机设备的结构示意图。如图10所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(display)、键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。

在图10所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3对应实施例中对数据编码方法的描述。应当理解,本申请中所描述的计算机设备1000也可执行前文图9所对应实施例中对数据编码装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。

此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的数据编码装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3对应实施例中对数据编码方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖范围。

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