欢迎光临小豌豆知识网!
当前位置:首页 > 生活技术 > 运动娱乐> 卡顿检测方法、装置、设备及可读存储介质独创技术54712字

卡顿检测方法、装置、设备及可读存储介质

2021-02-14 12:10:42

卡顿检测方法、装置、设备及可读存储介质

  技术领域

  本申请实施例涉及卡顿检测领域,特别涉及一种卡顿检测方法、装置、设备及可读存储介质。

  背景技术

  卡顿检测是一种针对视频播放或者游戏过程中,由于传输延迟、运算延迟等产生的卡顿问题进行检测的过程,由于卡顿问题通常会对用户产生视觉上的不连贯感,导致视频播放或者游戏过程的视觉体验较差。

  相关技术中,在对卡顿进行检测时,是通过画面每秒传输帧数(Frames PerSecond,FPS)确定的,或根据显卡渲染间隔计算得到的,当FPS低于阈值,或者显卡渲染降额高于阈值时,则认为产生了卡顿。

  然而,针对一些云游戏场景,由于云端设备本身产生的卡顿导致传输到终端进行解码播放的视频流本身存在卡顿效果,而上述方式在进行卡顿检测时,并不能检测到卡顿情况,导致卡顿检测的准确率较低。

  发明内容

  本申请实施例提供了一种卡顿检测方法、装置、设备及可读存储介质,能够提高卡顿检测的准确率。所述技术方案如下:

  一方面,提供了一种卡顿检测方法,所述方法包括:

  获取云游戏运行过程中的第一图像帧和第二图像帧,所述第一图像帧和所述第二图像帧为所述云游戏在运行过程中显示画面对应的图像帧;

  获取所述第一图像帧和所述第二图像帧的差异图像,所述差异图像表征所述第一图像帧和所述第二图像帧之间对应像素点之间的差异度;

  将所述差异图像转换为灰度图像,所述灰度图像包括若干像素点;

  根据所述灰度图像中所述像素点的灰度值,确定在所述第一图像帧至所述第二图像帧之间的显示时长内,所述云游戏运行时的卡顿情况。

  另一方面,提供了一种卡顿检测装置,所述装置包括:

  获取模块,用于获取云游戏运行过程中的第一图像帧和第二图像帧,所述第一图像帧和所述第二图像帧为所述云游戏在运行过程中显示画面对应的图像帧;

  所述获取模块,还用于获取所述第一图像帧和所述第二图像帧的差异图像,所述差异图像表征所述第一图像帧和所述第二图像帧之间对应像素点之间的差异度;

  转换模块,用于将所述差异图像转换为灰度图像,所述灰度图像包括若干像素点;

  确定模块,用于根据所述灰度图像中所述像素点的灰度值,确定在所述第一图像帧至所述第二图像帧之间的显示时长内,所述云游戏运行时的卡顿情况。

  另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述实施例中提供的卡顿检测方法。

  另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述实施例中提供的卡顿检测方法。

  另一方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如上述本申请实施例中提供的卡顿检测方法。

  本申请实施例提供的技术方案带来的有益效果至少包括:

  通过对过程视频中两帧图像帧之间的差异图像转换为灰度图,通过灰度图对两帧图像帧之间的卡顿情况进行确定,无需获取终端应用程序运行过程中的FPS值,即可确定卡顿情况,也即,针对云游戏等云应用程序也能够准确确定卡顿情况,提高了卡顿检测的准确率以及检测过程的适应力。

  附图说明

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

  图1是本申请一个示例性实施例提供的在游戏运行界面中显示卡顿检测控件的示意图;

  图2是本申请一个示例性实施例提供的卡顿检测方法的流程图;

  图3是基于2示出的实施例提供的两帧图像相减后得到的差异图像的示意图;

  图4是本申请另一个示例性实施例提供的卡顿检测方法的流程图;

  图5是基于图4示出的实施例提供的肉眼无法分辨出差异的两帧图像帧对应灰度图的图像直方图;

  图6是基于图4示出的实施例提供的肉眼能够分辨出差异的两帧图像帧对应灰度图的图像直方图;

  图7是本申请另一个示例性实施例提供的卡顿检测方法的流程图;

  图8是本申请一个示例性实施例提供的向第一数组填充元素的方案整体流程图;

  图9是本申请一个示例性实施例提供的向第二数组填充元素的方案整体流程图;

  图10是本申请一个示例性实施例提供的卡顿检测装置的结构框图;

  图11是本申请另一个示例性实施例提供的卡顿检测装置的结构框图;

  图12是本申请一个示例性实施例提供的终端的结构框图。

  具体实施方式

  为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

  首先,对本申请实施例中涉及的名词进行简单介绍:

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

  云游戏:是指游戏本身运行在云端服务器设备中,将云端设备渲染后的游戏画面编码后,通过网络传输至用户终端,由用户终端对编码文件进行解码后渲染至显示屏进行显示的游戏,从而,用户无需在本地安装游戏,而仅需要建立与云端的通信网络连接便能完成游戏交互过程。

  也即,云游戏的组织架构中包括终端和云端服务器,其中,终端用于接收用户对游戏过程的控制操作,并将控制操作对应的控制指令发送至云端服务器,云端服务器用于对游戏进程进行控制,并将游戏过程中的视频流发送至终端进行播放。也即在云游戏的组织架构中,终端主要负责对游戏过程中的游戏视频进行播放,以及接收控制操作;云端服务器主要负责游戏过程中的运算以及视频生成。游戏软件安装在云端服务器中,而无需在终端中进行安装,终端在建立与云端服务器的通信连接后,即可控制云游戏在云端服务器中运行。

  卡顿:是指终端在播放视频或者运行游戏的过程中,视觉上产生的不连贯感,通常是由于终端的运算出现延迟,或网络延迟等情况会导致卡顿情况的产生。相关技术中,通过画面每秒传输帧数(Frames Per Second,FPS)确定卡顿情况的产生,而在云游戏场景下,当云端设备本身出现卡顿,从而由云端设备传输至终端设备的视频流解码播放后本身已经存在卡顿效果时,则终端本身的FPS并无问题,而依旧产生的卡顿效果,通过FPS并不能对该场景下产生的卡顿情况进行检测。

  灰度图:是指将白色与黑色之间按对数关系分为若干等级,称为灰度。本申请实施例中,通过将彩色图像进行灰度处理,得到灰度图,其中,将彩色图像中每个像素点的红绿蓝(Red Green Blue,GRB)值按照公式转换为灰度,从而得到彩色图像对应的灰度图,视觉上,灰度图表现为黑白图像。示意性的,彩色转灰度的转换公式请参考如下公式一:

  公式一:灰度值=R×0.3+G×0.59+B×0.11

  其中,R表示红色通道取值,G表示绿色通道的取值,B表示蓝色通道的取值。

  结合上述名词简介,首先对本申请实施例涉及的应用场景进行介绍,本申请实施例提供的卡顿检测方法的应用场景包括如下场景中的至少一种:

  第一,在游戏运行过程中,对游戏的运行过程进行录屏,得到游戏过程视频,对游戏过程视频中相邻图像帧之间的相似度进行确定,并根据相邻图像帧之间的相似度确定游戏过程视频是否产生卡顿,从而判断游戏过程本身是否产生卡顿,并当游戏过程产生卡顿时,及时对卡顿情况进行修复;

  其中,上述游戏可以实现为普通游戏,也可以实现为云游戏,本申请实施例对此不加以限定。且,上述游戏可以实现为如:第一人称射击游戏(First Person Shooting Game,FPS)、多人在线战术竞技游戏(Multiplayer Online Battle Arena Games,MOBA)、多人枪战类生存游戏、大逃杀类型的射击游戏等。

  可选地,由于云游戏在运行过程中是由云端服务器进行运算,并将运算后得到的视频流传输至终端进行播放,也即终端在云游戏的运行过程中主要负责的是视频播放,云游戏的运行过程对终端的计算能力并没有非常高的要求,也不易在游戏视频的播放过程中产生卡顿情况,而云端服务器在游戏运行过程中的运算量较大,易产生卡顿情况,从而云端服务器生成的视频流本身即为存在卡顿情况的视频流,而终端播放视频流的过程中并不存在终端导致的卡顿,也即通过上述FPS并不能对云游戏运行过程中的卡顿情况进行准确的检测。而本申请实施例中,通过对云游戏运行过程中的过程视频进行图像帧的采集,并根据图像帧之间的差异度对云游戏的运行过程是否产生卡顿进行检测,提高了卡顿检测的准确率。

  示意性的,请参考图1,在游戏运行界面100中显示有卡顿检测控件110,用于表示当前终端正在对游戏过程进行录制,并根据录制得到的游戏过程视频对游戏是否产生卡顿进行检测。

  第二,在即时通讯程序中,对视频通话方的视频通讯过程进行录制,得到通讯过程视频,对通讯过程视频中相邻图像帧之间的相似度进行确定,并根据相邻两帧图像帧之间的相似度确定视频通讯过程中是否产生卡顿,从而判断视频通讯过程本身是否产生卡顿,并在视频通讯过程存在卡顿时,向用户提示卡顿情况,并提供修复建议;

  第三,在导航程序的导航过程中,对导航过程进行屏幕录制,得到导航过程视频,对导航过程视频中相邻图像帧之间的相似度进行确定,并根据相邻两帧图像帧之间的相似度确定导航过程视频中是否产生卡顿,从而判断导航过程本身是否产生卡顿,当导航过程产生卡顿时,修复卡顿情况,避免导航偏离路线。

  值得注意的是,上述应用场景仅为本申请实施例中示意性的举例,本申请实施例提供的卡顿检测方法可以应用于通过录制视频,并结合图像帧之间的相似度进行卡顿检测的任意场景下,本申请实施例对此不加以限定。

  值得注意的是,本申请实施例提供的卡顿检测方法,可以由终端实现,也可以由服务器实现,还可以由终端和服务器协同实现。其中,终端包括智能手机、平板电脑、便携式膝上笔记本电脑、台式计算机、智能音箱、智能可穿戴设备等终端中的至少一种,服务器可以是物理服务器,也可以是提供云计算服务的云服务器,且服务器可以实现为一台服务器,也可以是多个服务器构成的服务器集群或分布式系统。其中,当终端和服务器协同实现本申请实施例提供的方案时,终端和服务器可以通过有线或无线通信方式进行直接或间接连接,本申请实施例对此不加以限定。

  结合上述名词简介和场景介绍,对本申请实施例提供的卡顿检测方法进行说明,图2是本申请一个示例性实施例提供的卡顿检测方法的流程图,以该方法应用于服务器中为例进行说明,如图2所示,该方法包括:

  步骤201,获取云游戏运行过程中的第一图像帧和第二图像帧,第一图像帧和第二图像帧为云游戏在运行过程中显示画面对应的图像帧。

  可选地,第一图像帧和第二图像帧之间显示间隔时长小于时长要求,也即,第一图像帧和第二图像帧之间的显示间隔时长小于预设时长。如:第一图像帧和第二图像帧之间的显示间隔时长小于0.3秒。

  可选地,在获取第一图像帧和第二图像帧时,可以通过对终端显示画面进行截图的方式实现,也可以通过对终端在运行云游戏过程中的过程视频进行录制,从而从过程视频中获取第一图像帧和第二图像帧实现。

  本申请实施例中,以对云游戏运行过程进行视频录制,得到过程视频,并从过程视频中获取第一图像帧和第二图像帧为例进行说明。

  可选地,上述云游戏还可以实现为其他应用程序,如:终端游戏、即时通讯应用程序、导航程序、多媒体播放程序、金融类应用程序等程序中的至少一种。

  本申请实施例中,以云游戏为例进行说明,也即在云游戏的运行过程中,录制得到过程视频。其中,在云游戏中的游戏过程中,录制得到过程视频。也即,游戏应用程序中的过程视频录制包括如下两种情况中的任意一种:

  第一,当用户登录至云游戏中后,或云游戏被开启后,即开启对云游戏运行过程的录制,针对用户在游戏准备阶段、游戏阶段、游戏结束阶段、或者云游戏中其他功能使用过程中的界面内容均录制在过程视频中;

  可选地,由于在云游戏中,游戏准备阶段、游戏阶段以及游戏结束阶段的计算都是由云端服务器完成的,而除游戏阶段以外,游戏准备阶段以及游戏结束阶段都需要云端服务器进行大量的计算,游戏准备阶段中需要获取玩家在游戏阶段中的配置参数,游戏结束阶段需要获取玩家在游戏阶段中的游戏结果,故在游戏准备阶段的图像帧进行获取,并对游戏准备阶段是否产生卡顿进行检测,避免配置参数获取准确率低;在游戏结束阶段对图像帧进行获取,并对游戏结束阶段是否产生卡顿进行检测,避免游戏结果数据获取错误。

  第二,当用户登录至云游戏中,并触发开启游戏的操作时,开启对云游戏运行过程的录制,其中,游戏阶段是指用户通过操作控制游戏过程的阶段。

  可选地,由于在游戏阶段中云端服务器需要进行大量的逻辑运算和画面运算,故易产生卡顿情况,通过对游戏阶段中的图像帧进行获取,并通过图像帧进行游戏阶段的卡顿检测,避免游戏过程中持续出现卡顿情况而影响游戏体验。

  可选地,以游戏应用程序为例,本申请实施例提供的卡顿检测方法可以应用于游戏内部,也可以应用于游戏监控平台中,而游戏监控平台为独立于游戏应用程序本身存在的一个平台,由该平台对游戏过程中的过程视频进行录制,得到过程视频后,进行卡顿检测。可选地,卡顿检测方法还可以应用于一个独立的卡顿检测程序中,在用户应用终端设备的过程中,根据需要开启卡顿检测程序,卡顿检测程序开启后,根据应用程序进程的运行情况开启屏幕录制,并录制得到过程视频进行卡顿检测。

  可选地,在获取第一图像帧和第二图像帧时,可以通过对终端显示画面进行截图的方式实现,也可以通过对终端在运行云游戏过程中的过程视频进行录制,从而从过程视频中获取第一图像帧和第二图像帧实现。

  本申请实施例中,以对云游戏运行过程进行视频录制,得到过程视频,并从过程视频中获取第一图像帧和第二图像帧为例进行说明。

  可选地,第一图像帧和第二图像帧的选取方式包括如下方式中的至少一种:

  第一,第一图像帧和第二图像帧为过程视频中相邻的两帧,也即,从过程视频的第一帧开始进行获取,将过程视频的第一帧作为第一图像帧,第二帧作为第二图像帧,对第一帧和第二帧之间进行卡顿检测;然后将第二帧作为第一图像帧,将第三帧作为第二图像帧,对第二帧和第三帧之间进行卡顿检测,以此类推;

  可选地,当采用相邻帧进行卡顿检测时,则逐帧对过程视频进行卡顿检测,检测得到的卡顿情况更为准确。

  第二,第一图像帧和第二图像帧为过程视频中间隔n帧的两帧图像帧,n为正整数;

  如,n为3,则将第一帧作为第一图像帧,第四帧作为第二图像帧,对第一帧和第四帧之间进行卡顿检测。可选地,当第一图像帧和第二图像帧之间的卡顿检测完成后,将第一图像帧下一帧作为第一图像帧再次进行卡顿检测;或,将第二图像帧作为第一图像帧再次进行卡顿检测;或,将间隔m帧之后的图像帧作为第一图像帧再次进行卡顿检测,m为正整数。

  第三,第一图像帧和第二图像帧为过程视频中相邻的两帧关键帧,也即,从过程视频中的第一帧关键帧开始进行获取,将过程视频的第一帧关键帧作为第一图像帧,将第二帧关键帧作为第二图像帧,对第一帧关键帧和第二帧关键帧之间进行卡顿检测;然后将第二帧关键帧作为第一图像帧,将第三帧关键帧作为第二图像帧,对第二帧关键帧和第三帧关键帧之间进行卡顿检测,以此类推。

  其中,图像帧为视频中最小单位的单幅影像画面,在时间轴上表现为一格或者一格标记,关键帧(又称I帧)可以理解为视频中动作的转折帧,是指角色或者运动物体或者变化中的关键动作所处的一帧,关键帧与关键帧之间的图像帧称为过渡帧或者中间帧(P帧或者B帧)。

  值得注意的是,上述第一图像帧和第二图像帧的确定方式仅为示意性的举例,本申请实施例中还可以通过其他方式进行第一图像帧和第二图像帧的确定,本申请实施例对此不加以限定。

  步骤202,获取第一图像帧和第二图像帧的差异图像。

  可选地,差异图像表征第一图像帧和第二图像帧之间对应像素点之间的差异度,此时差异图像以彩色形式表达,如:差异图像为RGB图像,每个像素点对应有RGB值,通过将差异图像进行灰度处理,得到差异图像对应的灰度图像。

  可选地,首先确定第一图像帧对应的第一像素值矩阵,以及第二图像帧对应的第二像素值矩阵。其中,在构建第一像素值矩阵时,首先确定第一图像帧中像素点的排列方式,其次确定每个像素点的像素值,从而在构建第一像素值矩阵时,以像素点的排列方式确定矩阵的行和列,如:第一图像帧为300×500像素,则第一像素值矩阵包括300列,500行,其中,第一像素值矩阵中每个元素的取值对应第一图像帧中对应像素点的像素值,如:第一图像帧中第120×20的元素像素值为(50,50,50),则第一像素值矩阵中,第120列第20行的元素取值为(50,50,50)。可选地,第二像素值矩阵的确定方式请参考第一像素值矩阵的确定方式,且第一像素值矩阵和第二像素值矩阵的尺寸一致。

  将第一像素值矩阵和第二像素值矩阵相减,得到差异图像,其中,差异图像以差异矩阵的形式表达,差异矩阵中包括像素点之间的差异度对应的差异像素值,其中,由于第一像素值矩阵和第二像素值矩阵以RGB像素取值的形式表达,故,在进行相减运算时,将对应像素位置上R的取值、G的取值和B的取值分别进行相减,得到差异矩阵。

  步骤203,将差异图像转换为灰度图像,灰度图像包括若干像素点。

  可选地,若干像素点中每个像素点对应灰度值。也即,获取差异图像对应的差异矩阵中的差异像素值,将差异像素值转换为灰度值,从而得到灰度图像,该灰度图像以灰度值矩阵的形式表达。其中,针对单个差异像素值,采用如上公式一提供的灰度值转换算法,将差异像素值中R、G、B的取值分别代入公式一,得到灰度值。

  可选地,通过跨平台计算机视觉库(OpenCV)中的subtract接口,对两帧图像帧对应的矩阵进行相减;通过OpenCV的cvtColor接口,将相减得到的差异矩阵转换为灰度值矩阵。由于使用的是OpenCV中较为成熟的接口:subtract接口和cvtColor接口,且只涉及简单的矩阵运算,通过以上方式处理两张2340*1080的图片耗时约0.01秒,计算速度较快。

  可选地,在将第一图像帧和第二图像帧的像素值矩阵进行相减运算时,首先确定第一图像帧和第二图像帧的像素值矩阵,以第一图像帧的像素值矩阵为例进行说明,像素值矩阵的尺寸与第一图像帧的像素数对应,像素值矩阵中的每个元素为第一图像帧中对应像素点的RGB值;则第二图像帧的像素值矩阵中每个元素为第二图像帧中对应像素点的RGB值。在将第一图像帧和第二图像帧的像素值矩阵进行相减时,将两个像素值矩阵中对应位置的像素值进行相减。

  可选地,当两帧图像之间无差异,则相减后的矩阵绘制得到的为一张全黑的图像,而肉眼可分辨出差异的图像之间,相减后绘制出的图像会在差异区域呈现亮点,且差异越大亮点也会越亮,但由于呈现黑色的图像中的像素值并非必然是(0,0,0),而通常为(1,1,1)或(2,2,2)这类三通道取值皆较小的值,因此,不能以像素值为(0,0,0)作为两帧图像之间是否存在肉眼可见的差异的判断条件。

  示意性的,请参考图3,其示出了本申请一个示例性实施例提供的相同帧和不同帧之间相减后得到的差异图像的示意图,如图3所示,相同帧相减后的差异图像310为全黑图像;而不同帧相减后的差异图像320中存在亮点。值得注意的是,由于两帧图像之间可能由于采集时间差的问题,存在显示亮度或者其他方面的差异,本申请实施例中涉及的相同帧为肉眼无法区分区别点的两帧,而并非完全相同的两帧。

  本申请实施例中,通过将彩色图像进行灰度处理,得到灰度图,其中,将彩色图像中每个像素点的RGB值按照公式转换为灰度值,从而得到彩色图像对应的灰度图,视觉上,灰度图表现为黑白图像。示意性的,彩色转灰度的转换公式如上述公式一所示。

  步骤204,根据灰度图像中像素点的灰度值,确定在第一图像帧至第二图像帧之间的显示时长内,云游戏运行时的卡顿情况。

  可选地,第一图像帧和第二图像帧之间的差异,与灰度图像中的灰度值呈正相关关系,也即灰度图像中的灰度值越大,则表示第一图像帧和第二图像帧之间的差异越大,从而也能够确定,第一图像帧和第二图像帧之间未产生卡顿情况;同理,响应于灰度图像中的灰度值越小,则表示第一图像帧和第二图像帧之间的差异越小,当灰度图像中的最大灰度值小于预设阈值时,则确定第一图像帧和第二图像帧之间产生卡顿情况。

  可选地,根据灰度图像中的最大灰度值,确定第一图像帧和第二图像帧之间的卡顿情况;或,根据灰度图像中的平均灰度值,确定第一图像帧和第二图像帧之间的卡顿情况。

  其中,针对上述两种情况分别进行说明,1、针对通过最大灰度值确定是否产生卡顿情况的方案,由于根据实验发现,针对肉眼无法分辨出差异的两帧图像帧,最大灰度值通常不会超过40,而对于可以分辨出差异的两帧图像帧,存在大量超过40的灰度值,故,确定灰度图像中的最大灰度值,并当最大灰度值不大于预设阈值(如40)时,确定第一图像帧和第二图像帧之间产生卡顿,符合两帧图像帧之间的差异度与灰度值之间的关联关系;2、针对通过平均灰度值确定是否产生卡顿情况的方案,当图像帧的计算过程出现错误,导致单个或者多个像素点的像素值不准确时,通过上述最大灰度值易产生漏检的问题,即存在卡顿情况无法被检测到,而通过平均灰度值,当平均灰度值小于预设阈值时,表示两帧图像帧整体上相似度较高,即使存在像素点由于计算错误具有差异,但肉眼无法分辨出两帧图像帧的差异,依旧能够检测到两帧图像帧之间的卡顿情况,提高了卡顿检测的准确率。

  示意性的,从灰度图像中,确定像素点的最大灰度值,响应于最大灰度值小于灰度值要求,确定第一图像帧和第二图像帧之间存在卡顿。

  综上所述,本实施例提供的卡顿检测方法,通过对过程视频中两帧图像帧之间的差异图像转换为灰度图,通过灰度图对两帧图像帧之间的卡顿情况进行确定,无需获取终端应用程序运行过程中的FPS值,即可确定卡顿情况,也即,针对云游戏等云应用程序也能够准确确定卡顿情况,提高了卡顿检测的准确率以及检测过程的适应力。

  本实施例提供的卡顿检测方法,应用在云游戏中,即使云游戏的运行过程中,由于云端服务器产生卡顿而导致游戏画面的视频流存在卡顿,也能够通过两帧图像帧之间的差异度进行确定,避免产生云端服务器生成的游戏视频流卡顿,而终端对视频流的播放过程流程,从而导致的无法对云游戏过程中的卡顿情况进行检测的问题。

  在一个可选的实施例中,通过创建第一数组对过程视频中出现的卡顿情况进行记录,图4是本申请另一个示例性实施例提供的卡顿检测方法的流程图,以该方法应用于服务器中为例进行说明,如图4所示,该方法包括:

  步骤401,获取云游戏运行过程中录制得到的过程视频。

  本申请实施例中,以游戏应用程序为例进行说明,也即在游戏应用程序的运行过程中,录制得到过程视频。

  步骤402,创建与过程视频对应的第一数组。

  可选地,第一数组用于记录图像帧对应的卡顿情况。可选地,本申请实施例中,以逐帧对过程视频进行卡顿检测为例进行说明,也即第一图像帧和第二图像帧为过程视频中的相邻帧,且以第一图像帧的播放顺序在第二图像帧之前为例进行说明,则在对第一数组中的元素进行赋值时,当针对第一图像帧和第二图像帧进行卡顿检测时,在第一图像帧对应的元素位置根据卡顿情况进行赋值。

  其中,通过对第一数组中的数组元素进行赋值的方式,通过第一数组中元素取值的分布情况,即可直观得到过程视频中产生卡顿的情况,提高了卡顿检测的效率。

  步骤403,从过程视频中获取第一图像帧和第二图像帧,第一图像帧和第二图像帧之间的间隔帧数小于帧数要求。

  可选地,第一图像帧和第二图像帧的选取方式包括如下方式中的至少一种:

  第一,第一图像帧和第二图像帧为过程视频中相邻的两帧;

  第二,第一图像帧和第二图像帧为过程视频中间隔n帧的两帧图像帧,n为正整数;

  第三,第一图像帧和第二图像帧为过程视频中相邻的两帧关键帧。

  步骤404,将第一图像帧和第二图像帧的差异图像转换为灰度图像。

  可选地,首先将第一图像帧和第二图像帧进行相减运算,得到差异图像,此时差异图像以彩色形式表达,如:差异图像为RGB图像,每个像素点对应有RGB值,通过将差异图像进行灰度处理,得到差异图像对应的灰度图像。

  步骤405,从灰度图像中确定像素点的最大灰度值。

  可选地,灰度图像对应有灰度值矩阵,通过扩展程序库(NumPy)的argmax接口,从灰度值矩阵中获取最大灰度值。

  由于使用的是OpenCV和NumPy中较为成熟的接口,且只涉及简单的矩阵运算,通过以上方式处理两张2340*1080的图片耗时约0.01秒,计算速度较快。

  步骤406,响应于最大灰度值小于灰度值要求,确定第一图像帧和第二图像帧之间的显示时长内,云游戏运行时存在卡顿。

  可选地,响应于最大灰度值小于阈值,确定第一图像帧和第二图像帧之间存在卡顿。

  可选地,根据实验发现,针对肉眼无法分辨出差异的两帧图像帧,最大灰度值通常不会超过40,而对于可以分辨出差异的两帧图像帧,存在大量超过40的灰度值。

  示意性的,请参考图5,其示出了肉眼无法分辨出差异的两帧图像帧对应灰度图的图像直方图510;如图5所示,在图像直方图510中,灰度图中像素点的灰度值皆处于40以下;请参考图6,其示出了肉眼能够分辨出差异的两帧图像帧对应灰度图的图像直方图610;如图6所示,在图像直方图610中,灰度图中像素点的灰度值存在较多超出40的灰度值。

  示意性的,以灰度值40作为灰度值要求,则响应于最大灰度值小于40,确定第一图像帧和第二图像帧之间存在卡顿。

  值得注意的是,上述灰度值阈值40仅为示意性的举例,根据实际灰度值分布情况,还可以对灰度值阈值进行调整,如:35、50等。

  可选地,响应于最大灰度值达到灰度值要求,则确定第一图像帧和第二图像帧之间不存在卡顿。

  步骤407,根据第一图像帧和第二图像帧之间的卡顿情况,对第一数组中与第一图像帧对应的元素位置进行赋值。

  可选地,响应于第一图像帧和第二图像帧之间存在卡顿,对第一数组中与第一图像帧对应的元素位置赋第一取值;响应于第一图像帧和第二图像帧之间不存在卡顿,对第一数组中与第一图像帧对应的元素位置赋第二取值。

  示意性的,响应于第一图像帧和第二图像帧之间存在卡顿,对第一数组中与第一图像帧对应的元素位置赋值为0;响应于第一图像帧和第二图像帧之间不存在卡顿,对第一数组中与第一图像帧对应的元素位置赋值为1。

  示意性的,对过程视频中的图像帧1和图像帧2进行卡顿检测,也即确定图像帧1和图像帧2之间的差异图像,并对差异图像进行灰度处理,得到灰度图像,根据灰度图像中的最大灰度值,确定卡顿情况;以灰度要求为40为例,当灰度图中的最大灰度值为80时,确定图像帧1和图像帧2之间不存在卡顿情况,并在第一数组中与图像帧1对应的元素位置赋值为1,当灰度图中的最大灰度值为30时,则确定图像帧1和图像帧2之间存在卡顿情况,并在第一数组中与图像帧1对应的元素位置赋值为0。

  步骤408,根据第一数组中元素的赋值情况,确定云游戏运行过程中的卡顿情况。

  可选地,以第一取值为0,第二取值为1为例进行说明,在理想情况下,也即云游戏运行过程中不存在卡顿的情况下,第一数组中连续k个元素之和应当为k,k为正整数。示意性的,第一数组中任意30个元素之和应该是30,当连续30个元素之和小于阈值15时,则表示存在显著的卡顿问题;或,连续三个元素均为第一取值,也能够表示存在显著的卡顿问题。

  综上所述,本实施例提供的卡顿检测方法,通过对过程视频中两帧图像帧之间的差异图像转换为灰度图,通过灰度图对两帧图像帧之间的卡顿情况进行确定,无需获取终端应用程序运行过程中的FPS值,即可确定卡顿情况,也即,针对云游戏等云应用程序也能够准确确定卡顿情况,提高了卡顿检测的准确率以及检测过程的适应力。

  本实施例提供的方法,通过创建第一数组,并在第一数组中根据第一图像帧和第二图像帧之间的卡顿关系,对元素进行赋值,从而在对过程视频中的图像帧遍历完毕后,根据第一数组中元素的取值情况,确定整个过程视频的卡顿情况,从而确定应用程序运行过程中的卡顿情况,提高了卡顿检测的准确率和适应性。

  本方案对被测方不需要进行任何侵入,仅需要运行期间进行录屏即可,且对终端类型没有要求,操作简便,卡顿检测效果准确。

  在一个可选的实施例中,在确定云游戏运行过程中的卡顿情况时,通过创建第二数组的方式进行确定;图7是本申请另一个示例性实施例提供的卡顿检测方法的流程图,以该方法应用于服务器中为例进行说明,如图7所示,该方法包括:

  步骤701,获取云游戏运行过程中录制得到的过程视频。

  本申请实施例中,以游戏应用程序为例进行说明,也即在游戏应用程序的运行过程中,录制得到过程视频。

  步骤702,创建与过程视频对应的第一数组。

  可选地,第一数组用于记录图像帧对应的卡顿情况。

  步骤703,从过程视频中获取第一图像帧和第二图像帧,第一图像帧和第二图像帧之间的间隔帧数小于帧数要求。

  可选地,第一图像帧和第二图像帧的选取方式包括如下方式中的至少一种:

  第一,第一图像帧和第二图像帧为过程视频中相邻的两帧;

  第二,第一图像帧和第二图像帧为过程视频中间隔n帧的两帧图像帧,n为正整数;

  第三,第一图像帧和第二图像帧为过程视频中相邻的两帧关键帧。

  步骤704,将第一图像帧和第二图像帧的差异图像转换为灰度图像。

  可选地,首先将第一图像帧和第二图像帧进行相减运算,得到差异图像,此时差异图像以彩色形式表达,如:差异图像为RGB图像,每个像素点对应有RGB值,通过将差异图像进行灰度处理,得到差异图像对应的灰度图像。

  步骤705,从灰度图像中确定像素点的最大灰度值。

  步骤706,响应于最大灰度值小于灰度值要求,确定第一图像帧和第二图像帧之间的显示时长内,云游戏运行时存在卡顿。

  可选地,响应于最大灰度值小于阈值,确定第一图像帧和第二图像帧之间存在卡顿。

  示意性的,以灰度值40作为灰度值要求,则响应于最大灰度值小于40,确定第一图像帧和第二图像帧之间的显示时长内,云游戏运行时存在卡顿。

  可选地,响应于最大灰度值达到灰度值要求,则确定第一图像帧和第二图像帧之间的显示时长内,云游戏运行时不存在卡顿。

  步骤707,根据第一图像帧和第二图像帧之间的卡顿情况,对第一数组中与第一图像帧对应的元素位置进行赋值。

  可选地,响应于第一图像帧和第二图像帧之间存在卡顿,对第一数组中与第一图像帧对应的元素位置赋第一取值;响应于第一图像帧和第二图像帧之间不存在卡顿,对第一数组中与第一图像帧对应的元素位置赋第二取值。

  步骤708,创建与过程视频对应的第二数组。

  可选地,第二数组用于记录过程视频中出现卡顿的时间段。也即,当过程视频中出现卡顿情况时,在第二数组中对出现卡顿的时间段进行记录,从而在记录完毕后,能够通过第二数组直观确定过程视频中出现卡顿的时间段占总时长的比例,确定云游戏运行过程中的卡顿产生的频率。

  示意性的,以时间段实现为秒级单位为例进行说明,则第二数组用于记录过程视频中哪些秒出现了卡顿。可选地,第二数组用于根据第一数组中被记录为卡顿情况的元素,进行出现卡顿的时间段的确定。

  步骤709,对第一数组中的元素进行遍历。

  可选地,依次从第一数组中取出元素进行卡顿情况检测。可选地,第一数组中的每个元素用于指示对应的图像帧是否出现卡顿情况。如:第一数组中的第一个元素取值为1,则表示第一个图像帧相对于第二个图像帧未出现卡顿情况,第一数组中第二个元素取值为0,则表示第二个图像帧相对于第三个图像帧出现卡顿情况。

  步骤710,响应于第一数组中的元素取第一取值,确定元素位置在过程视频中对应的时间段。

  可选地,元素在第一数组中的下标表示帧数,如下标为10,则表示元素对应的图像帧为第10帧,示意性的,以过程视频以30FPS进行录制为例,则将元素下标除以30,得到对应的视频秒数,当秒数存在于第二数组中时,则不进行进一步判断,并继续进行遍历。可选地,由于在第二数组中需要记录的为过程视频中出现卡顿的时间段,则针对已记录过的时间段中的其他卡顿情况,无需进行重复记录,避免对元素值进行卡顿记录的重复操作,提高了第二数组的生成效率。

  当元素值为第二取值,表示不存在卡顿,则继续进行遍历,当元素值为第一取值,则表示存在卡顿,首先判断当前元素之后三十个元素之和是否大于阈值,若小于阈值,则表示存在明显的卡顿,将当前元素对应的秒数加入第二数组;若之后三十个元素之和达到阈值,则继续判断当前元素前后相邻的两个元素是否取第一取值,当前后两个元素皆取第一取值,则表示出现了至少连续三帧相同图像帧导致的卡顿,将当前元素对应的秒数加入第二数组。

  步骤711,将时间段作为元素取值向第二数组中的元素进行赋值。

  可选地,将时间段作为元素取值进行赋值后,第二数组中元素的取值直观体现了过程视频中产生卡顿情况的时间段,如:第二数组中元素取值分别为2、3、5、9、10、16,则表示过程视频中第2秒、第3秒、第5秒、第9秒、第10秒以及第16秒皆产生过卡顿情况,并根据元素数确定卡顿时长和卡顿时间点,提高了云游戏卡顿情况的检测效率。

  步骤712,根据第二数组中被赋值的时间段总长度占过程视频总长度的比值,确定云游戏运行过程的卡顿情况。

  可选地,程序运行过程的卡顿情况包括相同帧占比、卡顿次数、卡顿时长、卡顿时间点中的至少一种,其中,相同帧占比通过如下公式二计算得到:

  公式二:相同帧占比=(1-b/a)×100%

  其中,a表示第一数组的长度,b表示第一数组中的元素之和。

  上述卡顿次数通过第一数组中第一取值的元素数量确定得到;卡顿时长、卡顿时间点通过第二数组确定得到。

  综上所述,本实施例提供的卡顿检测方法,通过对过程视频中两帧图像帧之间的差异图像转换为灰度图,通过灰度图对两帧图像帧之间的卡顿情况进行确定,无需获取终端应用程序运行过程中的FPS值,即可确定卡顿情况,也即,针对云游戏等云应用程序也能够准确确定卡顿情况,提高了卡顿检测的准确率以及检测过程的适应力。

  本实施例提供的方法,通过对第一数组进行遍历,从第一数组中获取表示图像帧产生卡顿的元素,并在第二数组中对卡顿对应的秒数进行记录,从而对卡顿的具体情况进行分析,增加了卡顿分析的数据量。

  示意性的,请参考图8,其示出了本申请一个示例性实施例提供的向第一数组填充元素的方案整体流程图,以本实施例提供的方法应用于云游戏中为例进行说明,如图8所示,该过程中包括:

  步骤801,以30fps录制云游戏视频。

  可选地,在云游戏的运行过程中,对游戏过程的视频进行录制,用于进行卡顿检测。

  步骤802,对云游戏视频的相邻帧进行相减,再将结果转为灰度图。

  可选地,对相邻帧的元素值矩阵进行相减,得到差异图像的元素值矩阵,通过将差异图像的元素值矩阵中的元素值进行灰度处理,将差异图像转换为灰度图。

  步骤803,判断灰度图中最大灰度值是否大于40。

  根据实验发现,针对肉眼无法分辨出差异的两帧图像帧,最大灰度值通常不会超过40,而对于可以分辨出差异的两帧图像帧,存在大量超过40的灰度值,故将40作为灰度值的阈值。

  步骤804,当最大灰度值大于40时,向第一数组中填充1。

  可选地,元素值赋为1表示图像帧之间存在差异,也即图像帧之间不存在卡顿情况。

  步骤805,当最大灰度值不大于40时,向第一数组中填充0。

  可选地,元素值赋为0表示图像帧之间差异较小,也即图像帧之间存在卡顿情况。

  示意性的,请参考图9,其示出了本申请一个示例性实施例提供的向第二数组填充元素的方案整体流程图,如图9所示,该过程包括:

  步骤901,从第一数组中取出元素。

  可选地,对第一数组中的元素进行遍历。

  步骤902,判断元素对应的图像帧的秒数是否在第二数组中。

  若元素对应图像帧的秒数存在第二数组中,则表示已判断过该秒数存在卡顿,无需进行再次检测。

  步骤903,若不存在第二数组中,则判断元素是否取第二取值。

  可选地,第二取值表示当前元素对应的图像帧在进行卡顿检测时,与另一图像帧存在差异,从而不存在卡顿情况。

  步骤904,当元素取第一取值时,判断当前元素之后三十个元素之和是否大于阈值。

  可选地,三十个元素之和不大于阈值表示卡顿情况较明显,则将当前元素对应图像帧的秒数增加至第二数组中。

  步骤905,当元素之和大于阈值时,判断与当前元素相邻的两个元素是否也取第一取值。

  步骤906,若都取第一取值,则将当前元素对应图像帧的秒数增加至第二数组中。

  综上所述,本实施例提供的卡顿检测方法,通过对过程视频中两帧图像帧之间的差异图像转换为灰度图,通过灰度图对两帧图像帧之间的卡顿情况进行确定,无需获取终端应用程序运行过程中的FPS值,即可确定卡顿情况,也即,针对云游戏等云应用程序也能够准确确定卡顿情况,提高了卡顿检测的准确率以及检测过程的适应力。

  图10是本申请一个示例性实施例提供的卡顿检测装置的结构框图,如图10所示,该装置包括:

  获取模块1010,用于获取云游戏运行过程中的第一图像帧和第二图像帧,所述第一图像帧和所述第二图像帧为所述云游戏在运行过程中显示画面对应的图像帧;

  获取模块1010,还用于获取所述第一图像帧和所述第二图像帧的差异图像,所述差异图像表征所述第一图像帧和所述第二图像帧之间对应像素点之间的差异度;

  转换模块1020,用于将所述差异图像转换为灰度图像,所述灰度图像包括若干像素点;

  确定模块1030,用于根据所述灰度图像中所述像素点的灰度值,确定在所述第一图像帧至所述第二图像帧之间的显示时长内,所述云游戏运行时的卡顿情况。

  在一个可选的实施例中,所述确定模块1030,还用于确定所述第一图像帧对应的第一像素值矩阵,以及所述第二图像帧对应的第二像素值矩阵;

  所述获取模块1010,还用于将所述第一素值矩阵和所述第二像素值矩阵相减,得到所述差异图像,其中,所述差异图像以差异矩阵的形式表达,所述差异矩阵中包括所述像素点之间的差异度对应的差异像素值。

  在一个可选的实施例中,所述获取模块1010,还用于获取所述差异图像对应的所述差异矩阵中的所述差异像素值;

  所述转换模块1020,还用于将所述差异像素值转换为灰度值,得到所述灰度图像,所述灰度图像以灰度值矩阵的形式表达。

  在一个可选的实施例中,所述确定模块1030,还用于从所述灰度图像中确定所述像素点的最大灰度值;

  所述确定模块1030,还用于响应于所述最大灰度值小于灰度值要求,确定所述第一图像帧至所述第二图像帧之间的显示时长内,所述云游戏运行时存在卡顿。

  在一个可选的实施例中,所述获取模块1010,还用于获取云游戏运行过程中录制得到的过程视频;从所述过程视频中获取所述第一图像帧和所述第二图像帧,所述第一图像帧和所述第二图像帧之间的间隔帧数小于帧数要求。

  在一个可选的实施例中,如图11所示,所述装置还包括:

  创建模块1040,用于创建与所述过程视频对应的第一数组,所述第一数组用于记录图像帧对应的卡顿情况;

  所述确定模块1030,还用于根据所述第一图像帧和所述第二图像帧之间的所述卡顿情况,对所述第一数组中与所述第一图像帧对应的元素位置进行赋值;

  所述确定模块1030,还用于根据所述第一数组中元素的赋值情况,确定所述云游戏运行过程的卡顿情况。

  在一个可选的实施例中,所述确定模块1030,还用于响应于所述第一图像帧和所述第二图像帧之间存在卡顿,对所述第一数组中与所述第一图像帧对应的元素位置赋第一取值;

  所述确定模块1030,还用于响应于所述第一图像帧和所述第二图像帧之间不存在卡顿,对所述第一数组中与所述第一图像帧对应的元素位置赋第二取值。

  在一个可选的实施例中,所述创建模块1040,还用于创建与所述过程视频对应的第二数组,所述第二数组用于记录所述过程视频中出现卡顿的时间段;

  所述确定模块1030,还用于对所述第一数组中的元素进行遍历;

  所述确定模块1030,还用于响应于所述第一数组中的元素取所述第一取值,确定所述元素位置在所述过程视频中对应的时间段;

  所述确定模块1030,还用于将所述时间段作为元素取值向所述第二数组中的元素进行赋值;根据所述第二数组中被赋值的时间段总长度占所述过程视频总长度的比值,确定所述云游戏运行过程的卡顿情况。

  综上所述,本实施例提供的卡顿检测装置,通过对过程视频中两帧图像帧之间的差异图像转换为灰度图,通过灰度图对两帧图像帧之间的卡顿情况进行确定,无需获取终端应用程序运行过程中的FPS值,即可确定卡顿情况,也即,针对云游戏等云应用程序也能够准确确定卡顿情况,提高了卡顿检测的准确率以及检测过程的适应力。

  需要说明的是:上述实施例提供的卡顿检测装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的卡顿检测装置与卡顿检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

  图12示出了本申请一个示例性实施例提供的服务器的结构示意图。该具体来讲:

  服务器1200包括中央处理单元(Central Processing Unit,CPU)1201、包括随机存取存储器(Random Access Memory,RAM)1202和只读存储器(Read Only Memory,ROM)1203的系统存储器1204,以及连接系统存储器1204和中央处理单元1201的系统总线1205。服务器1200还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(InputOutput System,I/O系统)1206,和用于存储操作系统1213、应用程序1214和其他程序模块1215的大容量存储设备1207。

  基本输入/输出系统1206包括有用于显示信息的显示器1208和用于用户输入信息的诸如鼠标、键盘之类的输入设备1209。其中显示器1208和输入设备1209都通过连接到系统总线1205的输入输出控制器1210连接到中央处理单元1201。基本输入/输出系统1206还可以包括输入输出控制器1210以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1210还提供输出到显示屏、打印机或其他类型的输出设备。

  大容量存储设备1207通过连接到系统总线1205的大容量存储控制器(未示出)连接到中央处理单元1201。大容量存储设备1207及其相关联的计算机可读介质为服务器1200提供非易失性存储。也就是说,大容量存储设备1207可以包括诸如硬盘或者紧凑型光盘只读存储器(Compact Disc Read Only Memory,CD-ROM)驱动器之类的计算机可读介质(未示出)。

  不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、带电可擦可编程只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)、闪存或其他固态存储其技术,CD-ROM、数字通用光盘(Digital Versatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1204和大容量存储设备1207可以统称为存储器。

  根据本申请的各种实施例,服务器1200还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1200可以通过连接在系统总线1205上的网络接口单元1211连接到网络1212,或者说,也可以使用网络接口单元1211来连接到其他类型的网络或远程计算机系统(未示出)。

  上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。

  本申请提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述各个方法实施例提供的卡顿检测方法。

  本申请还提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述各个方法实施例提供的卡顿检测方法。

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

  本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

  以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

《卡顿检测方法、装置、设备及可读存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)