检测云游戏响应延迟的方法、装置、系统、终端和服务器与流程

专利2022-06-30  52


本发明涉及计算机领域,尤其是一种检测云游戏响应延迟的方法、装置、系统、终端和服务器。



背景技术:

云游戏(cloudgaming)又可称为游戏点播(gamingondemand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thinclient)能运行高品质游戏。在云游戏场景下,游戏并不在玩家游戏终端,而是在云端服务器中运行,并由云端服务器将游戏场景渲染为视频音频流,通过网络传输给玩家游戏终端。玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家输入指令并发送给云端服务器的能力即可。

响应延迟是游戏的重要指标之一,反应了游戏操作的流畅度。响应延迟是指从发出操控指令到游戏画面出现对应变化的时间差。而云游戏响应延迟是指从终端发出操控指令,经网络上行到服务端及游戏云端,再经游戏处理后,由游戏云端编码成视频帧,再经网络下行到终端,最后经终端解码渲染共需要的时间。

在云游戏中,响应延迟涉及到终端和服务器,影响的因子较多,测量起来较复杂,为了准确测量云游戏响应延迟,现有方案主要通过高速摄像机录制云游戏体验视频,再通过视频工具分析从用户操控到游戏画面发生变化经历的视频帧数,然后根据录制视频的帧率计算出延迟时间。以高速摄像机的帧率为1000fps为例,云游戏响应延迟=1000÷录制视频的帧率×从用户操控到游戏画面发生变化经历的视频帧数。这种方式虽然能准确测量出云游戏响应延迟,但其需要依赖高速摄像机以及视频分析工具,成本较高且对测量环境的要求高,大多需要在实验室环境下进行测量。



技术实现要素:

本发明提供一种检测云游戏响应延迟的方法、装置、系统、终端和服务器,能降低云游戏响应延迟测量的成本和对测量环境的要求。

根据本发明的第一方面,一种检测云游戏响应延迟的方法,用于终端,包括以下步骤:

发送操控指令和第一时间值给服务器,所述第一时间值为发送所述操控指令的时间值;

接收所述服务器返回的附带有所述第一时间值的视频帧;

根据所述视频帧获取第二时间值,所述第二时间值是完成解码并渲染所述视频帧的时间值、播放完所述视频帧的时间值或接收到所述视频帧的时间值其中一种;

根据所述第一时间值与所述第二时间值的差值确定云游戏的响应延迟。

根据本发明的第二方面,一种检测云游戏响应延迟的方法,用于系统,包括以下步骤:

终端发送操控指令和第一时间值给服务器,所述第一时间值为所述终端发送所述操控指令的时间值;

所述服务器根据所述操控指令得到视频帧;

所述服务器在所述视频帧中附带所述第一时间值;

所述服务器将附带有所述第一时间值的所述视频帧返回给所述终端;

所述终端根据返回的所述视频帧获取第二时间值,所述第二时间值是所述终端完成解码并渲染所述视频帧的时间值、所述终端播放完所述视频帧的时间值或所述终端接收到所述视频帧的时间值其中一种;

所述终端根据所述第一时间值与所述第二时间值的差值确定云游戏的响应延迟。

根据本发明的第三方面,一种检测云游戏响应延迟的方法,用于服务器,包括以下步骤:

接收终端发送的操控指令和第一时间值,所述第一时间值为所述终端发送所述操控指令的时间值;

根据所述操控指令得到视频帧;

在所述视频帧中附带所述第一时间值;

将附带有所述第一时间值的所述视频帧返回给所述终端;

接收所述终端根据所述第一时间值与第二时间值的差值确定的云游戏的响应延迟,所述第二时间值是所述终端完成解码并渲染所述视频帧的时间值、所述终端播放完所述视频帧的时间值或所述终端接收到所述视频帧的时间值其中一种。

根据本发明的第四方面,一种检测云游戏响应延迟的装置,用于终端,包括:

发送模块,用于发送操控指令和第一时间值给服务器,所述第一时间值为发送所述操控指令的时间值;

第一接收模块,用于接收所述服务器返回的附带有所述第一时间值的视频帧;

第一获取模块,用于根据所述视频帧获取第二时间值,所述第二时间值是完成解码并渲染所述视频帧的时间值、播放完所述视频帧的时间值或接收到所述视频帧的时间值其中一种;

确定模块,用于根据所述第一时间值与所述第二时间值的差值确定云游戏的响应延迟。

根据本发明的第五方面,一种检测云游戏响应延迟的装置,用于服务器,包括:

第二接收模块,用于接收终端发送的操控指令和第一时间值,所述第一时间值为所述终端发送所述操控指令的时间值;

第二获取模块,用于根据所述操控指令得到视频帧;

附带模块,用于在所述视频帧中附带所述第一时间值;

返回模块,用于将附带有所述第一时间值的所述视频帧返回给所述终端;

第三接收模块,用于接收所述终端根据所述第一时间值与第二时间值的差值确定的云游戏的响应延迟,所述第二时间值是所述终端完成解码并渲染所述视频帧的时间值、所述终端播放完所述视频帧的时间值或所述终端接收到所述视频帧的时间值其中一种。

根据本发明的第六方面,一种检测云游戏响应延迟的系统,包括终端和服务器;

所述终端,用于发送操控指令和第一时间值给所述服务器,并接收所述服务器返回的附带有所述第一时间值的视频帧,根据所述视频帧获取第二时间值,根据所述第一时间值与所述第二时间值的差值确定云游戏的响应延迟;

所述服务器,用于接收终端发送的操控指令和第一时间值,根据所述操控指令得到视频帧,在所述视频帧中附带所述第一时间值,将附带有所述第一时间值的所述视频帧返回给所述终端,接收所述终端根据所述第一时间值与第二时间值的差值确定的云游戏的响应延迟;

所述第一时间值为所述终端发送所述操控指令的时间值,所述第二时间值是所述终端完成解码并渲染所述视频帧的时间值、所述终端播放完所述视频帧的时间值或所述终端接收到所述视频帧的时间值其中一种。

根据本发明的第七方面,一种终端,包括:

至少一个处理器;

至少一个存储器,用于存储至少一条指令、至少一段程序、代码集或指令集;

当所述至少一条指令、至少一段程序、代码集或指令集被所述至少一个处理器执行,使得所述至少一个处理器实现第一方面所述的检测云游戏响应延迟的方法。

根据本发明的第八方面,一种服务器,包括:

至少一个处理器;

至少一个存储器,用于存储至少一条指令、至少一段程序、代码集或指令集;

当所述至少一条指令、至少一段程序、代码集或指令集被所述至少一个处理器执行,使得所述至少一个处理器实现第三方面所述的一种检测云游戏响应延迟的方法。

根据本发明的第九方面,一种计算机可读存储介质,其上存储有处理器可执行的程序,所述处理器可执行的程序在被处理器执行时用于实现第一方面或第三方面所述的一种检测云游戏响应延迟的方法。

本发明所提供的技术方案通过终端发送第一时间值给服务器和终端接收服务器返回的附带有所述第一时间值的视频帧的方式,确定操控指令所影响的视频帧,进而结合终端完成解码渲染视频帧的时间值、播放完视频帧的时间值或接收视频帧的时间值获取第二时间值,最后根据第一时间值与第二时间值的差值确定云游戏的响应延迟,能以较低的成本实现相对精确的响应延迟的测量,且对测量环境的要求不高,能在实验室环境外的云游戏中实现真实用户的响应延迟数据的测量。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图进行说明。

图1为现有的云游戏的数据处理系统的结构及运行原理示意图;

图2为本申请实施例检测云游戏响应延迟的系统的结构示意图;

图3为本申请实施例服务器在视频编码结束后附带第一时间值的实现原理示意图;

图4为本申请实施例终端接收服务器返回的视频帧进行云游戏响应延迟检测时获取第二时间值的流程图;

图5为本申请实施例显示终端得到的云游戏的响应延迟的一种云游戏终端界面图;

图6为本申请实施例检测云游戏响应延迟的方法用于终端时的流程图;

图7为本申请实施例检测云游戏响应延迟的方法用于服务器时的流程图;

图8为本申请实施例检测云游戏响应延迟的方法用于系统时的流程图;

图9为图8的一个具体应用实施例的整体流程图;

图10为图9具体应用实施例中云端缓存操控时间戳流程图;

图11为图9具体应用实施例中云端视频编码附带操控时间戳流程图;

图12为图9具体应用实施例中终端计算云游戏响应延迟流程图;

图13为本申请实施例检测云游戏响应延迟的装置用于终端时的结构示意图;

图14为本申请实施例检测云游戏响应延迟的装置用于服务器时的结构示意图;

图15为本申请实施例终端的结构示意图;

图16为本申请实施例服务器的结构示意图。

具体实施方式

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

本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

在对本申请实施例进行介绍说明之前,首先对本申请中涉及的相关名词进行解释说明。

云游戏串流方案:当前云游戏的主流实现方案,游戏云端将游戏渲染画面进行视频编码,编码后的视频数据经网络传输到终端,由终端进行视频解码渲染。

在服务器运行的游戏客户端的触控响应延迟:属于游戏本身的响应延迟,是指在服务器运行的游戏客户端从触控到画面变化的时间差。

如图1所示,为现有云游戏的数据处理系统的结构及运行原理示意图,该系统中包括终端10以及服务器20,终端10与服务器20通过网络进行通信与数据交互。图1的系统具体工作流程为:玩家或用户在终端10中输入控制操作,终端10根据玩家或用户输入的控制操作生成操控指令并将操控指令发送至服务器20,服务器20对接收到的操控指令进行解析,得到操控指令对应的游戏数据,进一步地,服务器20根据解析的游戏数据进行画面渲染,生成相应的视频流数据,并将视频流数据经视频编码后返回至终端10,终端10对收到的视频流数据进行解码和渲染(不同于服务器的画面渲染,终端是根据解码的视频数据进行渲染,再现服务器渲染得到的画面),得到游戏画面。

由上可知,现有云游戏的终端主要负责操控指令的生成、指令上传、解码渲染等操作,服务器负责画面渲染、视频编码等操作。结合云游戏响应延迟的定义可知,云游戏响应延迟与网络传输延迟、终端解码渲染时间、服务器运行的客户端的延迟和游戏服务器的延迟等相关,受影响的因素多,测量的复杂度较高,所以业内一般采用背景技术所提到的高速摄像机以及视频分析工具来对云游戏响应延迟进行准确测量,但其成本较高且难以在实验室环境外的云游戏中测量实际用户的响应延迟数据。

基于此,本申请实施例提出了一种检测云游戏响应延迟的方案,可以通过在终端发送的操控指令中附带第一时间值和在服务器返回的视频帧(即受操控指令影响的视频帧)中附带第一时间值的方式,结合终端自身的解码渲染时间、播放时间或接收时间获取第二时间值后即可测量出云游戏响应延迟,不再需要高速摄像机以及视频分析工具,从而可以在实验室环境外的实际云游戏中以非常低的成本实现相对精确的云游戏响应延迟的测量。

基于上述描述,本申请实施例提供一种检测云游戏响应延迟的系统,参见图2,该系统包括终端10和服务器20,终端10可以是智能手机101、平板电脑102、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。服务器20可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端10以及服务器20可以通过有线或无线通信方式进行直接或间接的连接,本申请在此不做限制。该系统的工作流程为:终端10根据玩家或用户输入的控制操作生成操控指令并获取终端当前的时间值作为第一时间值;终端10将第一时间值附带到操控指令后通过网络发送给服务器20;服务器20接收终端发送的操控指令和第一时间值,并对操控指令进行解析,得到操控指令对应的游戏数据;服务器20根据解析得到的游戏数据渲染对应的游戏画面,生成操控指令对应的视频流数据;服务器20对生成的视频流数据进行视频编码,得到编码后的视频流数据(包含有受操控指令影响的编码后的视频帧);服务器20在(受操控指令影响的)编码后的视频帧中附带第一时间值后通过网络串流(即视频流)的方式返回给终端10;终端10接收返回的视频帧进行解码渲染以及云游戏响应延迟的计算,并将计算的云游戏响应延迟上传给服务器20。

具体地,第一时间值可以是终端当前的时刻、时间戳等时间的数值。

该系统的终端10将第一时间值附带到操控指令时,可以在操控指令协议中增加字段用于附带第一时间值。同理,该系统的服务器20在编码后的视频帧中附带第一时间值时,可以在视频流传输协议中增加字段用于附带第一时间值。

在服务器20中,视频编码和接收操控指令是独立的两个任务,视频编码是按照固定间隔(与帧率有关)进行(因游戏的画面在没有操控指令的情况下也是一直有变化的,所以云游戏的视频编码也要不间断进行)的,操控指令则是用户或玩家随机触发的。同理,接收操控指令所附带的第一时间值和视频编码也是2个独立的任务,故本申请实施例的服务器20可以先将第一时间值缓存,等到操控指令影响的视频帧编码结束再进行附带第一时间值的操作,如图2所示。

根据先验知识,云游戏的响应延迟主要关注用户或玩家的网络以及终端的解码渲染性能,因此,本申请实施例可以假设服务器20和服务器20中运行的游戏客户端都是流畅和快速响应的,这样可以大幅减小响应延迟计算的复杂度,简化响应延迟的计算过程。综上所述,本申请实施例可以假设:1)接收的操控指令不影响正在编码的当前视频帧,因为正在编码的视频帧已经完成渲染并开始编码,说明其画面已经确定不再更改;2)接收的操控指令影响的是视频的下一帧(即下一帧视频帧),因基于服务器20和游戏客户端流畅和快速响应的假设,操控指令服务器会尽快影响游戏画面,所以影响的是下一帧视频帧;3)正在编码的当前视频帧连续接收到多条操控指令,受2)操控指令影响的是视频的下一帧的假设影响,需要保留接收到的第一条操控指令(即最早接收到的那条操控指令)附带或对应的第一时间值,而丢弃后面接收到的操控指令的第一时间值。

以第一时间值为时间戳,对任意连续的4帧视频帧进行视频编码为例,基于上述假设,服务器20在视频编码结束后附带第一时间值的实现原理如图3所示,图3中,操控指令1、操控指令2和操控指令3为不同的操控指令,操控1时间戳、操控2时间戳和操控3时间戳分别为操控指令1、操控指令2和操控指令3对应的时间戳。从图3可以看出,正在编码第1帧视频帧的时候收到操控指令1,这个指令对第1帧画面是不会产生影响的(因为第1帧已经完成渲染并开始编码,说明画面已经确定不再更改),而会影响下一帧画面(即第2帧),所以应该在第2帧编码结束后附带操控1时间戳并发送给终端;编码第1帧的时候同时收到了2条操控指令(操控指令1和操控指令2),这2条指令都对第2帧产生影响,所以操控指令2的影响跟操控指令1是重复的,可以丢弃操控指令2的时间戳,此时应该在第2帧编码结束后附带操控1时间戳并发送给终端;由于操控指令是随机触发的,可能存在一段时间内没有发送操控指令,期间的视频帧就没有可附带的操控时间戳(如图3所示,由于第3帧没有可影响的指令,所以第3帧不附带操控时间戳)。

进一步地,参见图4,终端10接收服务器20返回的视频帧进行解码渲染以及云游戏响应延迟的计算时,可以执行以下步骤s401-s404来获取第二时间值(代表终端画面产生与操控指令对应的变化的时间值):

s401、终端10接收到服务器20返回的视频帧后,记录当前接收到该视频帧的时间值,从该视频帧中解码出所附带的第一时间值,并确定解码出的第一时间值是否有效,若有效,则执行步骤s402,反之,则结束流程;

s402、确定终端能否跟踪该视频帧的解码渲染时间(即确定终端的该视频帧在什么时候完成解码和渲染),若能,则获取完成解码并渲染该视频帧的时间值作为第二时间值;反之,则执行步骤s403;

s403、确定终端能否获取该视频帧的播放延迟(即播放器缓冲区长度),若能,则获取接收到该视频帧的时间值和该播放延迟并将二者之和(即播放完该视频帧的时间值)作为第二时间值;反之,执行步骤s404;

s404、获取接收到该视频帧的时间值作为第二时间值。

通过上述步骤s401-s404获取到第二时间值之后,将第二时间值与第一时间值作差即可计算出云游戏响应延迟。

例如,假设终端获取到的第一时间值为10ms(相对于预设的时间零点来说),终端获取到的第二时间值为完成解码并渲染该视频帧的时间值,且第二时间值为102ms(相对于预设的时间零点来说),则云游戏响应延迟=102-10=92ms。上述云游戏响应延迟计算过程同样适用于第二时间值为播放完该视频帧的时间值或接收到该视频帧的时间值时的情形。

终端得到的云游戏的响应延迟,可直接显示在终端的游戏画面中,也可以通过网络上传给服务器进行进一步数据统计、分析和优化。例如,图5示出了在云游戏(如王者荣耀云游戏)终端的游戏登录界面中显示终端得到的云游戏的响应延迟示意图。图5中,云游戏的响应延迟的显示区域502可位于在云游戏登录界面的右上侧,当数据显示按钮501被用户通过单击等操作触发时,显示区域502即可显示云游戏的响应延迟delay。如图5所示,显示区域502除了显示云游戏的响应延迟delay之外,还可以显示更丰富的其他信息,包括但不限于:分辨率resolution、帧率fps、视频码率videobitrate和音频码率audiobitrate。可选地,当数据显示按钮501被用户通过双击或再次单击等操作触发时,显示区域502还可以被隐藏起来不显示。另外,图5的云游戏登录界面还可以通过进度条503的百分比(如100%)及进度条503下方的提示文字(如:游戏加载完毕,祝您游戏愉快!)来提示当前云游戏的登录或加载状态。

在云游戏的开发测试应用中,开发人员可以利用本申请实施例确定的云游戏的响应延迟来进行游戏性能测试,并根据测试的结果对云游戏的设计指标或参数进行调整或优化。而在实际的运维应用中,云游戏的游戏运营商、云游戏的运维人员等用户可以利用本申请实施例确定的云游戏的响应延迟来在现网环境的云游戏产品中统计实际用户的云游戏响应延迟指标数据、协助定位用户卡顿等问题,还可以根据此响应延迟数据来对云游戏进行优化,如针对延迟较高的地区或运营商优化接入部署。

由上述内容可知,本申请实施例通过在终端发送的操控指令中附带第一时间值和在服务器返回的视频帧中附带第一时间值的方式,结合终端自身的解码渲染时间、播放完视频帧的时间或接收视频帧的时间获取第二时间值后即可测量出云游戏响应延迟,不再需要高速摄像机以及视频分析工具,从而可以在实验室环境外的实际云游戏中以非常低的成本实现相对精确的云游戏响应延迟的测量。本申请实施例的云游戏响应延迟测量方法,适用于各种终端云游戏方案(如web云游戏、androidapp云游戏、iosapp云游戏、pc客户端云游戏等),而且实现成本非常低,终端和服务器都不需要增加额外的计算或存储资源。

基于上述检测云游戏响应延迟的系统的实施例的描述,本发明实施例提供一种检测云游戏响应延迟的方法,该方法可以应用于图2所示的检测云游戏响应延迟的系统中,具体可以由图2所示的终端10执行。请参见图6,该检测云游戏响应延迟的过程可包括以下步骤s601-s604:

s601、终端发送操控指令和第一时间值给服务器。

本申请实施例中,操控指令是终端根据玩家或用户输入的控制操作(如移动、旋转、开启战斗等)生成的;第一时间值是终端发送操控指令给服务器的时间值(即终端当前的时间值),第一时间值可以是时间戳、时刻等时间的数值。

而为了便于服务器能确定操控指令与第一时间值的对应关系,终端可以将第一时间值附带到操控指令中再发送给服务器。具体实现中,终端可以在指令协议(用于发送操控指令给服务器的协议)中增加字段用于附带第一时间值。可选地,终端还可以记录或保存操控指令与对应的第一时间值。

s602、终端接收服务器返回的附带有第一时间值的视频帧。

本申请实施例中,终端将操控指令与第一时间值发送给服务器后,服务器会根据操控指令进行视频编码,并在视频编码得到的视频帧中附带上第一时间值再返回给终端,这样终端便可以根据该第一时间值快速确定操控指令所影响的视频帧,还可以将该第一时间值直接用于后续云游戏响应延迟的计算。具体地,终端可通过将服务器返回的视频帧中的第一时间值与终端保存或记录的第一时间值进行匹配的方式,找出云端返回的视频帧对应的操作指令。

具体地,服务器返回的附带有第一时间值的视频帧可以是基于视频流(串流)的视频帧,该视频帧可通过rtsp、rtp、rtcp、http等视频流传输协议返回给终端接收。可选地,本申请实施例可采用rtcp视频流传输协议来传输视频流,rtcp协议是基于tcp(即传输控制协议)的视频流传输协议,其在传输层采用了tcp这一可靠的传输控制协议来进行视频流传输,保证了视频流数据是按序到达终端(便于终端识别或统计)的,省去了其他视频流协议需要业务逻辑层对视频流数据进行重新排序的操作,更加可靠和高效。

s603、终端根据返回的视频帧获取第二时间值。

本申请实施例中,第二时间值可以是时间戳、时刻等时间的数值。终端接收到服务器返回的视频帧后,记录当前接收到该视频帧的时间值,从该视频帧中解码出所附带的第一时间值,并确定解码出的第一时间值是否有效,若有效,则执行获取第二时间值的步骤,反之,则结束流程。

获取第二时间值的步骤又可以分为以下三种情况来实现:

a、终端能跟踪该视频帧的解码渲染时间(即确定终端的该视频帧在什么时候完成解码和渲染),则获取完成解码并渲染该视频帧的时间值作为第二时间值;

b、终端不能跟踪该视频帧的解码渲染时间但能获取该视频帧的播放延迟(即播放器缓冲区长度),则获取接收到该视频帧的时间值和该播放延迟并将二者之和(即播放该视频帧的时间值)作为第二时间值;

c、终端既不能跟踪该视频帧的解码渲染时间也不能获取该视频帧的播放延迟,则获取接收到该视频帧的时间值作为第二时间值。

s604、终端根据第一时间值与第二时间值的差值确定云游戏的响应延迟。

本申请实施例中,终端根据服务器返回的视频帧中获取到第一时间值和第二时间值后,可通过求取第一时间值与第二时间值的差值的方式来得到云游戏的响应延迟,十分方便。例如,假设终端获取到的第一时间值为10ms(相对于预设的时间零点来说),终端获取到的第二时间值为完成解码并渲染该视频帧的时间值,且第二时间值为102ms(相对于预设的时间零点来说),则云游戏响应延迟=102-10=92ms。上述云游戏响应延迟计算过程同样适用于第二时间值为播放完该视频帧的时间值或接收到该视频帧的时间值时的情形。

终端得到的云游戏的响应延迟,可直接显示在终端的游戏画面中,也可以通过网络上传给服务器进行进一步数据统计、分析和优化。例如,图5示出了在云游戏(如王者荣耀云游戏)终端的游戏登录界面中显示终端得到的云游戏的响应延迟示意图。图5中,云游戏的响应延迟的显示区域502可位于在云游戏登录界面的右上侧,当数据显示按钮501被用户通过单击等操作触发时,显示区域502即可显示云游戏的响应延迟delay。如图5所示,显示区域502除了显示云游戏的响应延迟delay之外,还可以显示更丰富的其他信息,包括但不限于:分辨率resolution、帧率fps、视频码率videobitrate和音频码率audiobitrate。可选地,当数据显示按钮501被用户通过双击或再次单击等操作触发时,显示区域502还可以被隐藏起来不显示。另外,图5的云游戏登录界面还可以通过进度条503的百分比(如100%)及进度条503下方的提示文字(如:游戏加载完毕,祝您游戏愉快!)来提示当前云游戏的登录或加载状态。

游戏本身的响应延迟(即游戏客户端的触控响应延迟)对云游戏的响应延迟也有一定影响,本申请实施例还可以从服务器获取到游戏客户端的触控响应延迟。具体地,服务器从游戏客户端的相应接口获取到游戏客户端的触控响应延迟后,可将该触控响应延迟也附带到编码后的视频帧中发送给终端,终端接收到该视频帧进行解码即可得到游戏客户端的触控响应延迟。获得游戏客户端的触控响应延迟后,可将该触控响应延迟与计算出来的云游戏的响应延迟在终端的显示界面中显示出来,这样终端的用户就可以同时看到云游戏的响应延迟和游戏本身的响应延迟(即游戏客户端的触控响应延迟),提供了更丰富的延迟细节信息,使得用户可以直观得知游戏本身的响应延迟对云游戏的响应延迟有多大的影响。

在云游戏的开发测试应用中,开发人员可以利用本申请实施例确定的云游戏的响应延迟来进行游戏性能测试,并根据测试的结果对云游戏的设计指标或参数进行调整或优化。而在实际的运维应用中,云游戏的游戏运营商、云游戏的运维人员等用户可以利用本申请实施例确定的云游戏的响应延迟来在现网环境的云游戏产品中统计实际用户的云游戏响应延迟指标数据、协助定位用户卡顿等问题,还可以根据此响应延迟数据来对云游戏进行优化,如针对延迟较高的地区或运营商优化接入部署。

由上述内容可知,本申请实施例的终端通过在发送的操控指令中附带第一时间值和接收服务器返回的附带第一时间值的受操控指令影响的视频帧方式,结合终端自身的解码渲染时间、播放时间或接收时间获取第二时间值后即可测量出云游戏响应延迟,不再需要高速摄像机以及视频分析工具,从而可以在实验室环境外的实际云游戏中以非常低的成本实现相对精确的云游戏响应延迟的测量。本申请终端实施例的云游戏响应延迟测量方法,适用于各种终端云游戏方案(如web云游戏、androidapp云游戏、iosapp云游戏、pc客户端云游戏等),而且实现成本非常低,终端和服务器都不需要增加额外的计算或存储资源。

基于上述检测云游戏响应延迟的系统的实施例的描述,本发明实施例提供一种检测云游戏响应延迟的方法,该方法可以应用于图2所示的检测云游戏响应延迟的系统中,具体可以由图2所示的服务器20执行。请参见图7,该检测云游戏响应延迟的过程可包括以下步骤s701-s705:

s701、服务器接收终端发送的操控指令和第一时间值。

本申请实施例中,操控指令是终端根据玩家或用户输入的控制操作(如移动、旋转、开启战斗等)生成并通过网络上传给服务器的;第一时间值是终端发送操控指令给服务器的时间值(即终端当前的时间值),第一时间值可以是时间戳、时刻等时间的数值。

服务器接收的操控指令不会影响正在编码的当前视频帧,因为正在编码的视频帧已经完成渲染并开始编码,说明其画面已经确定不再更改。而根据先验知识,要在视频帧中附带信息,需要先完成视频编码操作,故本申请实施例可以先缓存第一时间值,直到下一帧受操控指令影响的视频帧编码结束再进行附带操作。缓存的方式可以采用缓存变量的缓存方式或采用队列的缓存方式。

在一实施方式中,服务器可以采用缓存变量的方式缓存第一时间值,具体实现过程如下:

首先,服务器接收终端发送的操控指令后,判断该操作指令所附带的第一时间值是否有效(具体判断方式与视频的传输协议有关,一般采用二进制协议传输视频数据,所以可用整形字段表示第一时间值,当第一时间值大于0则有效,等于0则无效),若无效,则不需要缓存,若有效,则进行下一步的判断操作;

接着,服务器判断下一帧编码帧缓存变量(用于缓存当前视频帧在编码时收到的第一时间值)是否已保存有时间值,若已保存有时间值(如下一帧编码帧缓存变量不为0),则表示下一帧视频帧已被之前的操控指令影响,则当前操控指令对应的第一时间值可丢弃不处理(基于图3的假设);若未保存有时间值(如下一帧编码帧缓存变量为0),则将当前操控指令对应的第一时间值保存到下一帧编码帧缓存变量中,等待下一帧视频帧编码结束后进行附带操作。

而服务器采用队列的方式缓存第一时间值的具体实现方式与采用缓存变量的方式缓存不同之处是,队列中使用元素来代替缓存变量,即用于缓存当前视频帧在编码时收到的第一时间值是下一帧编码帧对应的元素,其他实现过程类似。

s702、服务器根据操控指得到视频帧。

本申请实施例中,服务器中运行的游戏客户端会根据操控指令渲染对应的画面,得到对应的视频流数据。为了符合服务器和游戏客户端流畅和快速响应的假设,操控指令服务器会尽快影响游戏画面,所以本申请实施例可采取在当前编码的下一帧(即下一帧视频帧)开始进行画面渲染的方式。得到对应的视频流数据后,服务器接着对其进行视频编码,得到编码后的视频帧(即受操控指令影响的视频帧)。也就是说,服务器在当前视频帧的编码过程中接收到操控指令,会根据该操控指令编码下一帧视频帧。

s703、服务器在视频帧中附带第一时间值。

本申请实施例中,为了便于终端识别或确定操控指令所影响的视频帧,服务器需要在编码结束的视频帧中附带第一时间值。

具体实现中,终端可以在视频流传输协议(用于发送附带有第一时间值的视频帧给终端的协议)中增加字段用于附带第一时间值。

可选地,在当前视频帧的编码过程中接收到至少两条操控指令时,服务器只处理第一条操控指令(即所有操控指令中最先接收到的那条指令),即下一帧视频帧编码结束后,只将第一条操控指令对应的第一时间值附带到编码后的下一帧视频帧中,而不附带其他操控指令对应的第一时间值,避免操控指令对同一帧视频帧的影响重复,详见图3的相应说明。

s704、服务器将附带有第一时间值的视频帧返回给终端。

本申请实施例中,服务器中附带有第一时间值的视频帧可以是基于视频流(串流)的视频帧,该视频帧可通过rtsp、rtp、rtcp、http等视频流传输协议返回给终端接收。可选地,本申请实施例可采用rtcp视频流传输协议来传输视频流,rtcp协议是基于tcp(即传输控制协议)的视频流传输协议,其在传输层采用了tcp这一可靠的传输控制协议来进行视频流传输,保证了视频流数据是按序到达终端(便于终端识别或统计)的,省去了其他视频流协议需要业务逻辑层对视频流数据进行重新排序的操作,更加可靠和高效。

s705、服务器接收终端上传的云游戏响应延迟。

本申请实施例中,终端通过前述用于终端的方法实施例确定云游戏的响应延迟后,可以通过网络将云游戏的响应延迟上传给服务器,服务器收到该响应延迟后可以在服务器中显示给用户观看,便于用户根据该响应延迟后进行进一步数据统计、分析和优化。具体地,在云游戏的开发测试应用中,开发人员可以通过服务器获取本申请实施例终端确定的云游戏的响应延迟来进行游戏性能测试,并可根据测试的结果对云游戏的设计指标或参数进行调整或优化。而在实际的运维应用中,云游戏的游戏运营商、云游戏的运维人员等用户可以通过服务器获取本申请实施例确定的云游戏的响应延迟来在现网环境的云游戏产品中统计实际用户的云游戏响应延迟指标数据、协助定位用户卡顿等问题,还可以根据此响应延迟数据来对云游戏进行优化,如针对延迟较高的地区或运营商优化接入部署。

基于上述检测云游戏响应延迟的系统的实施例的描述,本发明实施例提供一种检测云游戏响应延迟的方法,该方法可以应用于图2所示的检测云游戏响应延迟的系统中,具体可以由图2所示的终端10和服务器20交互执行。请参见图8,该检测云游戏响应延迟的过程可包括以下步骤s801-s807:

s801、终端发送操控指令和第一时间值给服务器。

本申请实施例中,操控指令是终端根据玩家或用户输入的控制操作(如移动、旋转、开启战斗等)生成的;第一时间值是终端发送操控指令给服务器的时间值(即终端当前的时间值),第一时间值可以是时间戳、时刻等时间的数值。

而为了便于服务器能确定操控指令与第一时间值的对应关系,终端可以将第一时间值附带到操控指令中再发送给服务器。具体实现中,终端可以在指令协议(用于发送操控指令给服务器的协议)中增加字段用于附带第一时间值。可选地,终端还可以记录或保存操控指令与对应的第一时间值。

s802、服务器根据操控指得到视频帧。

服务器接收的操控指令不会影响正在编码的当前视频帧,因为正在编码的视频帧已经完成渲染并开始编码,说明其画面已经确定不再更改。而根据先验知识,要在视频帧中附带信息,需要先完成视频编码操作,故本申请实施例可以先缓存第一时间值,直到下一帧受操控指令影响的视频帧编码结束再进行附带操作。缓存的方式可以采用缓存变量的缓存方式或采用队列的缓存方式。

在一实施方式中,服务器可以采用缓存变量的方式缓存第一时间值,具体实现过程如下:

首先,服务器接收终端发送的操控指令后,判断该操作指令所附带的第一时间值是否有效(具体判断方式与视频的传输协议有关,一般采用二进制协议传输视频数据,所以可用整形字段表示第一时间值,当第一时间值大于0则有效,等于0则无效),若无效,则不需要缓存,若有效,则进行下一步的判断操作;

接着,服务器判断下一帧编码帧缓存变量(用于缓存当前视频帧在编码时收到的第一时间值)是否已保存有时间值,若已保存有时间值(如下一帧编码帧缓存变量不为0),则表示下一帧视频帧已被之前的操控指令影响,则当前操控指令对应的第一时间值可丢弃不处理(基于图3的假设);若未保存有时间值(如下一帧编码帧缓存变量为0),则将当前操控指令对应的第一时间值保存到下一帧编码帧缓存变量中,等待下一帧视频帧编码结束后进行附带操作。

而服务器采用队列的方式缓存第一时间值的具体实现方式与采用缓存变量的方式缓存不同之处是,队列中使用元素来代替缓存变量,即用于缓存当前视频帧在编码时收到的第一时间值是下一帧编码帧对应的元素,其他实现过程类似,具体实现过程如下:

首先,服务器接收终端发送的操控指令后,判断该操作指令所附带的第一时间值是否有效(具体判断方式与视频的传输协议有关,一般采用二进制协议传输视频数据,所以可用整形字段表示第一时间值,当第一时间值大于0则有效,等于0则无效),若无效,则不需要缓存,若有效,则进行下一步的判断操作;

接着,服务器判断下一帧编码帧对应的元素(用于缓存当前视频帧在编码时收到的第一时间值)是否已保存有时间值,若已保存有时间值(如一帧编码帧对应的元素值不为0),则表示下一帧视频帧已被之前的操控指令影响,则当前操控指令对应的第一时间值可丢弃不处理(基于图3的假设);若未保存有时间值(如一帧编码帧对应的元素值为0),则将当前操控指令对应的第一时间值保存到一帧编码帧对应的元素值中,等待下一帧视频帧编码结束后进行附带操作。

本申请实施例中,服务器中运行的游戏客户端会根据操控指令渲染对应的画面,得到对应的视频流数据。为了符合服务器和游戏客户端流畅和快速响应的假设,操控指令服务器会尽快影响游戏画面,所以本申请实施例可采取在当前编码的下一帧(即下一帧视频帧)开始进行画面渲染的方式。得到对应的视频流数据后,服务器接着对其进行视频编码,得到编码后的受操控指令影响的视频帧。也就是说,服务器在当前视频帧的编码过程中接收到操控指令,会根据该操控指令编码下一帧视频帧。

s803、服务器在视频帧中附带第一时间值。

本申请实施例中,为了便于终端识别或确定操控指令所影响的视频帧,服务器需要在编码后的视频帧中附带第一时间值。

具体实现中,终端可以在视频流传输协议(用于发送附带有第一时间值的视频帧给终端的协议)中增加字段用于附带第一时间值。

可选地,在当前视频帧的编码过程中接收到至少两条操控指令时,服务器只处理第一条操控指令(即所有操控指令中最先接收到的那条指令),即下一帧视频帧编码结束后,只将第一条操控指令对应的第一时间值附带到编码后的下一帧视频帧中,而不附带其他操控指令对应的第一时间值,避免操控指令对同一帧视频帧的影响重复,详见图3的相应说明。

s804、服务器将附带有第一时间值的视频帧返回给终端。

本申请实施例中,服务器中附带有第一时间值的视频帧可以是基于视频流(串流)的视频帧,该视频帧可通过rtsp、rtp、rtcp、http等视频流传输协议返回给终端接收。可选地,本申请实施例可采用rtcp视频流传输协议来传输视频流,rtcp协议是基于tcp(即传输控制协议)的视频流传输协议,其在传输层采用了tcp这一可靠的传输控制协议来进行视频流传输,保证了视频流数据是按序到达终端(便于终端识别或统计)的,省去了其他视频流协议需要业务逻辑层对视频流数据进行重新排序的操作,更加可靠和高效。

s805、终端根据返回的所述视频帧获取第二时间值。

本申请实施例中,第二时间值可以是时间戳、时刻等时间的数值。终端接收到服务器返回的视频帧后,记录当前接收到该视频帧的时间值,从该视频帧中解码出所附带的第一时间值,并确定解码出的第一时间值是否有效,若有效,则执行获取第二时间值的步骤,反之,则结束流程。

获取第二时间值的步骤又可以分为以下三种情况来实现:

a、终端能跟踪该视频帧的解码渲染时间(即确定终端的该视频帧在什么时候完成解码和渲染),则获取完成解码并渲染该视频帧的时间值作为第二时间值;

b、终端不能跟踪该视频帧的解码渲染时间但能获取该视频帧的播放延迟(即播放器缓冲区长度),则获取接收到该视频帧的时间值和该播放延迟并将二者之和(即播放该视频帧的时间值)作为第二时间值;

c、终端既不能跟踪该视频帧的解码渲染时间也不能获取该视频帧的播放延迟,则获取接收到该视频帧的时间值作为第二时间值。

s806、终端根据第一时间值与第二时间值的差值确定云游戏的响应延迟。

本申请实施例中,终端根据服务器返回的视频帧中获取到第一时间值和第二时间值后,可通过求取第一时间值与第二时间值的差值的方式来得到云游戏的响应延迟,十分方便。例如,假设终端获取到的第一时间值为10ms(相对于预设的时间零点来说),终端获取到的第二时间值为完成解码并渲染该视频帧的时间值,且第二时间值为102ms(相对于预设的时间零点来说),则云游戏响应延迟=102-10=92ms。上述云游戏响应延迟计算过程同样适用于第二时间值为播放完该视频帧的时间值或接收到该视频帧的时间值时的情形。

终端得到的云游戏的响应延迟,可直接显示在终端的游戏画面中,也可以通过网络上传给服务器进行进一步数据统计、分析和优化。例如,图5示出了在云游戏(如王者荣耀云游戏)终端的游戏登录界面中显示终端得到的云游戏的响应延迟示意图。

游戏本身的响应延迟(即游戏客户端的触控响应延迟)对云游戏的响应延迟也有一定影响,本申请实施例还可以从服务器获取到游戏客户端的触控响应延迟。具体地,服务器从游戏客户端的相应接口获取到游戏客户端的触控响应延迟后,可将该触控响应延迟也附带到编码后的视频帧中发送给终端,终端接收到该视频帧进行解码即可得到游戏客户端的触控响应延迟。获得游戏客户端的触控响应延迟后,可将该触控响应延迟与计算出来的云游戏的响应延迟在终端的显示界面中显示出来,这样终端的用户就可以同时看到云游戏的响应延迟和游戏本身的响应延迟(即游戏客户端的触控响应延迟),提供了更丰富的延迟细节信息,使得用户可以直观得知游戏本身的响应延迟对云游戏的响应延迟有多大的影响。

在云游戏的开发测试应用中,开发人员可以利用本申请实施例确定的云游戏的响应延迟来进行游戏性能测试,并根据测试的结果对云游戏的设计指标或参数进行调整或优化。而在实际的运维应用中,云游戏的游戏运营商、云游戏的运维人员等用户可以利用本申请实施例确定的云游戏的响应延迟来在现网环境的云游戏产品中统计实际用户的云游戏响应延迟指标数据、协助定位用户卡顿等问题,还可以根据此响应延迟数据来对云游戏进行优化,如针对延迟较高的地区或运营商优化接入部署。

由上述内容可知,本申请实施例通过在终端发送的操控指令中附带第一时间值和在服务器返回的受操控指令影响的视频帧中附带第一时间值的方式,结合终端自身的解码渲染时间、播放时间或接收时间获取第二时间值后即可测量出云游戏响应延迟,不再需要高速摄像机以及视频分析工具,从而可以在实验室环境外的实际云游戏中以非常低的成本实现相对精确的云游戏响应延迟的测量。本申请实施例的云游戏响应延迟测量方法,适用于各种终端云游戏方案(如web云游戏、androidapp云游戏、iosapp云游戏、pc客户端云游戏等),而且实现成本非常低,终端和服务器都不需要增加额外的计算或存储资源。

以第一时间值为操控指令对应的时间戳(简称操控时间戳),服务器为云端服务器(简称云端),缓存采用缓存变量的方式缓存为例,图9示出了采用图8的方法时的一个具体应用实施例的流程图。如图9所示,该具体应用实施例的实现流程包括以下步骤:

步骤1.1.终端发送操控指令时先在指令协议中附带终端当前的时间戳(即操控时间戳),再发送给云端。可选地,终端可以在操控指令协议增加字段用于附带操控时间戳。

步骤1.2.云端收到操控时间戳后执行云端缓存操控时间戳流程。

步骤1.2主要包含以下两方面的内容:

1.2.1.变量定义与初始化

本具体实施例的变量定义如下:

当前编码帧缓存操控时间戳:currentts

下一帧编码帧缓存操控时间戳:nextts

另外,流程开始前所有变量初始化为0,即有:currentts=0,nextts=0

1.2.2.云端缓存操控时间戳流程

具体地,参见图10,云端缓存操控时间戳流程具体包括:

步骤1.2.2.1.云端接收到终端的操控指令,判断是否附带有效操控时间戳(有效操控时间戳代表该段时间有操作指令,其具体判定方式与视频的传输协议有关,一般采用二进制协议传输视频数据,所以用整形字段表示时间戳,操控时间戳大于0为有效操控时间戳,0表示操控时间戳为空,说明这段时间没有操控指令);

步骤1.2.2.2.如果判定附带无效操控时间戳则不需要处理;

步骤1.2.2.3.如果判定附带有效操控时间戳,则判断是否已保存有下一帧编码帧缓存操控时间戳(与有效操控时间戳的判定类似,如时间戳大于0表示已保存);

因为编码上一帧视频帧的过程中可能收到多条操控指令(如图3所示),这些操控指令都影响的是下一帧视频帧,所以应该对这些操控指令的时间戳进行合并处理,保留第一个接收到的时间戳而舍弃其他时间戳,这样只需要2个缓存变量就可以实现操控时间戳的缓存,所以需要判断是否已保存有下一帧编码帧缓存操控时间戳。另外,把这2个缓存变量用队列替代也是一样的(队列数据要合并处理,保持队列最多只有2个元素)。

步骤1.2.2.3.1.如果已保存有下一帧编码帧缓存操控时间戳,表示下一帧已被之前的操控指令影响,当前操控时间戳可丢弃不处理;

步骤1.2.2.3.2.如果未保存下一帧编码帧缓存操控时间戳,表示下一帧受当前操控指令影响,将当前操控指令附带的操控时间戳保存为下一帧编码帧缓存操控时间戳。

步骤1.3.云端执行视频编码附带操控时间戳流程。

如图11所示,云端执行视频编码附带操控时间戳流程具体包括:

步骤1.3.1.视频编码完成后,将当前编码帧缓存操控时间戳附带到当前视频帧并传输给终端。

步骤1.3.2.执行重置变量逻辑:将当前编码帧缓存操控时间戳设置为下一帧编码帧缓存操控时间戳,再将下一帧编码帧缓存操控时间戳重置为0,如图11所示。

步骤1.4.云端发送附带操控时间戳的视频帧到终端,终端执行计算响应延迟流程。

具体地,如图12所示,终端执行计算响应延迟流程具体包括:

步骤1.4.1.终端接收到云端发送的视频帧,计算出当前接收的时间戳(简称接收时间戳),并解析出视频帧附带的操控时间戳,然后判断解析出的操控时间戳是否有效(如前述的操控时间戳大于0为有效)。

步骤1.4.1.1如果解析出的操控时间戳无效(如前述的操控时间戳等于0为无效),则结束流程。

步骤1.4.1.2.如果解析出的操控时间戳有效,再判断终端是否支持跟踪视频帧的解码渲染时间(即终端能否自动确定当前视频帧在什么时候完成解码和渲染)。

步骤1.4.1.2.1.如果终端支持跟踪视频帧的解码渲染时间,则在当前帧完成解码渲染后,计算出云游戏的响应延迟=渲染完成时间戳-操控时间戳。

步骤1.4.1.2.2.如果终端不支持跟踪视频帧的解码渲染时间,则判断终端是否支持获取视频的播放延迟(即播放器缓冲区长度)。

步骤1.4.1.2.2.1.如果终端支持获取视频的播放延迟,计算出云游戏的响应延迟=接收时间戳-操控时间戳 播放延迟。

步骤1.4.1.2.2.2.如果终端不支持获取视频的播放延迟,计算出云游戏的响应延迟=接收时间戳-操控时间戳。这种情况下的响应延迟只能代表网络部分延迟。

基于上述检测云游戏响应延迟的方法实施例的描述,本申请实施例还提供了一种检测云游戏响应延迟的装置,该检测云游戏响应延迟的装置可以应用于图2所示的检测云游戏响应延迟的系统中,具体地该检测云游戏响应延迟的装置可运行于图2所示的终端10。参见图13,该检测云游戏响应延迟的装置具体包括:

发送模块1301,用于发送操控指令和第一时间值给服务器,所述第一时间值为发送所述操控指令的时间值;

第一接收模块1302,用于接收所述服务器返回的附带有所述第一时间值的视频帧;

第一获取模块1303,用于根据所述视频帧获取第二时间值,所述第二时间值是完成解码并渲染所述视频帧的时间值、播放完所述视频帧的时间值或接收到所述视频帧的时间值其中一种;

确定模块1304,用于根据所述第一时间值与所述第二时间值的差值确定云游戏的响应延迟。

本申请实施例是与图6应用于终端的方法实施例一一对应的装置实施例,图6应用于终端的方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与图6应用于终端的方法实施例相同,并且达到的有益效果与图6应用于终端的方法实施例所达到的有益效果也相同。

基于上述检测云游戏响应延迟的方法实施例的描述,本申请实施例还提供了一种检测云游戏响应延迟的装置,该检测云游戏响应延迟的装置可以应用于图2所示的检测云游戏响应延迟的系统中,具体地该检测云游戏响应延迟的装置可运行于图2所示的服务器20。参见图14,该检测云游戏响应延迟的装置具体包括:

第二接收模块1401,用于接收终端发送的操控指令和第一时间值,所述第一时间值为所述终端发送所述操控指令的时间值;

第二获取模块1402,用于根据所述操控指令得到视频帧;

附带模块1403,用于在所述视频帧中附带所述第一时间值;

返回模块1404,用于将附带有所述第一时间值的所述视频帧返回给所述终端;

第三接收模块1405,用于接收所述终端根据所述第一时间值与第二时间值的差值确定的云游戏的响应延迟,所述第二时间值是所述终端完成解码并渲染所述视频帧的时间值、所述终端播放完所述视频帧的时间值或所述终端接收到所述视频帧的时间值其中一种。

本申请实施例是与图7应用于服务器的方法实施例一一对应的装置实施例,图7应用于服务器的方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与图7应用于服务器的方法实施例相同,并且达到的有益效果与图7应用于服务器的方法实施例所达到的有益效果也相同。

基于上述检测云游戏响应延迟的方法实施例和装置实施例的描述,本申请实施例还公开了一种终端,该终端可应用于图2所示的检测云游戏响应延迟的系统中。请参见图15,该终端具体包括:

至少一个处理器1501;

至少一个存储器1502,用于存储至少一条指令、至少一段程序、代码集或指令集;

当所述至少一条指令、至少一段程序、代码集或指令集被所述至少一个处理器1501执行,使得所述至少一个处理器1501实现图5所示的检测云游戏响应延迟的方法。

图6应用于终端的方法实施例中的内容均适用于本装置实施例中,本终端实施例所具体实现的功能与图6应用于终端的方法实施例相同,并且达到的有益效果与图6应用于终端的方法实施例所达到的有益效果也相同。

基于上述检测云游戏响应延迟的方法实施例和装置实施例的描述,本申请实施例还公开了一种服务器,该服务器可应用于图2所示的检测云游戏响应延迟的系统中。请参见图16,该服务器具体包括:

至少一个处理器1601;

至少一个存储器1602,用于存储至少一条指令、至少一段程序、代码集或指令集;

当所述至少一条指令、至少一段程序、代码集或指令集被所述至少一个处理器1601执行,使得所述至少一个处理器1601实现图7所示的检测云游戏响应延迟的方法。

图7应用于服务器的方法实施例中的内容均适用于本服务器实施例中,本服务器实施例所具体实现的功能与图7应用于服务器的方法实施例相同,并且达到的有益效果与图7应用于服务器的方法实施例所达到的有益效果也相同。

本申请实施例还公开了一种计算机可读存储介质,其上存储有处理器可执行的至少一条指令、至少一段程序、代码集或指令集,所述处理器可执行的至少一条指令、至少一段程序、代码集或指令集在被处理器执行时用于实现图6或图7所示的检测云游戏响应延迟的方法。

可以理解的是,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。


技术特征:

1.一种检测云游戏响应延迟的方法,其特征在于,包括:

发送操控指令和第一时间值给服务器,所述第一时间值为发送所述操控指令的时间值;

接收所述服务器返回的附带有所述第一时间值的视频帧;

根据所述视频帧获取第二时间值,所述第二时间值是完成解码并渲染所述视频帧的时间值、播放完所述视频帧的时间值或接收到所述视频帧的时间值其中一种;

根据所述第一时间值与所述第二时间值的差值确定云游戏的响应延迟。

2.根据权利要求1所述的检测云游戏响应延迟的方法,其特征在于,所述根据所述视频帧获取第二时间值这一步骤,包括以下至少之一:

获取完成解码并渲染所述视频帧的时间值作为第二时间值;或

获取接收到所述视频帧的时间值和视频帧的播放延迟,进而确定播放完所述视频帧的时间值作为第二时间值;或

获取接收到所述视频帧的时间值作为第二时间值。

3.根据权利要求1所述的检测云游戏响应延迟的方法,其特征在于,所述根据所述视频帧获取第二时间值这一步骤,包括:

从所述视频帧中获取所述第一时间值;

若获取的所述第一时间值有效,则获取所述第二时间值。

4.根据权利要求1-3中任一项所述的检测云游戏响应延迟的方法,其特征在于,所述视频帧还附带有在服务器运行的游戏客户端的触控响应延迟。

5.一种检测云游戏响应延迟的方法,其特征在于,包括:

终端发送操控指令和第一时间值给服务器,所述第一时间值为所述终端发送所述操控指令的时间值;

所述服务器根据所述操控指令得到视频帧;

所述服务器在所述视频帧中附带所述第一时间值;

所述服务器将附带有所述第一时间值的所述视频帧返回给所述终端;

所述终端根据返回的所述视频帧获取第二时间值,所述第二时间值是所述终端完成解码并渲染所述视频帧的时间值、所述终端播放完所述视频帧的时间值或所述终端接收到所述视频帧的时间值其中一种;

所述终端根据所述第一时间值与所述第二时间值的差值确定云游戏的响应延迟。

6.根据权利要求5所述的检测云游戏响应延迟的方法,其特征在于,所述服务器根据所述操控指令得到视频帧这一步骤,包括:

所述服务器在当前视频帧的编码过程中接收到所述操控指令,并缓存所述第一时间值;

所述服务器根据所述操控指令编码下一帧视频帧。

7.根据权利要求5所述的检测云游戏响应延迟的方法,其特征在于,所述服务器在所述视频帧中附带所述第一时间值这一步骤,包括:

所述服务器在当前视频帧中接收到所述操控指令,并将所述第一时间值附带到下一帧视频帧中。

8.根据权利要求7所述的检测云游戏响应延迟的方法,其特征在于,所述当前视频帧中接收到至少两条操控指令,则只处理第一条所述操控指令。

9.根据权利要求6-8中任一项所述的检测云游戏响应延迟的方法,其特征在于,还包括通过服务器获取游戏客户端的触控响应延迟并附带于所述视频帧中的步骤。

10.一种检测云游戏响应延迟的方法,其特征在于,包括:

接收终端发送的操控指令和第一时间值,所述第一时间值为所述终端发送所述操控指令的时间值;

根据所述操控指令得到视频帧;

在所述视频帧中附带所述第一时间值;

将附带有所述第一时间值的所述视频帧返回给所述终端;

接收所述终端根据所述第一时间值与第二时间值的差值确定的云游戏的响应延迟,所述第二时间值是所述终端完成解码并渲染所述视频帧的时间值、所述终端播放完所述视频帧的时间值或所述终端接收到所述视频帧的时间值其中一种。

11.一种检测云游戏响应延迟的装置,其特征在于,包括:

发送模块,用于发送操控指令和第一时间值给服务器,所述第一时间值为发送所述操控指令的时间值;

第一接收模块,用于接收所述服务器返回的附带有所述第一时间值的视频帧;

第一获取模块,用于根据所述视频帧获取第二时间值,所述第二时间值是完成解码并渲染所述视频帧的时间值、播放完所述视频帧的时间值或接收到所述视频帧的时间值其中一种;

确定模块,用于根据所述第一时间值与所述第二时间值的差值确定云游戏的响应延迟。

12.一种检测云游戏响应延迟的装置,其特征在于,包括:

第二接收模块,用于接收终端发送的操控指令和第一时间值,所述第一时间值为所述终端发送所述操控指令的时间值;

第二获取模块,用于根据所述操控指令得到视频帧;

附带模块,用于在所述视频帧中附带所述第一时间值;

返回模块,用于将附带有所述第一时间值的所述视频帧返回给所述终端;

第三接收模块,用于接收所述终端根据所述第一时间值与第二时间值的差值确定的云游戏的响应延迟,所述第二时间值是所述终端完成解码并渲染所述视频帧的时间值、所述终端播放完所述视频帧的时间值或所述终端接收到所述视频帧的时间值其中一种。

13.一种检测云游戏响应延迟的系统,包括终端和服务器,其特征在于,

所述终端,用于发送操控指令和第一时间值给所述服务器,并接收所述服务器返回的附带有所述第一时间值的视频帧,根据所述视频帧获取第二时间值,根据所述第一时间值与所述第二时间值的差值确定云游戏的响应延迟;

所述服务器,用于接收终端发送的操控指令和第一时间值,根据所述操控指令得到视频帧,在所述视频帧中附带所述第一时间值,将附带有所述第一时间值的所述视频帧返回给所述终端,接收所述终端根据所述第一时间值与第二时间值的差值确定的云游戏的响应延迟;

所述第一时间值为所述终端发送所述操控指令的时间值,所述第二时间值是所述终端完成解码并渲染所述视频帧的时间值、所述终端播放完所述视频帧的时间值或所述终端接收到所述视频帧的时间值其中一种。

14.一种终端,其特征在于:包括:

至少一个处理器;

至少一个存储器,用于存储至少一条指令、至少一段程序、代码集或指令集;

当所述至少一条指令、至少一段程序、代码集或指令集被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-4任一项所述的检测云游戏响应延迟的方法。

15.一种服务器,其特征在于:包括:

至少一个处理器;

至少一个存储器,用于存储至少一条指令、至少一段程序、代码集或指令集;

当所述至少一条指令、至少一段程序、代码集或指令集被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求5-9任一项所述的检测云游戏响应延迟的方法。

技术总结
本发明公开了检测云游戏响应延迟的方法、装置、系统、终端和服务器,方法包括:发送操控指令和第一时间值给服务器;第一时间值为发送所述操控指令的时间值;接收服务器返回的附带有第一时间值的视频帧;根据视频帧获取第二时间值,第二时间值包括接收到视频帧的时间值、播放视频帧的时间值或者完成解码并渲染视频帧的时间值;根据第一时间值与第二时间值的差值确定云游戏的响应延迟。本发明通过在终端发送的操控指令中附带第一时间值和在服务器返回的编码后视频帧中附带第一时间值的方式,结合终端自身的解码渲染时间、播放时间或接收时间获取第二时间值后即可测量出云游戏响应延迟,测量成本低,且对测量环境的要求低,可广泛应用于计算机领域。

技术研发人员:朱春林;许斌盛
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2020.01.10
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-56508.html

最新回复(0)