游戏流畅度的测试方法、装置和电子设备与流程

未命名 07-12 阅读:235 评论:0


1.本发明涉及计算机技术领域,尤其是涉及一种游戏流畅度的测试方法、装置和电子设备。


背景技术:

2.游戏流畅度是影响玩家游戏体验的一个重要因素,在游戏的开发过程中,测试人员通常需要评估游戏在不同测试环境下的流畅度。在一些技术中,通常通过后台工具直接监控游戏帧率,或者基于视觉和图像相似度获取有效帧率,根据得到的帧率信息评估游戏的流畅度。但是,该方式无法检测到游戏中虚拟角色的瞬移和拉扯,还需要针对不同的客户端单独开发监控工具,不具备跨平台的通用性。而且监控工具会占用终端的性能,可能会加重游戏的卡顿。在另外一些技术中,通过记录客户端和服务端的虚拟角色的历史位置数据分析游戏的流畅度。但是由于不同游戏的数据获取方式不同,该方式也不具备通用性。且上述方式中无法准确的量化游戏流畅度的指标,导致测试结果的准确性较低。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种游戏流畅度的测试方法、装置和电子设备,通过光流场确定待测试视频中的有效视频帧和卡顿视频帧,并根据有效视频帧和卡顿视频帧之间的特征差异,确定流畅度得分,以量化游戏流畅度的指标,提高测试的通用性,以及测试结果的准确性。
4.第一方面,本发明实施例提供了一种游戏流畅度的测试方法,该方法包括:获取待测试视频;其中,待测试视频包括多个视频帧;计算相邻视频帧对应的光流场;其中,光流场用于:表示相邻视频帧之间像素点的相对运动;根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧;其中,卡顿视频帧用于:表示在播放卡顿视频帧时待测试视频发生了卡顿现象,有效视频帧用于:表示在播放有效视频帧时待测试视频未发生卡顿现象;根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;其中,流畅度得分用于:指示待测试视频的流畅度。
5.第二方面,本发明实施例提供了一种游戏流畅度的测试装置,该装置包括:视频获取模块,用于获取待测试视频;其中,待测试视频包括多个视频帧;光流场计算模块,用于计算相邻视频帧对应的光流场;其中,光流场用于:表示相邻视频帧之间像素点的相对运动;视频帧确定模块,用于根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧;其中,卡顿视频帧用于:表示在播放卡顿视频帧时待测试视频发生了卡顿现象,有效视频帧用于:表示在播放有效视频帧时待测试视频未发生卡顿现象;得分确定模块,用于根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;其中,流畅度得分用于:指示待测试视频的流畅度。
6.第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现第一方面
任一项的游戏流畅度的测试方法。
7.第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现第一方面任一项的游戏流畅度的测试方法。
8.本发明实施例带来了以下有益效果:
9.本发明提供了一种游戏流畅度的测试方法、装置和电子设备,获取待测试视频,待测试视频包括多个视频帧;计算相邻视频帧对应的光流场;根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧;根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;该流畅度得分用于指示待测试视频的流畅度。该方式中,通过相邻视频帧对应的光流场确定待测试视频中发生卡顿现象的卡顿视频帧和未发生卡顿现象的有效视频帧,并根据有效视频帧和卡顿视频帧之间的图像特征差异,确定流畅度得分,能够量化游戏流畅度的指标,且提高了测试的通用性,使该测试方式适用于不同平台、不同游戏,同时提高了测试结果的准确性。
10.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
11.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
12.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
13.图1为本发明实施例提供的一种游戏流畅度的测试方法的流程图;
14.图2为本发明实施例提供的一种光流场的示意图;
15.图3为本发明实施例提供的另一种光流场的示意图;
16.图4为本发明实施例提供的另一种光流场的示意图;
17.图5为本发明实施例提供的另一种光流场的示意图;
18.图6为本发明实施例提供的另一种光流场的示意图;
19.图7为本发明实施例提供的一种视频帧序号与位置关系的示意图;
20.图8为本发明实施例提供的另一种视频帧序号与位置关系的示意图;
21.图9为本发明实施例提供的另一种视频帧序号与位置关系的示意图;
22.图10为本发明实施例提供的另一种光流场的示意图;
23.图11为本发明实施例提供的另一种光流场的示意图;
24.图12为本发明实施例提供的一种游戏流畅度的测试方法的流程示意图;
25.图13为本发明实施例提供的一种游戏流畅度的测试装置的结构示意图;
26.图14为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
27.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.游戏流畅度是影响玩家游戏体验的一个重要因素,玩家他通过移动操作,在游戏中控制虚拟角色进行移动时,虚拟角色的移动轨迹应该足够平滑并且和玩家的移动操作保持一致。当游戏流畅度较低时,玩家往往会感受到瞬移、拉扯或停顿这三种类型的卡顿。在多人网络游戏中,为了数据和表现的一致性,玩家在客户端中的位置需要和服务端中的位置保持一致。当客户端的位置与服务端的位置相差较大时,客户端的位置会被修正,玩家会感受到瞬移和拉扯这两种类型的卡顿。当网络信号较差时,上述现象更容易出现。此外,受设备性能或游戏缺陷影响,玩家在移动时可能还会感受到停顿类型的卡顿。
29.下面对上述提到的瞬移、拉扯、停顿三种卡顿类型进行举例说明。以一维运动为例,假设玩家控制虚拟角色在游戏场景中匀速运动,流畅状态下,10帧内虚拟角色在游戏场景中的坐标序列应该是(1,2,3,4,5,6,7,8,9,10)。发生停顿时玩家的坐标序列可能为(1,2,3,4,4,4,4,5,6,7),移动速度在一段时间内突然变为0,视觉上表现为画面突然静止。发生瞬移时玩家的坐标序列可能为(1,2,3,20,21,22,23,24,25,26),坐标在第4帧发生了突变,视觉上表现为画面内容突然剧烈变化。发生拉扯时玩家的坐标序列可能为(1,2,3,4,5,4,5,6,7,8),运动方向在第6帧和第7帧发生了剧烈变化,虽然任意相邻两帧的画面内容都比较相似,但玩家还是能明显感受到不流畅。
30.三种类型卡顿的特征为:停顿的持续时间较长,一般会持续几帧至数十帧。瞬移的特征是某一帧的速度大小会异常升高,变为平时的几倍甚至上百倍。拉扯的特征是两帧内速度的方向会连续剧烈变化两次,即使拉扯的幅度很小,玩家感受也很明显。无论是瞬移、拉扯还是停顿,都会严重影响游戏的流畅度。在游戏的开发过程中,测试人员需要评估游戏在不同测试环境下的流畅度,也需要对比本游戏和竞品游戏的流畅度,这一过程通常由人工进行测试,评估结果较为主观。
31.在一些技术中,通常通过后台工具直接监控游戏帧率,或者基于视觉和图像相似度获取有效帧率,根据得到的帧率信息评估游戏的流畅度。但是,该方式无法检测到游戏中虚拟角色的瞬移和拉扯,还需要针对不同的客户端单独开发监控工具,不具备跨平台的通用性。而且监控工具会占用终端的性能,可能会加重游戏的卡顿。在另外一些技术中,通过记录客户端和服务端的虚拟角色的历史位置数据分析游戏的流畅度。但是由于不同游戏的数据获取方式不同,该方式也不具备通用性。且上述方式中无法准确的量化游戏流畅度的指标,导致测试结果的准确性较低。基于此,本发明实施例提供的一种游戏流畅度的测试方法、装置和电子设备,该技术可以应用于手机、电脑、笔记本等设备。
32.为便于对本实施例进行理解,首先对本发明实施例所公开的一种游戏流畅度的测试方法进行详细介绍,如图1所示,该方法包括如下步骤:
33.步骤s102,获取待测试视频;其中,待测试视频包括多个视频帧;
34.上述待测试视频通常是采集的目标游戏的游戏画面,上述待测试视频为虚拟角色在游戏场景中从第一位置移动至第二位置的视频,当然也可以是虚拟角色在第一位置和第
二位置之间的多次折返移动的视频。具体可以是通过录屏的方式获取待测试视频,也可以是通过截取游戏画面的方式获取待测试视频。
35.实际实现时,为了提高游戏流畅度的测试准确度,通常会预先确定需要测试的目标游戏,然后在该目标游戏提供的游戏场景中选择第一位置和第二位置,该第一位置和第二位置之间没有障碍物影响虚拟角色移动,使玩家能够控制虚拟角色在第一位置和第二位置之间进行直线移动。为了测试不同环境下,游戏的流畅度,还可以获取目标游戏的多个待测试视频。具体可以通过改变测试环境,比如改变丢包率、延迟、设备等方式,改变测试环境,然后在不同的测试环境中,控制虚拟角色在游戏场景的第一位置和第二位置之间进行折返移动,通过录屏或者视频截取的方式获取的不同测试环境下的待测试视频。
36.其中,若第一位置与第二位置之间的距离较短,可以适当增加往返的次数以减少随机性。若有长期测试的需求,可以编写自动化脚本实现待测试视频的自动采集。采集的形式可以为:使用录屏软件或者外部录像设备对测试过程中的游戏画面进行录制。
37.步骤s104,计算相邻视频帧对应的光流场;其中,光流场用于:表示相邻视频帧之间像素点的相对运动;
38.上述光流场是指图像中所有像素点构成的一种二维(2d)瞬时速度场,其中的二维速度矢量是景物中可见点的三维速度矢量在成像表面的投影。在本实施例中,光流场表示相邻视频帧之间像素点的相对运动。
39.具体的,通常可以采用传统稠密光流法(例如farneback method)或基于神经网络的方法(例如flownet)计算相邻两帧视频帧(图像)对应的光流场。示例性的,如图2所示的光流场示意图,其中,多个向量(如图2中的多个线段),多个向量与相邻视频帧中的像素点相对应,即每个向量的起始点代表的是相邻视频帧中第n帧视频帧中对应的像素点,每个向量的终点代表的是相邻视频帧中第n+1帧视频帧中对应的像素点;向量的长度表示相邻视频帧中对应像素点的移动速度,向量的方向表示相邻视频帧中对应像素点的移动方向。
40.光流场中每个向量的长度表示的移动速度的含义为相邻视频帧中像素点在图像中移动的速度,并不表示该处的实际速度,因此虽然所有静止的虚拟物体相对于镜头的真实移动速度都是相同的,但光流场中每个向量长度和方向却是不同的。图2所示的这种大部分区域的速度都非0的光流场称为运动的光流场。
41.步骤s106,根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧;其中,卡顿视频帧用于:表示在播放卡顿视频帧时待测试视频发生了卡顿现象,有效视频帧用于:表示在播放有效视频帧时待测试视频未发生卡顿现象;
42.上述卡顿视频帧包括产生停顿现象的视频帧、产生拉回现象的视频帧,以及产生瞬移现象的视频帧。具体的,可以根据光流场中包括的多个向量的向量大小和向量方向,确定多个视频帧中的卡顿视频帧和有效视频帧。比如,相邻视频帧的光流场中包括的多个向量中,每个向量的向量长度为0,则可以确定相邻的这两个视频帧中的帧号较大的视频帧为第一视频帧。若连续的多个视频帧均为第一视频帧,则可以确定这些连续的第一视频帧为卡顿视频帧;否则,确定这些第一视频帧为无效视频帧。再如,连续的多个光流场之间,向量的差异较大时,则可以确定多个光流场中,位于中间位置的光流场对应的相邻视频帧中,帧数较大的视频帧为卡顿视频帧。再如,某个指定光流场中向量的长度和方向与其他所有光流场中的向量的长度和方向之间的差异较大时,则可以将该指定光流场对应的相邻视频帧
中帧数较大的视频帧确定为卡顿视频帧。
43.最后,可以将多个视频帧中除卡顿视频帧和无效视频帧以外的视频帧确定为有效视频帧。无效视频帧产生的原因是录屏的帧率与游戏画面刷新的帧率不完全同步,因此存在相邻两个视频帧的完全一致的情况。
44.步骤s108,根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;其中,流畅度得分用于:指示待测试视频的流畅度。
45.可以根据图像处理的方式,确定有效视频帧与卡顿视频帧之间的特征差异,具体可以计算所有有效视频帧的图像特征,以及卡顿视频帧的图像特征,通过比较两个图像特征之间的差异,确定待测试视频的流畅度得分。具体的,上述特征差异与流畅度得分成正相关,即特征差异越大,则流畅度得分越大,则说明待测试视频越不流畅;特征差异越小,则流畅度得分越小,则说明待测试视频越流畅。如果流畅度得分为0,则说明待测试视频中没有卡顿视频帧。
46.本发明提供了一种游戏流畅度的测试方法,获取待测试视频,待测试视频包括多个视频帧;计算相邻视频帧对应的光流场;根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧;根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;该流畅度得分用于指示待测试视频的流畅度。该方式中,通过相邻视频帧对应的光流场确定待测试视频中发生卡顿现象的卡顿视频帧和未发生卡顿现象的有效视频帧,并根据有效视频帧和卡顿视频帧之间的图像特征差异,确定流畅度得分,能够量化游戏流畅度的指标,且提高了测试的通用性,使该测试方式适用于不同平台、不同游戏,同时提高了测试结果的准确性。
47.上述步骤s106,根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧的步骤,一种可能的实施方式:
48.步骤1,根据光流场,确定多个视频帧中的无效视频帧和卡顿视频帧;
49.步骤2,将多个视频帧中除无效视频帧和卡顿视频帧以外的视频帧确定为有效视频帧。
50.由于录屏的帧率与游戏画面刷新的帧率不完全同步,因此存在相邻两个视频帧的完全一致的情况,即无效视频帧的情况。当相邻两个视频帧完全一致时,计算得到的光流场中各向量的大小都接近(或等于)于0,这样的光流场称为是无效的光流场。假设第n个光流场是无效的,则第n+1帧视频帧可能为是无效视频帧。
51.如果通过上述方式确定了多个帧数连续的可能的无效视频帧,则认为这几个可能的无效视频帧不是无效视频帧,而是视频发生了卡顿,通常会将这几个可能的无效视频帧确定为卡顿视频帧。只有当可能的无效视频帧的相邻视频帧为有效视频帧的时候,才会将该可能的无效视频帧确定为无效视频帧。
52.另外,还会根据光流场之间的差异确定目标光流场,然后就目标光流场对应的相邻视频帧中帧数较大的视频帧确定为卡顿视频帧。最后,需要将多个视频帧中除无效视频帧和卡顿视频帧以外的视频帧确定为有效视频帧。
53.该方式中,由于录屏的帧率与实际的游戏画面之间存储不同步的情况,因此会出现无效视频帧,通过光流场确定无效视频帧、卡顿视频帧和有效视频帧,进一步提高了测试结果准确度。
54.上述卡顿视频帧包括第一卡顿视频帧,第一卡顿视频帧用于指示待测试视频发生了停顿;
55.上述步骤1,根据光流场,确定多个视频帧中的无效视频帧和卡顿视频帧的步骤,一种可能的实施方式:
56.(1)根据光流场包括的多个向量的向量长度,确定多个视频帧中的第一视频帧;
57.具体的,计算光流场包括的多个向量的向量长度,如果向量长度都为0,或者一定比例的向量的向量长度为0,则可以将该光流场对应的两个相邻视频帧中帧数较大的视频帧确定为第一视频帧,该第一视频帧可能为无效视频帧也可能为卡顿视频帧。
58.上述根据光流场包括的多个向量的向量长度,确定多个视频帧中的第一视频帧的步骤,一种可能的实施方式:
59.从光流场中确定多个向量的向量长度为零的目标区域;计算目标区域的区域面积与光流场所在区域的面积比值,如果比值小于预设比值,将光流场对应的相邻视频帧中的第二帧数的视频帧确定为第一视频帧;其中,相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,第二帧数大于第一帧数。
60.上述预设比值可以根据实际需要进行设置,比如,0.001%,0.002%等。示例性的,如图3所示,该光流场中的向量长度都接近于0,这样的光流场称为是无效的光流场。假设第n个光流场是无效的,则第n个光流场对应的两个相邻视频帧为第n帧视频帧和第n+1帧视频帧,其中,确定第n+1帧视频帧为第一视频帧。
61.一种可能的方式中,举例说明,如图4所示,虽然该光流场中的虚拟角色在原地站立不动,但是画面中有鸟飞过,因此光流场部分区域的速度是非0的。该光流场是有效的光流场,则可以确定该光流场对应的相邻视频帧为有效视频帧。
62.(2)判断第一视频帧是否为帧数连续的指定数量的视频帧;如果否,将第一视频帧确定为无效视频帧;如果是,将第一视频帧确定为第一卡顿视频帧。
63.上述指定数量可以根据需要预先进行设置,具体可以根据待测试视频帧的帧率和卡顿检测时间确定,比如,卡顿检测时间设置为0.1s,待测试视频帧的帧率为60fps,则指定数量可以为60*0.1=6。
64.如果确定了多个第一视频帧(多个第一视频帧的数量大于6),且多个视频帧的帧数连续,则将第一视频帧确定为第一卡顿视频帧。该第一卡顿视频帧用于表示在播放第一卡顿视频帧的时候,待测试视频会处出现停顿的现象。
65.如果确定了多个第一视频帧(多个第一视频帧的数量大于6),但是多个视频帧之间的帧数相互都不连续,则将第一视频帧确定为无效视频帧。或者,如果确定了一个第一视频帧,则可以直接将该第一视频帧确定为无效视频帧。
66.该方式中,通过光流场中向量长度为零的区域的大小,确定第一视频帧,如果第一视频帧的帧数连续则确定为第一卡顿视频帧,如果不连续则确定为无效视频帧,进一步提高了测试结果的准确度。
67.上述卡顿视频帧包括第二卡顿视频帧,第二卡顿视频帧用于指示待测试视频发生了拉回;即在播放第二卡顿视频帧的时候,待测试视频会产生拉回现象。
68.上述步骤1,根据光流场,确定多个视频帧中的卡顿视频帧的步骤,另一种可能的实施方式:
69.(1)计算光流场中的相邻光流场之间的速度变化矩阵;其中,速度变化矩阵包括速度大小变化矩阵和速度方向变化矩阵;
70.相邻光流场包括三个相邻的第一光流场、第二光流场和第三光流场;上述光流场为三维数组,其中第一光流场可以表示为flow1、第二光流场可以表示为flow2和第三光流场可以表示为flow3。flow1,flow2和flow3均为h*w*2的三维数组,代表光流场在高度方向上有h个向量,在宽度方向上有w个向量,每个向量由两个元素组成,这两个元素为向量在x方向上的分量,以及该向量在y方向上的分量。其实向量的长度和方向就是速度的长度和方向。
71.计算光流场中的相邻光流场之间的速度大小变化矩阵的步骤,一种可能的实施方式:计算第一光流场包括的多个第一向量与第二光流场包括的多个第二向量之间的向量差值,得到第三向量;将第三向量的模,确定为速度大小变化矩阵中对应位置的元素,得到第一光流场和第二光流场之间的速度大小变化矩阵。
72.具体的,光流场的速度变化矩阵flow_diff=flow1

flow2,该速度变化矩阵中包括多个第三向量,即第一向量与第二向量之间的向量差值。将速度变化矩阵中包括的多个第三向量的模,确定为速度大小变化矩阵,记为flow_diff_norm。flow_diff_norm为h*w的矩阵,每个元素代表flow_diff中对应位置向量的模。
73.同样的,第二光流场与第三光流场之间的速度大小变化矩阵,也可以通过上述方式得到。
74.计算光流场中的相邻光流场之间的速度方向变化矩阵的步骤,一种可能的实施方式:计算第一光流场包括的多个第一向量与第二光流场包括的多个第二向量之间的向量夹角,将向量夹角,确定为速度方向变化矩阵中对应位置的元素,得到第一光流场和第二光流场之间的速度方向变化矩阵。
75.具体的,分别取flow1和flow2第一排第一列的速度向量v1、v2,根据向量夹角计算公式可以算出v1、v2两个向量之间的夹角。这个角度就是光流场在第一排第一列这个位置上速度方向的变化量,即上述向量夹角。依次对每个位置上的夹角进行计算,则可获得flow_diff_angle(即上述速度方向变化矩阵),能够表示光流场各个位置上速度方向的变化量。flow_diff_angle为h*w的矩阵,每个元素代表flow1和flow2对应位置速度在方向上的变化量。
76.同样的,第二光流场与第三光流场之间的速度方向变化矩阵,也可以通过上述方式得到。
77.(2)根据速度大小变化矩阵和速度方向变化矩阵,确定相邻光流场的拉回得分;其中,相邻光流场包括三个相邻的第一光流场、第二光流场和第三光流场;
78.具体的,可以计算第一光流场与第二光流场之间的速度大小变化矩阵和速度方向变化矩阵中每个元素的平均值,得到第一光流场和第二光流场的拉回得分,以及第二光流场和第三光流场之间的速度大小变化矩阵和速度方向变化矩阵中每个元素的平均值,得到第二光流场和第三光流场的拉回得分。
79.一种可能的实施方式:通过下述方式计算第一光流场和第二光流场的拉回得分:pull_score=mean(flow_diff_angle*flow_diff_norm);其中,flow_diff_angle为速度方向变化矩阵;flow_diff_norm为速度大小变化矩阵;pull_score为拉回得分;mean表示计算
均值;*表示点乘。
80.实际上,不直接对flow_diff_norm取平均值作为pull_score的原因是,比起移动速度大小的变化,玩家对移动方向的变化更加敏感。pull_score的计算方式不限于上述公式,只要能够综合考虑到光流场在速度的方向和大小上的变化,并且计算结果能够与玩家主观感受大致匹配即可。
81.(3)如果第一光流场和第二光流场的拉回得分大于预设阈值,且第二光流场和第三光流场的拉回得分大于第一预设阈值,将第二光流场对应的相邻视频帧中的第二帧数的视频帧确定为第二卡顿视频帧;其中,相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,第二帧数大于第一帧数。
82.上述预设阈值可以根据实际需要进行设置。假设flow1、flow2、flow3为三个相邻的光流场,若flow1和flow2的pull_score大于预设阈值并且flow2和flow3的pull_score也大于预设阈值,则认为待测试视频在flow2对应的时刻发了拉回。假设flow2对应的两帧相邻视频帧的帧数为n和n+1,则确定第n+1帧视频帧检测到了拉回卡顿,可以将第n+1帧视频帧确定为第二卡顿视频帧。
83.示例性的,如图5所示的三个光流场,虚拟角色向前直线运动时的三个相邻的有效光流场。如图6所示的三个光流场中,中间的光流场与相邻两个光流场具有显著的差异,相应的pull_score也会显著大于预设阈值,因此可判断中间的光流场对应的时刻发生了拉回,将中间光流场对应的相邻视频帧中的第二帧数的视频帧确定为第二卡顿视频帧。
84.该方式中,通过计算相邻光流场之间的向量差异,确定发生拉回的光流场和第二卡顿视频帧,进一步提高了测试结果的准确度。
85.上述方法还包括:如果第二卡顿视频帧为帧数连续的两个视频帧,将帧数连续的两个视频帧中的第二帧数的视频帧删除;其中,帧数连续的两个视频帧包括:第一帧数的视频帧和第二帧数的视频帧,第一帧数小于第二帧数。
86.下面以一维运动为例,简述拉回识别的原理。假设10帧内做匀速直线运动,这十帧视频视中虚拟角色的对应的坐标序列为[1,2,3,4,5,6,7,8,9,10],那么位置随时间的变化趋势如图7所示,即横坐标为时间或帧数,纵坐标为虚拟角色的位置坐标序列。如果虚拟角色在移动过程中发生了拉回,比如在第5帧,虚拟角色突然被拉回到上一帧的位置,那么虚拟角色的坐标序列变为[1,2,3,4,3,4,5,6,7,8],可表示为如图8所示。很明显,速度在第4帧和第5帧发生了突变,根据前文所述的检测算法,连续两帧检测到速度场有突变就认为是一次拉回,因此能检测到第五帧发生了拉回。
[0087]
如果有连续的两次拉回,比如坐标序列为[1,2,3,4,3,4,3,4,5,6],可表示为如图9所示。很显然,在第5帧和第7帧发了两次拉回。从速度变化的角度考虑,第4,5,6,7帧度速都发生了突变。由于连续两次速度突变就可认定为一次拉回,因此第4、5帧的速度突变可认定第5帧发生拉回;因此第5、6帧的速度突变可认定第6帧发生拉回;因此第6、7帧的速度突变可认定第7帧发生拉回。至此,前文所述的检测算法检测到了三次拉回,而实际只有两次拉回,因此需要过滤算法将第6帧检测到的拉回给过滤掉。即将帧数连续的两个第二卡顿视频帧中的帧数较小的视频帧删除。这个例子中第5帧视频帧、第6帧视频帧、第7帧视频帧均检测到拉回,从小到大开始看,第5帧和第6帧是相邻的两帧,因此保留第5帧删除第6帧,那么现在就只剩下第5帧和第7帧了,第5帧和第7帧不相邻因此不用删除第7帧视频帧。也就是
说,当拉回连续发生时,就会在两个连续拉回之间误检测出一次拉回,因此需要通过间隔采样进行过滤。
[0088]
该方式中,如果确定了连续的两次拉回现象,即确定了连续的两个第二卡顿视频帧,则删除帧数较大的视频帧,删除后的结果更符合玩家主观感受,进一步提高了测试结果的准确度。
[0089]
上述卡顿视频帧包括第三卡顿视频帧,第三卡顿视频帧用于指示待测试视频发生了瞬移;待测试视频包括多个光流场;
[0090]
上述步骤1,根据光流场,确定多个视频帧中的卡顿视频帧的步骤,包一种可能的实施方式:
[0091]
(1)计算多个光流场中每个光流场包括的多个向量中,每个向量的向量模,得到光流场的模;
[0092]
具体的,计算每个向量的向量模,然后计算各个向量的向量模的均值,得到上述光流场的模,即得到多个光流场的模。
[0093]
(2)计算多个光流场的模的均值和方差,根据均值和方差,从多个光流场中确定目标光流场;
[0094]
一种可能的实施方式:计算光流场的模减去均值的差值,得到光流场的目标差;如果该光流场的目标差大于第二预设阈值,将该光流场确定目标光流场;其中,第二预设阈值为第一倍数的方差。
[0095]
具体的,若某个光流场的模与均值的差大于x(第一倍数)倍方差,则认为该光流场对应的时刻,虚拟角色的移动速度大小异常,判定该时刻出现了瞬移类型的卡顿。具体的,调节x的大小,可调节算法的检测灵敏度。即调整第一倍数的大小,可以调整算法的检测灵敏度。通常第一倍数越小,确定的目标光流场越多,通常第一倍数越大,确定的目标光流场越少。
[0096]
(3)将目标光流场对应的相邻视频帧中的第二帧数的视频帧确定为第三卡顿视频帧;其中,相邻视频帧包括:第一帧数的视频帧和第二帧数的视频帧,第一帧数小于第二帧数。
[0097]
该方式中,通过比较各个光流场之间,各个向量的大小,可以确定发生瞬移的第三卡顿视频帧,进一步提高了测试结果的准确度。
[0098]
进一步的,在根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧的步骤之前,上述方法还包括:
[0099]
根据光流场包括的多个向量的向量方向,确定多个视频帧中的转向视频帧;将多个视频帧中的转向视频帧删除。
[0100]
虚拟角色在游戏场景中进行转向时,画面会剧烈变化,对应的光流场也会剧烈变化,可能会造成瞬移检测和拉回检测的误报。此外,人工采集待测试视频时,在每条视频中转向所花的时间很难保持一致,因此需要将待测试视频中转向的视频帧删除。在转向期间不对卡顿进行检测,或者把转向期间检测到的卡顿给过滤掉。
[0101]
3d游戏中,角色原地向右转向时,原来处于画面右下方的物品会移动到画面中央,原来处于画面中央的物体会移动到画面左下方。向左转时,画面的变化规律正好相反。示例性的,如图10所示的光流场示意图,直观的体现了上述现象,图像各个位置都在大致地绕镜
头进行旋转。其中图10中左图为向左转向,右图为向右转向
[0102]
具体的,计算光流场中属于第一指定象限的向量的第一平均向量,计算光流场中属于第二指定象限的向量的第二平均向量;如果第一平均向量的向量方向指向光流场的第一指定方向,且第二平均向量的向量方向指向光流场的第二指定方向,将光流场确定为指定光流场;如果指定光流场为多个连续的光流场,将指定光流场对应的相邻视频帧确定为转向视频帧;其中,第一指定方向和第二指定方向相对应。
[0103]
上述第一指定象限为第三象限,上述第二指定象限为第四象限,上述第一指定方向和第二指定方向为:右上角和右下角,或者为左上角和左下角。示例性的,如图11所示,将光流场的画面分成四个象限,计算第三象限,第四象限区域内的平均速度,即向量的平均长度和平均方向。若第三象限的平均速度的方向指向画面右上方,并且第四象限的平均速度方向指向右下方,则说明画面中的物体在绕镜头向右旋转,即角色在向左转向。则将光流场对应的相邻视频帧确定为转向视频帧。
[0104]
同理若第三象限的平均速度方向指向画面左下方并且第四象限的平均速度方向指向左上方,可以判断角色是否在向右转向。则将光流场对应的相邻视频帧确定为转向视频帧。平滑和降噪处理:若连续若干个有效光流场中,有大部分光流场都被判定为转向,则认为这一整个时间段都为转向段落。在转向检测结束后,即可自动统计出虚拟角色进行直线运动的时间。
[0105]
该方式中,为了避免转向视频帧对测试结果的影响,通过光流场中的向量方向确定转向视频帧,并删除转向视频帧,进一步提高了测试结果的准确度。
[0106]
上述卡顿视频帧包括:第一卡顿视频帧,第二卡顿视频帧,和第三卡顿视频帧;
[0107]
上述步骤s108,根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分的步骤,一种可能的实施方式:
[0108]
(1)计算有效视频帧中相邻视频帧之间的第一特征差异值,计算第一特征差异值的均值和方差;
[0109]
通过预先训练完成的图像提取模型,提取相邻视频帧的图像特征向量,计算相邻视频帧的图像特征向量之间的余弦相似度;计算一减去余弦相似度的差值,得到相邻视频帧之间的第一特征差异值。
[0110]
(2)按照视频帧的帧数排列第一卡顿视频帧中,计算排列后的第一卡顿视频帧中首个视频帧与最后视频帧之间的第二特征差异值;
[0111]
假设第一卡顿视频帧从第n1帧(即上述首个视频帧)开始,画面内容直到第n2帧(即上述最后视频帧)才发生变化。计算第n1帧视频帧和第n2帧视频帧之间的图像差异度diff1(即上述第二特征差异值)。
[0112]
(3)获取与第二卡顿视频帧相邻的两个第一目标视频帧,计算第二卡顿视频帧与第一目标视频帧之间的第一差异值,将数值较大的第一差异值确定为第三特征差异值;
[0113]
假设第二卡顿视频帧的帧数为n2,即在第n2帧检测到了拉回,寻找第n2帧相邻的两个第一目标视频帧(也就是有效视频帧)第n1帧视频帧和第n3帧视频帧(n1《n2《n3)。计算第n1帧视频帧(即第一目标视频帧中帧数较小的视频帧)和第n2帧视频帧(即第二卡顿视频帧)两帧图像的差异度(即上述第一差异值);以及第n2帧视频帧(即上述第二卡顿视频帧)和第n3帧视频帧(即第一目标视频帧中帧数较大的视频帧)两帧图像的差异度(即上述第一
差异值)。将上述两个第一差异值中,差异较大,也就是数值较大的第一差异值确定为第三特征差异值。
[0114]
(4)获取与第三卡顿视频帧相邻的两个第二目标视频帧,计算第三卡顿视频帧与第二目标视频帧之间的第二差异值,将数值较大的第二差异值确定为第四特征差异值;其中,第一目标视频帧和第二目标视频帧为有效视频帧;
[0115]
假设第三卡顿视频帧的帧数为n2,即在第n2帧检测到了瞬移,寻找第n2帧相邻的两个第二目标视频帧(也就是有效视频帧)第n1帧视频帧和第n3帧视频帧(n1《n2《n3)。计算第n1帧视频帧(即第二目标视频帧中帧数较小的视频帧)和第n2帧视频帧(即第三卡顿视频帧)两帧图像的差异度(即上述第二差异值);以及第n2帧视频帧(即上述第二卡顿视频帧)和第n3帧视频帧(即第二目标视频帧中帧数较大的视频帧)两帧图像的差异度(即上述第二差异值)。将上述两个第二差异值中,差异较大,也就是数值较大的第二差异值确定为第四特征差异值。
[0116]
(5)根据第一特征差异值的均值和方差,以及第二特征差异值,第三特征差异值,第四特征差异值,计算待测试视频的流畅度得分。
[0117]
具体的:步骤a,根据第一特征差异值的均值和方差,以及第二特征差异值,计算待测试视频的第一流畅度得分;
[0118]
通过下述公式计算第一流畅度得分:
[0119]
pause_rating=max(0,diff1

diff_mean)/diff_std*p1
[0120]
+(n1-n2)/z*p2;
[0121]
其中,pause_rating为第一流畅度得分;diff1为第二特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;n1为第一卡顿视频帧中首个视频帧的帧数,n2为第一卡顿视频帧中最后视频帧的帧数;z为待测试视频的视频帧率;p1,p2为固定系数。
[0122]
步骤b,根据第一特征差异值的均值和方差,以及第三特征差异值,计算待测试视频的第二流畅度得分;
[0123]
通过下述公式计算第二流畅度得分:
[0124]
pull_rating=max(0,diff2-diff_mean)/diff_std*p3;
[0125]
其中,pull_rating为第二流畅度得分;diff2为第三特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;p3为固定系数。
[0126]
步骤c,根据第一特征差异值的均值和方差,以及第四特征差异值,计算待测试视频的第三流畅度得分;
[0127]
通过下述公式计算第三流畅度得分:
[0128]
blink_rating=max(0,diff3-diff_mean)/diff_std*p4;
[0129]
其中,blink_rating为第三流畅度得分;diff3为第四特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;p4为固定系数。
[0130]
计算待测试视频的流畅度得分:对于单次卡顿得分,即对于第一流畅度得分、第二流畅度得分、和第三流畅度得分进行截断处理,得分低于2分的记为2分,得分高于5分的记为5分。
[0131]
步骤d,计算第一流畅度得分、第二流畅度得分,以及第三流畅度得分的和值,将和
值除以指定时长,得到待测试视频的流畅度得分;其中,指定时长为待测试视频中目标对象在游戏场景进行直线运动花费的时间,指定时长通过待测试视频的总是时长减去转向视频帧对应的转向时长得到的;流畅度得分越高指示待测试视频的流畅度越低。
[0132]
其中,上述固定系数的确定方式:将单次卡顿的严重程度分为四档:刚好能感受到、比较严重、非常严重、不能更严重。每档的流畅度得分分别为2分、3分、4分、5分,分数的分布也可根据需要灵活调整。收集一定数量的测试视频并运行检测算法,人工对检测到的每次卡顿标注严重程度。根据人工标注的数据,通过手动微调或者回归的方式确定p1、p2、p3、p4的系数,使其能将4个档次的卡顿映射到对应分数。
[0133]
待测试视频的流畅度得分=(第一流畅度得分+第二流畅度得分+第三流畅度得分)/指定时长。
[0134]
上述方法还包括:在所述卡顿视频帧对应的视频画面中设置第一提示信息,所述第一提示信息用于指示当前帧发生了卡顿;在所述待测试视频的时间轴上设置第二提示信息,所述第二提示信息用于指示卡顿的时间点。
[0135]
实际上,对待测试视频的流畅度进行测试完成后,会输出测试报告和视频报告。其中,检测报告:也就是文字报告包括视频的流畅度得分、单次卡顿发生的时间及得分、视频总时长、直线运动持续的时长(指定时长)等。视频报告:在原视频的基础上叠加图像和文字信息,展示每次卡顿的严重程度及在时间轴上的位置,方便人工核验检测到的卡顿。
[0136]
经过上述的测试方式,下面描述本发明实际的检测效果:
[0137]
在0%,20%,...,70%丢包率的测试环境下,分别收集目标游戏的待测试视频(60fps)并运行检测算法,即执行上述步骤,检测结果如下表所示。在丢包率低于40%时,未检测到任何卡顿,视频的流畅度得分均为0。当丢包率大于等于40%时,卡顿现象越来越严重,视频的流畅度得分也越来越高。经过人工复核,在以上视频中本发明的卡顿检测准确率接近100%,并且检测出了很多细微的、容易被测试人员忽视的卡顿。人工主观感觉上更卡的视频,在本工具中的卡顿得分也更高。
[0138]
以上结果说明,本发明能够准确检测出卡顿,并能够给出符合人类主观感受的卡顿得分。与现有技术相比,本发明能够检测的卡顿类型更广泛,并且能够准确的量化视频的卡顿程度。本发明可用于研究不同测试环境下游戏的流畅度表现,也可用于对比不同游戏的流畅度。本发明的极大地节省了卡顿检测的人力成本,提高了流畅度评估的准确性。
[0139][0140]
参见图12所示,本发明实施例提供一种具体的游戏流畅度的测试方法,首先,获取待测视频(即上述待测试视频);初始化序号n=1,上个光流场prev_flow=none,上次计算的拉回得分last_pull_score=0。获取第n帧视频帧,和第n+1帧视频帧,计算这两个视频帧的光流场,即第n个光流场;判断n是否小于视频总帧数,如果是,则判断第n个光流场是否有效,即判断第n个光流场是否是有效光流场,如果是,则记录光流场的序号,计算光流场的模,如果否,执行n=n+1,返回获取第n帧视频帧和第n+1帧视频帧的步骤;判断上一个光流
场prev_flow是否为none,如果是,则计算第n个光流场的转向得分并记录,如果否,将prev_flow确定为第n个光流场,然后执行n=n+1的步骤。判断第n个光流场是否是运动的,如果是,则计算第n+1帧视频帧和第n帧视频帧的相似度并记录,然后执行计算第n个光流场和上一个光流场prev_flow的拉回得分的步骤。如果否,计算第n个光流场和上一个光流场prev_flow的拉回得分pull_sore。判断拉回得分last_pull_sore大于阈值且,拉回得分pull_sore大于阈值或第n个光流场为静止的,如果是,记录检测到拉回的光流场序号n,执行last_pull_sore=pull_sore的步骤。如果否直接执行last_pull_sore=pull_sore的步骤。
[0141]
如果n大于或等于视频总帧数,根据记录的有效光流场序号和转向得分生成过滤器。对记录的检测到拉回的光流场序号进行过滤,根据记录的有效光流场序号,寻找发生卡顿的视频帧;计算所有光流场的模的均值和方差,将模超过均值数倍方差的光流场判定为发生瞬移的光流场,对检测到的停顿、拉回、瞬移进行记录,待所有视频检测完成后进行卡顿打分,即上述确定流畅度得分。
[0142]
对应上述的方法实施例,本发明实施例提供了一种游戏流畅度的测试装置,如图13所示,该装置包括:
[0143]
视频获取模块131,用于获取待测试视频;其中,待测试视频包括多个视频帧;
[0144]
光流场计算模块132,用于计算相邻视频帧对应的光流场;其中,光流场用于:表示相邻视频帧之间像素点的相对运动;
[0145]
视频帧确定模块133,用于根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧;其中,卡顿视频帧用于:表示在播放卡顿视频帧时待测试视频发生了卡顿现象,有效视频帧用于:表示在播放有效视频帧时待测试视频未发生卡顿现象;
[0146]
得分确定模块134,用于根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;其中,流畅度得分用于:指示待测试视频的流畅度。
[0147]
本发明实施例提供了一种游戏流畅度的测试装置,获取待测试视频,待测试视频包括多个视频帧;计算相邻视频帧对应的光流场;根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧;根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;该流畅度得分用于指示待测试视频的流畅度。该方式中,通过相邻视频帧对应的光流场确定待测试视频中发生卡顿现象的卡顿视频帧和未发生卡顿现象的有效视频帧,并根据有效视频帧和卡顿视频帧之间的图像特征差异,确定流畅度得分,能够量化游戏流畅度的指标,且提高了测试的通用性,使该测试方式适用于不同平台、不同游戏,同时提高了测试结果的准确性。
[0148]
上述光流场包括多个向量,多个向量与相邻视频帧中的像素点相对应;向量的长度表示相邻视频帧中对应像素点的移动速度,向量的方向表示相邻视频帧中对应像素点的移动方向。
[0149]
上述视频帧确定模块还用于:根据光流场,确定多个视频帧中的无效视频帧和卡顿视频帧;将多个视频帧中除无效视频帧和卡顿视频帧以外的视频帧确定为有效视频帧。
[0150]
上述卡顿视频帧包括第一卡顿视频帧,第一卡顿视频帧用于指示待测试视频发生了停顿;上述视频帧确定模块还用于:根据光流场包括的多个向量的向量长度,确定多个视频帧中的第一视频帧;判断第一视频帧是否为帧数连续的指定数量的视频帧;如果否,将第
一视频帧确定为无效视频帧;如果是,将第一视频帧确定为第一卡顿视频帧。
[0151]
上述视频帧确定模块还用于:从光流场中确定多个向量的向量长度为零的目标区域;计算目标区域的区域面积与光流场所在区域的面积比值,如果比值小于预设比值,将光流场对应的相邻视频帧中的第二帧数的视频帧确定为第一视频帧;其中,相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,第二帧数大于第一帧数。
[0152]
上述卡顿视频帧包括第二卡顿视频帧,第二卡顿视频帧用于指示待测试视频发生了拉回;上述视频帧确定模块还用于:计算光流场中的相邻光流场之间的速度变化矩阵;其中,速度变化矩阵包括速度大小变化矩阵和速度方向变化矩阵;根据速度大小变化矩阵和速度方向变化矩阵,确定相邻光流场的拉回得分;其中,相邻光流场包括三个相邻的第一光流场、第二光流场和第三光流场;如果第一光流场和第二光流场的拉回得分大于预设阈值,且第二光流场和第三光流场的拉回得分大于第一预设阈值,将第二光流场对应的相邻视频帧中的第二帧数的视频帧确定为第二卡顿视频帧;其中,相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,第二帧数大于第一帧数。
[0153]
上述视频帧确定模块还用于:计算第一光流场包括的多个第一向量与第二光流场包括的多个第二向量之间的向量差值,得到第三向量;将第三向量的模,确定为速度大小变化矩阵中对应位置的元素,得到第一光流场和第二光流场之间的速度大小变化矩阵。
[0154]
上述视频帧确定模块还用于:计算第一光流场包括的多个第一向量与第二光流场包括的多个第二向量之间的向量夹角,将向量夹角,确定为速度方向变化矩阵中对应位置的元素,得到第一光流场和第二光流场之间的速度方向变化矩阵。
[0155]
上述视频帧确定模块还用于:通过下述方式计算第一光流场和第二光流场的拉回得分:pull_score=mean(flow_diff_angle*flow_diff_norm);其中,flow_diff_angle为速度方向变化矩阵;flow_diff_norm为速度大小变化矩阵;pull_score为拉回得分;mean表示计算均值;*表示点乘。
[0156]
上述装置还包括第一删除模块,用于:如果第二卡顿视频帧为帧数连续的两个视频帧,将帧数连续的两个视频帧中的第二帧数的视频帧删除;其中,帧数连续的两个视频帧包括:第一帧数的视频帧和第二帧数的视频帧,第一帧数小于第二帧数。
[0157]
上述卡顿视频帧包括第三卡顿视频帧,第三卡顿视频帧用于指示待测试视频发生了瞬移;待测试视频包括多个光流场;上述视频帧确定模块还用于:计算多个光流场中每个光流场包括的多个向量中,每个向量的向量模,得到光流场的模;计算多个光流场的模的均值和方差,根据均值和方差,从多个光流场中确定目标光流场;将目标光流场对应的相邻视频帧中的第二帧数的视频帧确定为第三卡顿视频帧;其中,相邻视频帧包括:第一帧数的视频帧和第二帧数的视频帧,第一帧数小于第二帧数。
[0158]
上述视频帧确定模块还用于:计算光流场的模减去均值的差值,得到光流场的目标差;如果光流场的目标差大于第二预设阈值,将光流场确定目标光流场;其中,第二预设阈值为第一倍数的方差。
[0159]
上述装置还包括第二删除模块,用于:根据光流场包括的多个向量的向量方向,确定多个视频帧中的转向视频帧;将多个视频帧中的转向视频帧删除。
[0160]
上述第二删除模块还用于:计算光流场中属于第一指定象限的向量的第一平均向量,计算光流场中属于第二指定象限的向量的第二平均向量;如果第一平均向量的向量方
向指向光流场的第一指定方向,且第二平均向量的向量方向指向光流场的第二指定方向,将光流场确定为指定光流场;如果指定光流场为多个连续的光流场,将指定光流场对应的相邻视频帧确定为转向视频帧;其中,第一指定方向和第二指定方向相对应。
[0161]
上述卡顿视频帧包括:第一卡顿视频帧,第二卡顿视频帧,和第三卡顿视频帧;上述得分确定模块还用于:计算有效视频帧中相邻视频帧之间的第一特征差异值,计算第一特征差异值的均值和方差;按照视频帧的帧数排列第一卡顿视频帧中,计算排列后的第一卡顿视频帧中首个视频帧与最后视频帧之间的第二特征差异值;获取与第二卡顿视频帧相邻的两个第一目标视频帧,计算第二卡顿视频帧与第一目标视频帧之间的第一差异值,将数值较大的第一差异值确定为第三特征差异值;获取与第三卡顿视频帧相邻的两个第二目标视频帧,计算第三卡顿视频帧与第二目标视频帧之间的第二差异值,将数值较大的第二差异值确定为第四特征差异值;其中,第一目标视频帧和第二目标视频帧为有效视频帧;根据第一特征差异值的均值和方差,以及第二特征差异值,第三特征差异值,第四特征差异值,计算待测试视频的流畅度得分。
[0162]
上述得分确定模块还用于:通过预先训练完成的图像提取模型,提取相邻视频帧的图像特征向量,计算相邻视频帧的图像特征向量之间的余弦相似度;计算一减去余弦相似度的差值,得到相邻视频帧之间的第一特征差异值。
[0163]
上述得分确定模块还用于:根据第一特征差异值的均值和方差,以及第二特征差异值,计算待测试视频的第一流畅度得分;根据第一特征差异值的均值和方差,以及第三特征差异值,计算待测试视频的第二流畅度得分;根据第一特征差异值的均值和方差,以及第四特征差异值,计算待测试视频的第三流畅度得分;计算第一流畅度得分、第二流畅度得分,以及第三流畅度得分的和值,将和值除以指定时长,得到待测试视频的流畅度得分;其中,指定时长为待测试视频中目标对象在游戏场景进行直线运动花费的时间,指定时长通过待测试视频的总是时长减去转向视频帧对应的转向时长得到的;流畅度得分越高指示待测试视频的流畅度越低。
[0164]
上述得分确定模块还用于:通过下述公式计算第一流畅度得分:pause_rating=max(0,diff1

diff_mean)/diff_std*p1+(n1-n2)/z*p2;其中,pause_rating为第一流畅度得分;diff1为第二特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;n1为第一卡顿视频帧中首个视频帧的帧数,n2为第一卡顿视频帧中最后视频帧的帧数;z为待测试视频的视频帧率;p1,p2为固定系数。
[0165]
上述得分确定模块还用于:通过下述公式计算第二流畅度得分:pull_rating=max(0,diff2-diff_mean)/diff_std*p3;其中,pull_rating为第二流畅度得分;diff2为第三特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;p3为固定系数。
[0166]
上述得分确定模块还用于:通过下述公式计算第三流畅度得分:blink_rating=max(0,diff3-diff_mean)/diff_std*p4;其中,blink_rating为第三流畅度得分;diff3为第四特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;p4为固定系数。
[0167]
上述装置还包括提示模块,用于:在卡顿视频帧对应的视频画面中设置第一提示信息,第一提示信息用于指示当前帧发生了卡顿;在待测试视频的时间轴上设置第二提示
信息,第二提示信息用于指示卡顿的时间点。
[0168]
本发明实施例提供的游戏流畅度的测试装置,与上述实施例提供的游戏流畅度的测试方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
[0169]
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述游戏流畅度的测试方法。该电子设备可以是服务器,也可以是终端设备。
[0170]
参见图14所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述游戏流畅度的测试方法。
[0171]
进一步地,图14所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。
[0172]
其中,存储器101可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0173]
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤,该步骤包括:
[0174]
获取待测试视频;其中,待测试视频包括多个视频帧;计算相邻视频帧对应的光流场;其中,光流场用于:表示相邻视频帧之间像素点的相对运动;根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧;其中,卡顿视频帧用于:表示在播放卡顿视频帧时待测试视频发生了卡顿现象,有效视频帧用于:表示在播放有效视频帧时待测试视频未发生卡顿现象;根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;其中,流畅度得分用于:指示待测试视频的流畅度。该方式中,通过相邻视频帧对应的光流场确定待测试视频中发生卡顿现象的卡顿视频帧和未发生卡顿现象的有效视频帧,并根据有效视频帧和卡顿视频帧之间的图像特征差异,确定流畅度得分,能够量化游戏流畅度的指标,且提高了测试的通用性,使该测试方式适用于不同平台、不同游戏,同时提高了测试结
果的准确性。
[0175]
上述光流场包括多个向量,多个向量与相邻视频帧中的像素点相对应;向量的长度表示相邻视频帧中对应像素点的移动速度,向量的方向表示相邻视频帧中对应像素点的移动方向。
[0176]
上述根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧的步骤,包括:根据光流场,确定多个视频帧中的无效视频帧和卡顿视频帧;将多个视频帧中除无效视频帧和卡顿视频帧以外的视频帧确定为有效视频帧。该方式中,由于录屏的帧率与实际的游戏画面之间存储不同步的情况,因此会出现无效视频帧,通过光流场确定无效视频帧、卡顿视频帧和有效视频帧,进一步提高了测试结果准确度。
[0177]
上述卡顿视频帧包括第一卡顿视频帧,第一卡顿视频帧用于指示待测试视频发生了停顿;根据光流场,确定多个视频帧中的无效视频帧和卡顿视频帧的步骤,包括:根据光流场包括的多个向量的向量长度,确定多个视频帧中的第一视频帧;判断第一视频帧是否为帧数连续的指定数量的视频帧;如果否,将第一视频帧确定为无效视频帧;如果是,将第一视频帧确定为第一卡顿视频帧。该方式中,通过光流场中向量长度为零的区域的大小,确定第一视频帧,如果第一视频帧的帧数连续则确定为第一卡顿视频帧,如果不连续则确定为无效视频帧,进一步提高了测试结果的准确度。
[0178]
上述根据光流场包括的多个向量的向量长度,确定多个视频帧中的第一视频帧的步骤,包括:从光流场中确定多个向量的向量长度为零的目标区域;计算目标区域的区域面积与光流场所在区域的面积比值,如果比值小于预设比值,将光流场对应的相邻视频帧中的第二帧数的视频帧确定为第一视频帧;其中,相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,第二帧数大于第一帧数。
[0179]
上述卡顿视频帧包括第二卡顿视频帧,第二卡顿视频帧用于指示待测试视频发生了拉回;根据光流场,确定多个视频帧中的卡顿视频帧的步骤,包括:计算光流场中的相邻光流场之间的速度变化矩阵;其中,速度变化矩阵包括速度大小变化矩阵和速度方向变化矩阵;根据速度大小变化矩阵和速度方向变化矩阵,确定相邻光流场的拉回得分;其中,相邻光流场包括三个相邻的第一光流场、第二光流场和第三光流场;如果第一光流场和第二光流场的拉回得分大于预设阈值,且第二光流场和第三光流场的拉回得分大于第一预设阈值,将第二光流场对应的相邻视频帧中的第二帧数的视频帧确定为第二卡顿视频帧;其中,相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,第二帧数大于第一帧数。该方式中,通过计算相邻光流场之间的向量差异,确定发生拉回的光流场和第二卡顿视频帧,进一步提高了测试结果的准确度。
[0180]
上述计算光流场中的相邻光流场之间的速度大小变化矩阵的步骤,包括:计算第一光流场包括的多个第一向量与第二光流场包括的多个第二向量之间的向量差值,得到第三向量;将第三向量的模,确定为速度大小变化矩阵中对应位置的元素,得到第一光流场和第二光流场之间的速度大小变化矩阵。
[0181]
上述计算光流场中的相邻光流场之间的速度方向变化矩阵的步骤,包括:计算第一光流场包括的多个第一向量与第二光流场包括的多个第二向量之间的向量夹角,将向量夹角,确定为速度方向变化矩阵中对应位置的元素,得到第一光流场和第二光流场之间的速度方向变化矩阵。
[0182]
上述根据速度大小变化矩阵和速度方向变化矩阵,确定相邻光流场的拉回得分的步骤,包括:通过下述方式计算第一光流场和第二光流场的拉回得分:pull_score=mean(flow_diff_angle*flow_diff_norm);其中,flow_diff_angle为速度方向变化矩阵;flow_diff_norm为速度大小变化矩阵;pull_score为拉回得分;mean表示计算均值;*表示点乘。
[0183]
上述方法还包括:如果第二卡顿视频帧为帧数连续的两个视频帧,将帧数连续的两个视频帧中的第二帧数的视频帧删除;其中,帧数连续的两个视频帧包括:第一帧数的视频帧和第二帧数的视频帧,第一帧数小于第二帧数。该方式中,如果确定了连续的两次拉回现象,即确定了连续的两个第二卡顿视频帧,则删除帧数较大的视频帧,删除后的结果更符合玩家主观感受,进一步提高了测试结果的准确度。
[0184]
上述卡顿视频帧包括第三卡顿视频帧,第三卡顿视频帧用于指示待测试视频发生了瞬移;待测试视频包括多个光流场;根据光流场,确定多个视频帧中的卡顿视频帧的步骤,包括:计算多个光流场中每个光流场包括的多个向量中,每个向量的向量模,得到光流场的模;计算多个光流场的模的均值和方差,根据均值和方差,从多个光流场中确定目标光流场;将目标光流场对应的相邻视频帧中的第二帧数的视频帧确定为第三卡顿视频帧;其中,相邻视频帧包括:第一帧数的视频帧和第二帧数的视频帧,第一帧数小于第二帧数。该方式中,通过比较各个光流场之间,各个向量的大小,可以确定发生瞬移的第三卡顿视频帧,进一步提高了测试结果的准确度。
[0185]
上述根据均值和方差,从多个光流场中确定目标光流场的步骤,包括:计算光流场的模减去均值的差值,得到光流场的目标差;如果光流场的目标差大于第二预设阈值,将光流场确定目标光流场;其中,第二预设阈值为第一倍数的方差。
[0186]
上述根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧的步骤之前,方法还包括:根据光流场包括的多个向量的向量方向,确定多个视频帧中的转向视频帧;将多个视频帧中的转向视频帧删除。该方式中,为了避免转向视频帧对测试结果的影响,通过光流场中的向量方向确定转向视频帧,并删除转向视频帧,进一步提高了测试结果的准确度。
[0187]
上述根据光流场包括的多个向量的向量方向,确定多个视频帧中的转向视频帧的步骤,包括:计算光流场中属于第一指定象限的向量的第一平均向量,计算光流场中属于第二指定象限的向量的第二平均向量;如果第一平均向量的向量方向指向光流场的第一指定方向,且第二平均向量的向量方向指向光流场的第二指定方向,将光流场确定为指定光流场;如果指定光流场为多个连续的光流场,将指定光流场对应的相邻视频帧确定为转向视频帧;其中,第一指定方向和第二指定方向相对应。
[0188]
上述卡顿视频帧包括:第一卡顿视频帧,第二卡顿视频帧,和第三卡顿视频帧;根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分的步骤,包括:计算有效视频帧中相邻视频帧之间的第一特征差异值,计算第一特征差异值的均值和方差;按照视频帧的帧数排列第一卡顿视频帧中,计算排列后的第一卡顿视频帧中首个视频帧与最后视频帧之间的第二特征差异值;获取与第二卡顿视频帧相邻的两个第一目标视频帧,计算第二卡顿视频帧与第一目标视频帧之间的第一差异值,将数值较大的第一差异值确定为第三特征差异值;获取与第三卡顿视频帧相邻的两个第二目标视频帧,计算第三卡顿视频帧与第二目标视频帧之间的第二差异值,将数值较大的第二差异值确定为第四特征差异值;其中,第一目标视频帧和第二目标视频帧为有效视频帧;根据第一特征差异值的均
值和方差,以及第二特征差异值,第三特征差异值,第四特征差异值,计算待测试视频的流畅度得分。
[0189]
上述计算有效视频帧中相邻视频帧之间的第一特征差异值的步骤,包括:通过预先训练完成的图像提取模型,提取相邻视频帧的图像特征向量,计算相邻视频帧的图像特征向量之间的余弦相似度;计算一减去余弦相似度的差值,得到相邻视频帧之间的第一特征差异值。
[0190]
上述根据第一特征差异值的均值和方差,以及第二特征差异值,第三特征差异值,第四特征差异值,计算待测试视频的流畅度得分的步骤,包括:根据第一特征差异值的均值和方差,以及第二特征差异值,计算待测试视频的第一流畅度得分;根据第一特征差异值的均值和方差,以及第三特征差异值,计算待测试视频的第二流畅度得分;根据第一特征差异值的均值和方差,以及第四特征差异值,计算待测试视频的第三流畅度得分;计算第一流畅度得分、第二流畅度得分,以及第三流畅度得分的和值,将和值除以指定时长,得到待测试视频的流畅度得分;其中,指定时长为待测试视频中目标对象在游戏场景进行直线运动花费的时间,指定时长通过待测试视频的总是时长减去转向视频帧对应的转向时长得到的;流畅度得分越高指示待测试视频的流畅度越低。
[0191]
上述根据第一特征差异值的均值和方差,以及第二特征差异值,计算待测试视频的第一流畅度得分的步骤,包括:通过下述公式计算第一流畅度得分:pause_rating=max(0,diff1

diff_mean)/diff_std*p1+(n1-n2)/z*p2;其中,pause_rating为第一流畅度得分;diff1为第二特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;n1为第一卡顿视频帧中首个视频帧的帧数,n2为第一卡顿视频帧中最后视频帧的帧数;z为待测试视频的视频帧率;p1,p2为固定系数。
[0192]
上述根据第一特征差异值的均值和方差,以及第三特征差异值,计算待测试视频的第二流畅度得分的步骤,包括:通过下述公式计算第二流畅度得分:pull_rating=max(0,diff2-diff_mean)/diff_std*p3;其中,pull_rating为第二流畅度得分;diff2为第三特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;p3为固定系数。
[0193]
上述根据第一特征差异值的均值和方差,以及第四特征差异值,计算待测试视频的第三流畅度得分的步骤,包括:通过下述公式计算第三流畅度得分:blink_rating=max(0,diff3-diff_mean)/diff_std*p4;其中,blink_rating为第三流畅度得分;diff3为第四特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;p4为固定系数。
[0194]
上述方法还包括:在卡顿视频帧对应的视频画面中设置第一提示信息,第一提示信息用于指示当前帧发生了卡顿;在待测试视频的时间轴上设置第二提示信息,第二提示信息用于指示卡顿的时间点。通过设置提示信息方便了测试人员的验核。
[0195]
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述游戏流畅度的测试方法,该方法包括:
[0196]
获取待测试视频;其中,待测试视频包括多个视频帧;计算相邻视频帧对应的光流场;其中,光流场用于:表示相邻视频帧之间像素点的相对运动;根据光流场,确定多个视频
帧中的卡顿视频帧和有效视频帧;其中,卡顿视频帧用于:表示在播放卡顿视频帧时待测试视频发生了卡顿现象,有效视频帧用于:表示在播放有效视频帧时待测试视频未发生卡顿现象;根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;其中,流畅度得分用于:指示待测试视频的流畅度。该方式中,通过相邻视频帧对应的光流场确定待测试视频中发生卡顿现象的卡顿视频帧和未发生卡顿现象的有效视频帧,并根据有效视频帧和卡顿视频帧之间的图像特征差异,确定流畅度得分,能够量化游戏流畅度的指标,且提高了测试的通用性,使该测试方式适用于不同平台、不同游戏,同时提高了测试结果的准确性。
[0197]
上述光流场包括多个向量,多个向量与相邻视频帧中的像素点相对应;向量的长度表示相邻视频帧中对应像素点的移动速度,向量的方向表示相邻视频帧中对应像素点的移动方向。
[0198]
上述根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧的步骤,包括:根据光流场,确定多个视频帧中的无效视频帧和卡顿视频帧;将多个视频帧中除无效视频帧和卡顿视频帧以外的视频帧确定为有效视频帧。该方式中,由于录屏的帧率与实际的游戏画面之间存储不同步的情况,因此会出现无效视频帧,通过光流场确定无效视频帧、卡顿视频帧和有效视频帧,进一步提高了测试结果准确度。
[0199]
上述卡顿视频帧包括第一卡顿视频帧,第一卡顿视频帧用于指示待测试视频发生了停顿;根据光流场,确定多个视频帧中的无效视频帧和卡顿视频帧的步骤,包括:根据光流场包括的多个向量的向量长度,确定多个视频帧中的第一视频帧;判断第一视频帧是否为帧数连续的指定数量的视频帧;如果否,将第一视频帧确定为无效视频帧;如果是,将第一视频帧确定为第一卡顿视频帧。该方式中,通过光流场中向量长度为零的区域的大小,确定第一视频帧,如果第一视频帧的帧数连续则确定为第一卡顿视频帧,如果不连续则确定为无效视频帧,进一步提高了测试结果的准确度。
[0200]
上述根据光流场包括的多个向量的向量长度,确定多个视频帧中的第一视频帧的步骤,包括:从光流场中确定多个向量的向量长度为零的目标区域;计算目标区域的区域面积与光流场所在区域的面积比值,如果比值小于预设比值,将光流场对应的相邻视频帧中的第二帧数的视频帧确定为第一视频帧;其中,相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,第二帧数大于第一帧数。
[0201]
上述卡顿视频帧包括第二卡顿视频帧,第二卡顿视频帧用于指示待测试视频发生了拉回;根据光流场,确定多个视频帧中的卡顿视频帧的步骤,包括:计算光流场中的相邻光流场之间的速度变化矩阵;其中,速度变化矩阵包括速度大小变化矩阵和速度方向变化矩阵;根据速度大小变化矩阵和速度方向变化矩阵,确定相邻光流场的拉回得分;其中,相邻光流场包括三个相邻的第一光流场、第二光流场和第三光流场;如果第一光流场和第二光流场的拉回得分大于预设阈值,且第二光流场和第三光流场的拉回得分大于第一预设阈值,将第二光流场对应的相邻视频帧中的第二帧数的视频帧确定为第二卡顿视频帧;其中,相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,第二帧数大于第一帧数。该方式中,通过计算相邻光流场之间的向量差异,确定发生拉回的光流场和第二卡顿视频帧,进一步提高了测试结果的准确度。
[0202]
上述计算光流场中的相邻光流场之间的速度大小变化矩阵的步骤,包括:计算第
一光流场包括的多个第一向量与第二光流场包括的多个第二向量之间的向量差值,得到第三向量;将第三向量的模,确定为速度大小变化矩阵中对应位置的元素,得到第一光流场和第二光流场之间的速度大小变化矩阵。
[0203]
上述计算光流场中的相邻光流场之间的速度方向变化矩阵的步骤,包括:计算第一光流场包括的多个第一向量与第二光流场包括的多个第二向量之间的向量夹角,将向量夹角,确定为速度方向变化矩阵中对应位置的元素,得到第一光流场和第二光流场之间的速度方向变化矩阵。
[0204]
上述根据速度大小变化矩阵和速度方向变化矩阵,确定相邻光流场的拉回得分的步骤,包括:通过下述方式计算第一光流场和第二光流场的拉回得分:pull_score=mean(flow_diff_angle*flow_diff_norm);其中,flow_diff_angle为速度方向变化矩阵;flow_diff_norm为速度大小变化矩阵;pull_score为拉回得分;mean表示计算均值;*表示点乘。
[0205]
上述方法还包括:如果第二卡顿视频帧为帧数连续的两个视频帧,将帧数连续的两个视频帧中的第二帧数的视频帧删除;其中,帧数连续的两个视频帧包括:第一帧数的视频帧和第二帧数的视频帧,第一帧数小于第二帧数。该方式中,如果确定了连续的两次拉回现象,即确定了连续的两个第二卡顿视频帧,则删除帧数较大的视频帧,删除后的结果更符合玩家主观感受,进一步提高了测试结果的准确度。
[0206]
上述卡顿视频帧包括第三卡顿视频帧,第三卡顿视频帧用于指示待测试视频发生了瞬移;待测试视频包括多个光流场;根据光流场,确定多个视频帧中的卡顿视频帧的步骤,包括:计算多个光流场中每个光流场包括的多个向量中,每个向量的向量模,得到光流场的模;计算多个光流场的模的均值和方差,根据均值和方差,从多个光流场中确定目标光流场;将目标光流场对应的相邻视频帧中的第二帧数的视频帧确定为第三卡顿视频帧;其中,相邻视频帧包括:第一帧数的视频帧和第二帧数的视频帧,第一帧数小于第二帧数。该方式中,通过比较各个光流场之间,各个向量的大小,可以确定发生瞬移的第三卡顿视频帧,进一步提高了测试结果的准确度。
[0207]
上述根据均值和方差,从多个光流场中确定目标光流场的步骤,包括:计算光流场的模减去均值的差值,得到光流场的目标差;如果光流场的目标差大于第二预设阈值,将光流场确定目标光流场;其中,第二预设阈值为第一倍数的方差。
[0208]
上述根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧的步骤之前,方法还包括:根据光流场包括的多个向量的向量方向,确定多个视频帧中的转向视频帧;将多个视频帧中的转向视频帧删除。该方式中,为了避免转向视频帧对测试结果的影响,通过光流场中的向量方向确定转向视频帧,并删除转向视频帧,进一步提高了测试结果的准确度。
[0209]
上述根据光流场包括的多个向量的向量方向,确定多个视频帧中的转向视频帧的步骤,包括:计算光流场中属于第一指定象限的向量的第一平均向量,计算光流场中属于第二指定象限的向量的第二平均向量;如果第一平均向量的向量方向指向光流场的第一指定方向,且第二平均向量的向量方向指向光流场的第二指定方向,将光流场确定为指定光流场;如果指定光流场为多个连续的光流场,将指定光流场对应的相邻视频帧确定为转向视频帧;其中,第一指定方向和第二指定方向相对应。
[0210]
上述卡顿视频帧包括:第一卡顿视频帧,第二卡顿视频帧,和第三卡顿视频帧;根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分的步骤,包括:
计算有效视频帧中相邻视频帧之间的第一特征差异值,计算第一特征差异值的均值和方差;按照视频帧的帧数排列第一卡顿视频帧中,计算排列后的第一卡顿视频帧中首个视频帧与最后视频帧之间的第二特征差异值;获取与第二卡顿视频帧相邻的两个第一目标视频帧,计算第二卡顿视频帧与第一目标视频帧之间的第一差异值,将数值较大的第一差异值确定为第三特征差异值;获取与第三卡顿视频帧相邻的两个第二目标视频帧,计算第三卡顿视频帧与第二目标视频帧之间的第二差异值,将数值较大的第二差异值确定为第四特征差异值;其中,第一目标视频帧和第二目标视频帧为有效视频帧;根据第一特征差异值的均值和方差,以及第二特征差异值,第三特征差异值,第四特征差异值,计算待测试视频的流畅度得分。
[0211]
上述计算有效视频帧中相邻视频帧之间的第一特征差异值的步骤,包括:通过预先训练完成的图像提取模型,提取相邻视频帧的图像特征向量,计算相邻视频帧的图像特征向量之间的余弦相似度;计算一减去余弦相似度的差值,得到相邻视频帧之间的第一特征差异值。
[0212]
上述根据第一特征差异值的均值和方差,以及第二特征差异值,第三特征差异值,第四特征差异值,计算待测试视频的流畅度得分的步骤,包括:根据第一特征差异值的均值和方差,以及第二特征差异值,计算待测试视频的第一流畅度得分;根据第一特征差异值的均值和方差,以及第三特征差异值,计算待测试视频的第二流畅度得分;根据第一特征差异值的均值和方差,以及第四特征差异值,计算待测试视频的第三流畅度得分;计算第一流畅度得分、第二流畅度得分,以及第三流畅度得分的和值,将和值除以指定时长,得到待测试视频的流畅度得分;其中,指定时长为待测试视频中目标对象在游戏场景进行直线运动花费的时间,指定时长通过待测试视频的总是时长减去转向视频帧对应的转向时长得到的;流畅度得分越高指示待测试视频的流畅度越低。
[0213]
上述根据第一特征差异值的均值和方差,以及第二特征差异值,计算待测试视频的第一流畅度得分的步骤,包括:通过下述公式计算第一流畅度得分:pause_rating=max(0,diff1

diff_mean)/diff_std*p1+(n1-n2)/z*p2;其中,pause_rating为第一流畅度得分;diff1为第二特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;n1为第一卡顿视频帧中首个视频帧的帧数,n2为第一卡顿视频帧中最后视频帧的帧数;z为待测试视频的视频帧率;p1,p2为固定系数。
[0214]
上述根据第一特征差异值的均值和方差,以及第三特征差异值,计算待测试视频的第二流畅度得分的步骤,包括:通过下述公式计算第二流畅度得分:pull_rating=max(0,diff2-diff_mean)/diff_std*p3;其中,pull_rating为第二流畅度得分;diff2为第三特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;p3为固定系数。
[0215]
上述根据第一特征差异值的均值和方差,以及第四特征差异值,计算待测试视频的第三流畅度得分的步骤,包括:通过下述公式计算第三流畅度得分:blink_rating=max(0,diff3-diff_mean)/diff_std*p4;其中,blink_rating为第三流畅度得分;diff3为第四特征差异值;diff_mean为第一特征差异值的均值;diff_std为第一特征差异值的方差;p4为固定系数。
[0216]
上述方法还包括:在卡顿视频帧对应的视频画面中设置第一提示信息,第一提示
信息用于指示当前帧发生了卡顿;在待测试视频的时间轴上设置第二提示信息,第二提示信息用于指示卡顿的时间点。通过设置提示信息方便了测试人员的验核。
[0217]
本发明实施例所提供的游戏流畅度的测试方法、装置以及系统的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0218]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0219]
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0220]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0221]
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0222]
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

技术特征:
1.一种游戏流畅度的测试方法,其特征在于,所述方法包括:获取待测试视频;其中,所述待测试视频包括多个视频帧;计算相邻视频帧对应的光流场;其中,所述光流场用于:表示所述相邻视频帧之间像素点的相对运动;根据所述光流场,确定所述多个视频帧中的卡顿视频帧和有效视频帧;其中,所述卡顿视频帧用于:表示在播放所述卡顿视频帧时所述待测试视频发生了卡顿现象,所述有效视频帧用于:表示在播放所述有效视频帧时所述待测试视频未发生卡顿现象;根据所述有效视频帧与所述卡顿视频帧之间的特征差异,确定所述待测试视频的流畅度得分;其中,所述流畅度得分用于:指示所述待测试视频的流畅度。2.根据权利要求1所述的方法,其特征在于,所述光流场包括多个向量,所述多个向量与所述相邻视频帧中的像素点相对应;所述向量的长度表示所述相邻视频帧中对应像素点的移动速度,所述向量的方向表示所述相邻视频帧中对应像素点的移动方向。3.根据权利要求1所述的方法,其特征在于,根据所述光流场,确定所述多个视频帧中的卡顿视频帧和有效视频帧的步骤,包括:根据所述光流场,确定所述多个视频帧中的无效视频帧和所述卡顿视频帧;将所述多个视频帧中除所述无效视频帧和所述卡顿视频帧以外的视频帧确定为所述有效视频帧。4.根据权利要求3所述的方法,其特征在于,所述卡顿视频帧包括第一卡顿视频帧,所述第一卡顿视频帧用于指示所述待测试视频发生了停顿;根据所述光流场,确定所述多个视频帧中的无效视频帧和所述卡顿视频帧的步骤,包括:根据所述光流场包括的多个向量的向量长度,确定所述多个视频帧中的第一视频帧;判断所述第一视频帧是否为帧数连续的指定数量的视频帧;如果否,将所述第一视频帧确定为所述无效视频帧;如果是,将所述第一视频帧确定为所述第一卡顿视频帧。5.根据权利要求4所述的方法,其特征在于,根据所述光流场包括的多个向量的向量长度,确定所述多个视频帧中的第一视频帧的步骤,包括:从所述光流场中确定所述多个向量的向量长度为零的目标区域;计算所述目标区域的区域面积与所述光流场所在区域的面积比值,如果所述比值小于预设比值,将所述光流场对应的相邻视频帧中的第二帧数的视频帧确定为所述第一视频帧;其中,所述相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,所述第二帧数大于所述第一帧数。6.根据权利要求3所述的方法,其特征在于,所述卡顿视频帧包括第二卡顿视频帧,所述第二卡顿视频帧用于指示所述待测试视频发生了拉回;根据所述光流场,确定所述多个视频帧中的所述卡顿视频帧的步骤,包括:计算所述光流场中的相邻光流场之间的速度变化矩阵;其中,所述速度变化矩阵包括速度大小变化矩阵和速度方向变化矩阵;根据所述速度大小变化矩阵和所述速度方向变化矩阵,确定所述相邻光流场的拉回得分;其中,所述相邻光流场包括三个相邻的第一光流场、第二光流场和第三光流场;
如果所述第一光流场和所述第二光流场的拉回得分大于预设阈值,且所述第二光流场和所述第三光流场的拉回得分大于第一预设阈值,将所述第二光流场对应的相邻视频帧中的第二帧数的视频帧确定为所述第二卡顿视频帧;其中,所述相邻视频帧包括第一帧数的视频帧和第二帧数的视频帧,所述第二帧数大于所述第一帧数。7.根据权利要求6所述的方法,其特征在于,计算所述光流场中的相邻光流场之间的速度大小变化矩阵的步骤,包括:计算所述第一光流场包括的多个第一向量与所述第二光流场包括的多个第二向量之间的向量差值,得到第三向量;将所述第三向量的模,确定为所述速度大小变化矩阵中对应位置的元素,得到所述第一光流场和所述第二光流场之间的速度大小变化矩阵。8.根据权利要求6所述的方法,其特征在于,计算所述光流场中的相邻光流场之间的速度方向变化矩阵的步骤,包括:计算所述第一光流场包括的多个第一向量与所述第二光流场包括的多个第二向量之间的向量夹角,将所述向量夹角,确定为所述速度方向变化矩阵中对应位置的元素,得到所述第一光流场和所述第二光流场之间的速度方向变化矩阵。9.根据权利要求6所述的方法,其特征在于,根据所述速度大小变化矩阵和所述速度方向变化矩阵,确定所述相邻光流场的拉回得分的步骤,包括:通过下述方式计算所述第一光流场和所述第二光流场的拉回得分:pull_score=mean(flow_diff_angle*flow_diff_norm);其中,flow_diff_angle为所述速度方向变化矩阵;flow_diff_norm为所述速度大小变化矩阵;pull_score为所述拉回得分;mean表示计算均值;*表示点乘。10.根据权利要求6所述的方法,其特征在于,所述方法还包括:如果所述第二卡顿视频帧为帧数连续的两个视频帧,将所述帧数连续的两个视频帧中的第二帧数的视频帧删除;其中,所述帧数连续的两个视频帧包括:第一帧数的视频帧和第二帧数的视频帧,所述第一帧数小于所述第二帧数。11.根据权利要求3所述的方法,其特征在于,所述卡顿视频帧包括第三卡顿视频帧,所述第三卡顿视频帧用于指示所述待测试视频发生了瞬移;所述待测试视频包括多个光流场;根据所述光流场,确定所述多个视频帧中的所述卡顿视频帧的步骤,包括:计算所述多个光流场中每个所述光流场包括的多个向量中,每个向量的向量模,得到所述光流场的模;计算所述多个光流场的模的均值和方差,根据所述均值和所述方差,从所述多个光流场中确定目标光流场;将所述目标光流场对应的相邻视频帧中的第二帧数的视频帧确定为所述第三卡顿视频帧;其中,所述相邻视频帧包括:第一帧数的视频帧和第二帧数的视频帧,所述第一帧数小于所述第二帧数。12.根据权利要求11所述的方法,其特征在于,根据所述均值和所述方差,从所述多个光流场中确定目标光流场的步骤,包括:计算所述光流场的模减去所述均值的差值,得到所述光流场的目标差;
如果所述光流场的目标差大于第二预设阈值,将所述光流场确定所述目标光流场;其中,所述第二预设阈值为第一倍数的所述方差。13.根据权利要求1所述的方法,其特征在于,根据所述光流场,确定所述多个视频帧中的卡顿视频帧和有效视频帧的步骤之前,所述方法还包括:根据所述光流场包括的多个向量的向量方向,确定所述多个视频帧中的转向视频帧;将所述多个视频帧中的所述转向视频帧删除。14.根据权利要求13所述的方法,其特征在于,根据所述光流场包括的多个向量的向量方向,确定所述多个视频帧中的转向视频帧的步骤,包括:计算所述光流场中属于第一指定象限的向量的第一平均向量,计算所述光流场中属于第二指定象限的向量的第二平均向量;如果所述第一平均向量的向量方向指向所述光流场的第一指定方向,且所述第二平均向量的向量方向指向所述光流场的第二指定方向,将所述光流场确定为指定光流场;如果所述指定光流场为多个连续的光流场,将所述指定光流场对应的相邻视频帧确定为所述转向视频帧;其中,所述第一指定方向和所述第二指定方向相对应。15.根据权利要求1所述的方法,其特征在于,所述卡顿视频帧包括:第一卡顿视频帧,第二卡顿视频帧,和第三卡顿视频帧;根据所述有效视频帧与所述卡顿视频帧之间的特征差异,确定所述待测试视频的流畅度得分的步骤,包括:计算所述有效视频帧中相邻视频帧之间的第一特征差异值,计算所述第一特征差异值的均值和方差;按照所述视频帧的帧数排列所述第一卡顿视频帧中,计算排列后的所述第一卡顿视频帧中首个视频帧与最后视频帧之间的第二特征差异值;获取与所述第二卡顿视频帧相邻的两个第一目标视频帧,计算所述第二卡顿视频帧与所述第一目标视频帧之间的第一差异值,将数值较大的所述第一差异值确定为所述第三特征差异值;获取与所述第三卡顿视频帧相邻的两个第二目标视频帧,计算所述第三卡顿视频帧与所述第二目标视频帧之间的第二差异值,将数值较大的所述第二差异值确定为所述第四特征差异值;其中,所述第一目标视频帧和所述第二目标视频帧为所述有效视频帧;根据所述第一特征差异值的均值和方差,以及所述第二特征差异值,所述第三特征差异值,所述第四特征差异值,计算所述待测试视频的流畅度得分。16.根据权利要求15所述的方法,其特征在于,计算所述有效视频帧中相邻视频帧之间的第一特征差异值的步骤,包括:通过预先训练完成的图像提取模型,提取所述相邻视频帧的图像特征向量,计算所述相邻视频帧的图像特征向量之间的余弦相似度;计算一减去所述余弦相似度的差值,得到所述相邻视频帧之间的第一特征差异值。17.根据权利要求15所述的方法,其特征在于,根据所述第一特征差异值的均值和方差,以及所述第二特征差异值,所述第三特征差异值,所述第四特征差异值,计算所述待测试视频的流畅度得分的步骤,包括:根据所述第一特征差异值的均值和方差,以及所述第二特征差异值,计算所述待测试
视频的第一流畅度得分;根据所述第一特征差异值的均值和方差,以及所述第三特征差异值,计算所述待测试视频的第二流畅度得分;根据所述第一特征差异值的均值和方差,以及所述第四特征差异值,计算所述待测试视频的第三流畅度得分;计算所述第一流畅度得分、所述第二流畅度得分,以及所述第三流畅度得分的和值,将所述和值除以指定时长,得到所述待测试视频的流畅度得分;其中,所述指定时长为所述待测试视频中目标对象在游戏场景进行直线运动花费的时间,所述指定时长通过所述待测试视频的总是时长减去转向视频帧对应的转向时长得到的;所述流畅度得分越高指示所述待测试视频的流畅度越低。18.根据权利要求17所述的方法,其特征在于,根据所述第一特征差异值的均值和方差,以及所述第二特征差异值,计算所述待测试视频的第一流畅度得分的步骤,包括:通过下述公式计算所述第一流畅度得分:pause_rating=max(0,diff1

diff_mean)/diff_std*p1+(n1-n2)/z*p2;其中,pause_rating为所述第一流畅度得分;diff1为所述第二特征差异值;diff_mean为所述第一特征差异值的均值;diff_std为所述第一特征差异值的方差;n1为所述第一卡顿视频帧中首个视频帧的帧数,n2为所述第一卡顿视频帧中最后视频帧的帧数;z为所述待测试视频的视频帧率;p1,p2为固定系数。19.根据权利要求17所述的方法,其特征在于,根据所述第一特征差异值的均值和方差,以及所述第三特征差异值,计算所述待测试视频的第二流畅度得分的步骤,包括:通过下述公式计算所述第二流畅度得分:pull_rating=max(0,diff2-diff_mean)/diff_std*p3;其中,pull_rating为所述第二流畅度得分;diff2为所述第三特征差异值;diff_mean为所述第一特征差异值的均值;diff_std为所述第一特征差异值的方差;p3为固定系数。20.根据权利要求17所述的方法,其特征在于,根据所述第一特征差异值的均值和方差,以及所述第四特征差异值,计算所述待测试视频的第三流畅度得分的步骤,包括:通过下述公式计算所述第三流畅度得分:blink_rating=max(0,diff3-diff_mean)/diff_std*p4;其中,blink_rating为所述第三流畅度得分;diff3为所述第四特征差异值;diff_mean为所述第一特征差异值的均值;diff_std为所述第一特征差异值的方差;p4为固定系数。21.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述卡顿视频帧对应的视频画面中设置第一提示信息,所述第一提示信息用于指示当前帧发生了卡顿;在所述待测试视频的时间轴上设置第二提示信息,所述第二提示信息用于指示卡顿的时间点。22.一种游戏流畅度的测试装置,其特征在于,所述装置包括:视频获取模块,用于获取待测试视频;其中,所述待测试视频包括多个视频帧;光流场计算模块,用于计算相邻视频帧对应的光流场;其中,所述光流场用于:表示所
述相邻视频帧之间像素点的相对运动;视频帧确定模块,用于根据所述光流场,确定所述多个视频帧中的卡顿视频帧和有效视频帧;其中,所述卡顿视频帧用于:表示在播放所述卡顿视频帧时所述待测试视频发生了卡顿现象,所述有效视频帧用于:表示在播放所述有效视频帧时所述待测试视频未发生卡顿现象;得分确定模块,用于根据所述有效视频帧与所述卡顿视频帧之间的特征差异,确定所述待测试视频的流畅度得分;其中,所述流畅度得分用于:指示所述待测试视频的流畅度。23.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1-21任一项所述的游戏流畅度的测试方法。24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1-21任一项所述的游戏流畅度的测试方法。

技术总结
本发明提供了一种游戏流畅度的测试方法、装置和电子设备,获取待测试视频,待测试视频包括多个视频帧;计算相邻视频帧对应的光流场;根据光流场,确定多个视频帧中的卡顿视频帧和有效视频帧;根据有效视频帧与卡顿视频帧之间的特征差异,确定待测试视频的流畅度得分;该流畅度得分用于指示待测试视频的流畅度。该方式中,通过相邻视频帧对应的光流场确定待测试视频中发生卡顿现象的卡顿视频帧和未发生卡顿现象的有效视频帧,并根据有效视频帧和卡顿视频帧之间的图像特征差异,确定流畅度得分,能够量化游戏流畅度的指标,且提高了测试的通用性,使该测试方式适用于不同平台、不同游戏,同时提高了测试结果的准确性。同时提高了测试结果的准确性。同时提高了测试结果的准确性。


技术研发人员:代凌云 徐博磊 叶均杰
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2023.03.06
技术公布日:2023/7/11
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐