掌桥专利:专业的专利平台
掌桥专利
首页

一种云游戏的处理方法、装置、设备及存储介质

文献发布时间:2023-06-19 11:14:36


一种云游戏的处理方法、装置、设备及存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及云游戏技术领域,具体涉及一种云游戏的处理方法、一种云游戏的处理装置、一种云游戏的处理设备以及一种计算机可读存储介质。

背景技术

随着计算机技术的飞速发展,云游戏在游戏市场中占据着越来越重要的地位。云游戏是指以云计算为基础的游戏方式,云游戏的大致流程为:用户使用终端请求启动云游戏,云游戏则在云端启动一个云游戏实例,用户通过终端登录该云游戏实例对云游戏实例进行操作,即实现了云游戏的游玩。在云游戏的运行模式下,所有的云游戏实例都在云游戏的服务器中运行,云游戏的服务器对渲染得到的游戏画面进行压缩后通过网络传送给用户的终端进行呈现;当终端检测到用户的操作事件,例如触屏事件、键盘鼠标事件等,则将该操作事件通过网络传输给云游戏的服务器,达到操作云游戏的目的。目前在云游戏使用场景中,一般只允许用户操作自己所登录的云游戏实例,这使得云游戏操作模式缺乏灵活性和多样性。

发明内容

本申请实施例提供了一种云游戏的处理方法、装置、设备及存储介质,可以提升云游戏操作模式的灵活性和多样性。

一方面,本申请实施例提供一种云游戏的处理方法,该云游戏的处理方法包括:

接收第二客户端针对云游戏实例的接入请求,云游戏实例是根据第一客户端针对云游戏的游玩请求而创建的,第一客户端与云游戏实例的第一路流处理资源相绑定,且云游戏实例与第一客户端基于第一路流处理资源进行数据传输;

响应于第二客户端的接入请求,创建云游戏实例的第二路流处理资源;

将第二路流处理资源与第二客户端进行绑定;以及,在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输。

另一方面,本申请实施例提供一种云游戏的处理装置,该云游戏的处理装置包括媒体编码模块和媒体传输模块;其中:

媒体传输模块,用于接收第二客户端针对云游戏实例的接入请求,云游戏实例是根据第一客户端针对云游戏的游玩请求而创建的,第一客户端与云游戏实例的第一路流处理资源相绑定,且云游戏实例与第一客户端基于第一路流处理资源进行数据传输;

媒体编码模块和媒体传输模块,均用于响应于第二客户端的接入请求,创建云游戏实例的第二路流处理资源;

媒体传输模块,还用于将第二路流处理资源与第二客户端进行绑定;以及,在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输。

在一种实现方式中,第二客户端的接入请求中携带第二客户端的用户标识和第一接入策略,第一接入策略用于表示第二客户端的类型为使用者类型;

媒体编码模块和媒体传输模块,均用于响应于第二客户端的接入请求,创建云游戏实施例的第二路流处理资源时,具体用于执行如下步骤:

根据第二客户端的用户标识,为第二客户端分配接入会话标识;

根据第一接入策略,实时生成云游戏实例的第二路流处理资源及第二路流处理资源的标识。

在一种实现方式中,媒体传输模块,用于将第二路流处理资源与第二客户端进行绑定时,具体用于执行如下步骤:

在第二客户端的接入会话标识与第二路流处理资源的标识之间建立绑定关系。

在一种实现方式中,媒体传输模块,还用于执行如下步骤:

接收第三客户端针对云游戏实例的接入请求,第三客户端的接入请求中携带第三客户端的用户标识和第二接入策略,第二接入策略用于表示第三客户端的类型为观察者类型;

响应于第三客户端的接入请求,从第一路流处理资源和第二路流处理资源中选择一路流处理资源;

将所选择的一路流处理资源与第三客户端进行绑定;以及,在第三客户端与云游戏实例之间基于所选择的一路流处理资源进行数据传输。

在一种实现方式中,媒体传输模块用于在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输时,具体用于执行如下步骤:

获取云游戏实例中的媒体流;

基于第二路流处理资源将媒体流发送至第二客户端;以及,当第二客户端请求对云游戏实例进行操作时,基于第二路流处理资源接收第二客户端的操作数据。

在一种实现方式中,媒体传输模块还用于执行如下步骤:

基于第二路流处理资源向第二客户端发送网络探测包,并接收第二客户端反馈的网络信息;以及,根据网络信息调整网络探测包的数据量,并调整第二路流处理资源的传输参数。

在一种实现方式中,媒体传输模块,用于根据网络信息调整网络探测包的数据量,并调整第二路流处理资源的传输参数时,具体用于执行如下步骤:

若网络信息指示网络已发生拥塞,则减小网络探测包的数据量,并对第二路流处理资源的传输参数进行第一调整;

若网络信息指示网络未发生拥塞,则增加网络探测包的数的量,并对第二路流处理资源的传输参数进行第二调整;

其中,第一调整包括以下至少一种:降低第二路流处理资源中的媒体编码码率,降低第二路流处理资源中的媒体帧的帧率,丢弃第二路流处理资源中的部分媒体帧;

第二调整包括以下至少一种:提高第二路流处理资源中的媒体编码码率,提高第二路流处理资源中的媒体帧的帧率。

在一种实现方式中,媒体传输模块还用于执行如下步骤:根据第一客户端的权限设置请求为第二客户端配置权限,权限包括以下任一种:针对云游戏实例的操作权限,针对云游戏实例的浏览权限,针对云游戏实施例的操作权限和浏览权限;

媒体编码模块还用于执行如下步骤:若第二客户端不具备针对云游戏实例的操作权限,则当基于第二路流处理资源接收到第二客户端的操作数据时,丢弃第二客户端的操作数据。

在一种实现方式中,第一客户端与云游戏实例中的第一操作控件相映射,第二客户端与云游戏实例中的第二操作控件相映射;

当媒体传输模块基于第一路流处理资源接收到第一客户端的操作数据时,媒体编码模块还用于执行如下步骤:将第一客户端的操作数据注入至第一操作控件中,以控制第一操作控件操作云游戏实例;

当媒体传输模块基于第二路流处理资源接收到第二客户端的操作数据时,媒体编码模块还用于执行如下步骤:将第二客户端的操作数据注入至第二操作控件中,以控制第二操作控件操作云游戏实例。

在一种实现方式中,媒体传输模块还用于执行如下步骤:基于第一路流处理资源接收第一客户端发送的设备分辨率;

媒体编码模块还用于执行如下步骤:根据设备分辨率设置云游戏实例的容器窗口分辨率;

媒体传输模块还用于执行如下步骤:将容器窗口分辨率基于第一路流处理资源发送至第一客户端。

在一种实现方式中,媒体传输模块,还用于执行如下步骤:当第二客户端接入至云游戏实例后,基于第二路流处理资源向第二客户端发送容器窗口分辨率;

基于第二路流处理资源接收第二客户端发送的分辨率设置请求,分辨率设置请求中携带第二客户端请求设置的编码分辨率;

根据容器窗口分辨率对请求设置的编码分辨率进行修正;

媒体编码模块,还用于执行如下步骤:采用修正后的编码分辨率对传输的媒体流进行编码处理。

在一种实现方式中,媒体传输模块还用于执行如下步骤:接收第一客户端针对云游戏实例的分享请求;

响应于第一客户端的分享请求,向第一客户端返回云游戏实例的分享口令,以使第一客户端将分享口令分享至除第一客户端之外的其他客户端;分享口令包含云游戏实例的标识及云游戏实例的登录密码;

其中,第二客户端的接入请求是在第二客户端获得分享口令之后,通过分享口令触发发送的。

另一方面,本申请实施例提供一种云游戏的处理设备,该云游戏的处理设备包括:

处理器,适于实现计算机程序;以及,计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序适于由处理器加载并执行上述的云游戏的处理方法。

另一方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被计算机设备的处理器读取并执行时,使得计算机设备执行上述的云游戏的处理方法。

另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的云游戏的处理方法。

本申请实施例中,第一客户端针对云游戏发起游玩请求并创建云游戏实例时,会为该第一客户端分配云游戏实例的第一路流处理资源,并且该第一客户端与该第一路流处理资源相绑定,云游戏实例与第一客户端之间基于该第一路流处理资源进行数据传输;第二客户端可以请求接入至由第一客户端请求创建的云游戏实例中,响应于第二客户端的接入请求,会为第二客户端分配云游戏实例的第二路流处理资源,将第二路流处理资源与第二客户端进行绑定,第二客户端与云游戏实例之间则可基于第二路流处理资源进行数据传输。由此可见,本申请实施例支持对同一个云游戏实例的多路操作,即允许多个客户端(如第一客户端和第二客户端)接入并操作同一个云游戏实例,有效提升了云游戏操作模式的灵活性与多样性。另外,接入至同一个云游戏实例的每个客户端均各自绑定云游戏实例的一路单独的流处理资源,并基于各自绑定的单独的流处理资源来进行数据传输,这样就有利于基于每路流处理资源来分别对各个客户端进行有针对性地、独立地编码流控和质量控制,并且由于各路流处理资源之间相互独立、互不影响,从而能够在客户端与云游戏实例之间进行高效且稳定地数据传输。

附图说明

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

图1示出了本申请一个示例性实施例提供的一种云游戏的处理方案示意图;

图2示出了本申请另一个示例性实施例提供的一种云游戏的处理方案示意图;

图3示出了本申请一个示例性实施例提供的一种云游戏的处理系统的架构示意图;

图4示出了本申请一个示例性实施例提供的一种云游戏的处理方法的流程示意图;

图5示出了本申请一个示例性实施例提供的一种客户端的接入请求的响应过程的流程示意图;

图6示出了本申请另一个示例性实施例提供的一种云游戏的处理方法的流程示意图;

图7a示出了本申请一个示例性实施例提供的一种分辨率的设置过程的流程示意图;

图7b示出了本申请一个示例性实施例提供的一种流量控制过程的流程示意图;

图7c示出了本申请一个示例性实施例提供的一种媒体帧丢弃过程的流程示意图;

图7d示出了本申请一个示例性实施例提供的一种权限控制过程的流程示意图;

图7e示出了本申请一个示例性实施例提供的一种多用户操作云游戏实例的流程示意图;

图8a示出了本申请一个示例性实施例提供的一种云游戏游玩操作的界面示意图;

图8b示出了本申请一个示例性实施例提供的一种云游戏分享操作的界面示意图;

图8c示出了本申请一个示例性实施例提供的一种云游戏实例的接入过程的流程示意图;

图9示出了本申请一个示例性实施例提供的一种云游戏的处理装置的结构示意图;

图10示出了本申请一个示例性实施例提供的一种云游戏的处理设备的结构示意图。

具体实施方式

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

为了能够更清楚地理解本申请实施例提供的技术方案,下面对本申请实施例涉及的技术术语进行介绍。

(1)云游戏(Cloud Gaming)。云游戏又可称为游戏点播(Gaming on Demand),是一种以云计算技术为基础的游戏方式。云游戏使图形处理与数据运算能力相对有限的轻端设备(Thin Client)能运行高品质游戏。在云游戏场景下,所有的云游戏实例都不在用户使用的终端中运行,而是在云游戏的服务器中运行;云游戏的服务器将云游戏实例中的游戏画面、游戏音频压缩编码为媒体流,然后通过网络将媒体流传输给用户使用的终端,媒体流中可以包括视频流和音频流。用户使用的终端无需拥有强大的图形处理与数据运算能力,仅仅需要拥有基本的流媒体播放能力,与获取用户输入的操作指令并将用户输入的操作指令发送给服务器的能力即可。

(2)云游戏实例。云游戏部署和运行在云游戏实例上,云游戏实例代表着虚拟计算资源,虚拟计算机资源可以包括:CPU(Central Processing Unit,中央处理器)、操作系统、网络、磁盘、GPU(Graphics Processing Unit,图形处理器)等基础计算组件的集合;也就是说,云游戏实例是成功启动、可实际操作的云游戏。在一种可行的实施方式中,云游戏实例可采用OpenGL ES技术进行游戏界面的渲染;OpenGL ES(OpenGL for Embedded Systems)是OpenGL(Open Graphics Library,开放式图像库)三维图形API(ApplicationProgramming Interface,应用程序编程接口)的子集;OpenGL ES中可以包括用于进行图形渲染的API。

(3)容器。容器是云游戏中的一种轻量级虚拟化方案,云游戏实例运行于容器中。云游戏的服务器中可以运行多个容器,每个容器对应一个云游戏实例。本申请实施例中,容器可以包括ARM服务器或Linux环境下Docker容器;Docker是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux(一种操作系统)或Windows(一种操作系统)机器上,可以实现虚拟化;ARM(AdvancedRISC Machine)服务器是一种RISC(Reduced Instruction Set Computing,精简指令集)微处理器,具有体积小、低功耗、低成本、高性能等特点。

(4)云计算(Cloud Computing)。云游戏以云计算技术为基础,云计算技术为云游戏提供强大的图形处理能力与数据运算能力。云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取、按需使用、随时扩展、按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台),一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在云计算资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。按照逻辑功能划分,在IaaS层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件(例如数据库、web容器等)运行的平台。SaaS为各式各样的业务软件(例如web门户网站、短信群发器等)。一般来说,SaaS和PaaS相对于IaaS是上层。

云计算可以是指IT(Internet Technology,互联网技术)基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(DistributedComputing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。

(5)区块链技术。区块链是分布式数据存储、P2P(Peer to Peer,点对点)传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链以密码学方式保证数据不可篡改和不可伪造。

为了能够更清楚地理解本申请实施例提供的技术方案,下面云游戏的实现原理进行介绍。云游戏的实现原理大致包括:①终端(例如手机、PC(个人计算机)等)中可包含云游戏的客户端,用户可以通过云游戏的客户端进入云游戏中进行游玩。②云游戏的服务器为参与云游戏的每一个客户端分配并运行一个容器;运行一个容器即启动一个云游戏实例,也就是说,用户游玩一次云游戏对应一个云游戏实例;例如,某个用户使用云游戏的客户端进入云游戏中进行游玩,这时云游戏的服务器会在云端启动并运行一个容器,也就是启动并运行一个云游戏实例,那么该云游戏实例与用户所使用的客户端相对应,由这个云游戏实例来为云游戏的客户端提供云游戏的游戏界面。③云游戏的客户端显示其对应的云游戏实例返回的游戏界面;当用户在游戏界面中执行各种操作时,云游戏的客户端会将这些操作产生的操作数据上报给云游戏的服务器,由云游戏的服务器在对应的云游戏实例中根据操作数据而刷新云游戏的游戏界面,再将刷新后的游戏界面返回至云游戏的客户端中进行显示。④当云游戏游玩结束后,云游戏的服务器中创建的云游戏实例被自动销毁。其中,用户在游戏界面中执行的操作可以包括移动操作、选择操作等等;例如,用户将游戏界面中的游戏角色从游戏界面中的第一位置移动至游戏界面中的第二位置;又如,用户选中(例如单击、双击、长按等等)游戏界面中的某个游戏控件。操作产生的操作数据可以包括操作触屏坐标;例如,用户将游戏界面中的游戏角色从游戏界面中的第一位置移动至游戏界面中的第二位置,那么此时操作数据可以包括第一位置在游戏界面中的坐标和第二位置在游戏界面中的坐标;又如,用户选中游戏界面中的某个游戏控件,那么此时操作数据可以包括游戏控件在游戏界面中的坐标。

为了提升云游戏操作模式的灵活性和多样性,本申请实施例进行了一些实践并提出了一系列在云游戏中支持对同一个云游戏实例进行多路操作的解决方案。

其中一种解决方案可参见图1,图1示出了本申请一个示例性实施例提供的一种云游戏的处理方案示意图。如图1所示,可在云游戏的同一个云游戏实例中接入多个(两个或两个以上)客户端,本申请实施例以接入第一客户端和第二客户端为例进行说明。第一客户端和第二客户端共享同一路流处理资源,云游戏实例基于该共享的流处理资源与第一客户端或第二客户端进行数据传输。此处,流处理资源是指对云游戏的游玩过程中所涉及的媒体流与操作数据等各类数据进行处理的工具(例如硬件或软件程序);流处理资源可包括编解码资源、传输控制资源等等;编解码资源可以用于进行编码处理或解码处理,传输控制资源可以用于进行数据传输、传输控制等等。编解码资源可以由媒体编码模块提供,传输控制资源可以由媒体传输模块提供。云游戏实例与第一客户端或第二客户端之间基于共享的流处理资源的数据传输过程可以包括:云游戏的服务器基于流处理资源将云游戏实例中的媒体流发送至第一客户端和第二客户端;当第一客户端请求对云游戏实例进行操作时,云游戏的服务器基于流处理资源接收第一客户端的操作数据;当第二客户端请求对云游戏实例进行操作时,云游戏的服务器基于流处理资源接收第二客户端的操作数据。

如图1所示,共享的流处理资源可以由媒体编码模块和媒体传输模块提供,媒体编码模块提供一路编解码资源,媒体传输模块提供一路传输控制资源;第一客户端与第二客户端共享同一路流处理资源,即第一客户端与第二客户端共享同一路编解码资源和同一路传输控制资源。其中,媒体编码模块可以用于采集云游戏实例中的媒体数据,媒体数据可以包括游戏画面和游戏音频;采集到云游戏实例中的媒体数据之后,媒体编码模块可以对采集到的媒体数据进行编码处理,得到媒体流,媒体流中可以包括视频流和音频流。然后,媒体传输模块可以用于将媒体流转发至第一客户端和第二客户端。当第一客户端对云游戏实例进行操作时,媒体传输模块可以将第一客户端的操作数据传输至媒体编码模块,由媒体编码模块将第一客户端的操作数据注入至云游戏实例中,达到对云游戏实例进行操作的目的。当第二客户端对云游戏实例进行操作时,媒体传输模块可以将第二客户端的操作数据传输至媒体编码模块,由媒体编码模块将第二客户端的操作数据注入至云游戏实例中,达到对云游戏实例进行操作的目的。图1所示的解决方案可以支持多个客户端接入云游戏的同一个云游戏实例,并支持对同一个云游戏实例进行多路操作,在一定程度上提高了云游戏操作模式的灵活性和多样性。但实践发现,接入云游戏实例的多个客户端共用同一路流处理资源,流处理资源被多个客户端共享,在网络高峰期多个客户端之间容易互相抢占资源,导致媒体流的传输过程产生延迟,并且媒体流的清晰度较低。

在图1所示的解决方案的基础上,本申请实施例又提出另一种解决方案,另一种解决方案可参见图2,图2示出了本申请另一个示例性实施例提供的一种云游戏的处理方案示意图,如图2所示,云游戏同样可以支持多个(两个或两个以上)客户端接入云游戏的同一个云游戏实例,并支持对同一个云游戏实例进行多路操作,本申请实施例以接入第一客户端和第二客户端为例进行说明。除此之外,接入至同一个云游戏实例的每个客户端均各自绑定云游戏实例的一路单独的流处理资源,并基于各自绑定的单独的流处理资源来进行数据传输。

对于第一客户端,接入云游戏实例的第一客户端绑定第一路流处理资源,在云游戏实例与第一客户端之间可以基于第一客户端绑定的第一路流处理资源进行数据传输;第一路流处理资源中可以包括单独的编解码资源和单独的传输控制资源,第一路流处理资源中的编解码资源可以由第一视频编码子模块提供,第一路流处理资源中的传输控制资源可以由第一媒体流传输子模块提供。云游戏实例与第一客户端之间基于第一路流处理资源的数据传输过程可以包括:第一视频编码子模块可以用于对从云游戏实例中采集得到的游戏画面进行编码处理,并将编码得到的第一视频流传输至第一媒体流传输子模块;第一媒体流传输子模块可以将由第一视频流和音频流组成的第一媒体流发送至第一客户端;当第一客户端对云游戏实例进行操作时,第一媒体流传输子模块可以将第一客户端的操作数据传输至第一视频编码子模块,由第一视频编码子模块将第一客户端的操作数据注入至云游戏实例中。

对于第二客户端,接入云游戏实例的第二客户端绑定第二路流处理资源,在云游戏实例与第二客户端之间可以基于第二客户端绑定的第二路流处理资源进行数据传输;第二路流处理资源可以包括单独的编解码资源和单独的传输控制资源,第二路流处理资源的编解码资源可以由第二视频编码子模块提供,第二路流处理资源的传输控制资源可以由第二媒体流传输子模块提供。云游戏实例与第二客户端之间基于第二路流处理资源的数据传输过程可以包括:第二视频编码子模块可以用于对从云游戏实例中采集得到的游戏画面进行编码处理,并将编码得到的第二视频流传输至第二媒体流传输子模块;第二媒体流传输子模块可以将由第二视频流和音频流组成的第二媒体流发送至第二客户端;当第二客户端对云游戏实例进行操作时,第二媒体流传输子模块可以将第二客户端的操作数据传输至第二视频编码子模块,由第二视频编码子模块将第二客户端的操作数据注入至云游戏实例中。在此解决方案中,基于相互独立的各路流处理资源,有利于分别对各个客户端进行有针对性地、独立地编码流控和质量控制,并且由于每路流处理资源之间相互独立、互不影响,从而能够在客户端与云游戏实例之间进行高效且稳定地数据传输。

下面对适于实现本申请实施例提供的云游戏的处理方案的云游戏的处理系统进行介绍,并结合云游戏的处理系统对图2所示的云游戏的处理方案进行更为详细地介绍。图3示出了本申请一个示例性实施例提供的一种云游戏的处理系统的架构示意图,如图3所示,云游戏的处理系统30可以包括第一终端301、第二终端302、第三终端303和服务器304;需要说明的是,在实际应用场景中,云游戏的处理系统30中包括的终端的数量可以为至少一个,本申请实施例以云游戏的处理系统30包括第一终端301、第二终端302和第三终端303为例进行说明。其中,第一终端301、第二终端302或第三终端303中的任一个可以是智能手机、平板电脑、笔记本电脑、台式计算机、车载设备、智能音箱、智能手表等,但并不局限于此;第一终端301中可以运行有云游戏的第一客户端;第二终端302中可以运行有云游戏的第二客户端,第三终端303中可以运行有观察者客户端;第一客户端、第二客户端和观察者客户端均可以为以下任一种:独立的应用程序、API或者SDK(Software Development Kit,软件开发工具包)。云游戏的服务器304可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)服务、以及大数据和人工智能平台等基础云计算服务的云服务器。第一终端301、第二终端302、第三终端303和云游戏的服务器304之间可以通过有线通信或无线通信方式进行直接或间接地连接,本申请在此不做限制。

服务器304可以包括云游戏实例、媒体编码模块和媒体传输模块。第一客户端可以运行于第一终端301中,第二客户端可以运行于第二终端302中,观察者客户端可以运行于第三终端303中。其中:

媒体编码模块可以包括图像采集子模块、音频采集子模块、音频预处理子模块、以及至少一个视频编码子模块;本申请实施例以媒体编码模块包括第一视频编码子模块和第二视频编码子模块为例进行说明。其中,图像采集子模块可以用于采集云游戏实例中的游戏画面。音频采集子模块可以用于采集云游戏实例中的游戏音频。第一视频编码子模块可以用于对采集到的游戏画面进行编码处理,并将编码得到的第一视频流传输至媒体传输模块。第二视频编码子模块可以用于对采集到的游戏画面进行编码处理,并将编码得到的第二视频流传输至媒体传输模块。音频预处理子模块可以用于对采集到的游戏音频进行音频预处理,并将音频预处理后的游戏音频传输至媒体传输模块;音频预处理是指在编码之前对游戏音频进行的简单处理,音频预处理可以提升游戏音频的编码效率,音频预处理可以包括对游戏音频进行降噪处理、提取游戏音频的音频特征等等。

媒体传输模块可以包括音频编码子模块、转发子模块、以及至少一个媒体流传输子模块;本申请实施例以媒体传输模块包括第一媒体流传输子模块和第二媒体流传输子模块为例进行说明。其中,转发子模块可以用于进行数据转发,例如转发子模块可以用于将第一视频编码子模块传输的第一视频流转发至第一媒体流传输子模块,转发子模块还可以用于将第二视频编码子模块传输的第二视频流转发至第二媒体流传输子模块,转发子模块还可以用于将音频预处理子模块传输的音频预处理后的游戏音频转发至音频编码子模块。音频编码子模块可以用于对音频预处理后的游戏音频进行编码处理,得到音频流,并将音频流转发至第一媒体流传输子模块和第二媒体流传输子模块。第一媒体流传输子模块可以用于将由第一视频流和音频流组成的第一媒体流传输至第一客户端和观察者客户端。第二媒体流传输子模块可以用于将由第二视频流和音频流组成的第二媒体流传输至第二客户端。

基于图2所示的云游戏的处理方案和图3所示的云游戏的处理系统,在云游戏实例与客户端之间可以实现数据传输、流量控制、权限控制、实时调整传输参数、传输监测等功能。下面分别对上述功能进行介绍:

(1)数据传输。

第一视频编码子模块可以提供第一路流处理资源的编解码资源,第一媒体流传输子模块可以提供第一路流处理资源的传输控制资源;也就是说,第一视频编码子模块和第一媒体流传输子模块共同提供第一路流处理资源。第一路流处理资源与第一客户端绑定,云游戏实例与第一客户端之间可以基于第一路流处理资源进行数据传输;云游戏实例与第一客户端之间基于第一路流处理资源的数据传输过程可以包括:第一视频编码子模块可以对从云游戏实例中采集得到的游戏画面进行编码处理,并将编码得到的第一视频流传输至第一媒体流传输子模块;第一媒体流传输子模块可以将由第一视频流和音频流组成的第一媒体流发送至第一客户端。当第一客户端对云游戏实例进行操作时,第一媒体流传输子模块可以将第一客户端的操作数据传输至第一视频编码子模块,由第一视频编码子模块将第一客户端的操作数据注入至云游戏实例中。通过这种方式,将第一客户端与第一路流处理资源绑定,能够保证第一客户端与云游戏实例之间进行高效且稳定地数据传输。

第二视频编码子模块可以提供第二路流处理资源的编解码资源,第二媒体流传输子模块可以提供第二路流处理资源的传输控制资源;也就是说,第二视频编码子模块和第二媒体流传输子模块共同提供第二路流处理资源。第二路流处理资源与第二客户端绑定,云游戏实例与第二客户端之间可以基于第二路流化处理资源进行数据传输;云游戏实例与第二客户端之间基于第二路流处理资源的数据传输过程可以包括:第二视频编码子模块可以对采集得到的游戏画面进行编码处理,并将编码得到的第二视频流传输至第二媒体流传输子模块;第二媒体流传输子模块可以将由第二视频流和音频流组成的第二媒体流发送至第二客户端。当第二客户端对云游戏实例进行操作时,第二媒体流传输子模块可以将第二客户端的操作数据传输至第二视频编码子模块,由第二视频编码子模块将第二客户端的操作数据注入至云游戏实例中。通过这种方式,将第二客户端与第二路流处理资源绑定,能够保证第二客户端与云游戏实例之间进行高效且稳定地数据传输。

(2)流量控制

第一路流处理资源可以在第一媒体流的传输过程中进行流量控制。流量控制的具体过程如下:第一媒体流传输子模块在向第一客户端传输第一媒体流的过程中,还可以向第一客户端发送网络探测包,并接收第一客户端反馈的网络信息;网络探测包是指可以用于对网络拥塞情况进行探测的探测工具包;网络信息是指对网络拥塞情况的描述信息。当网络信息指示网络未发生拥塞,则第一媒体流传输子模块可以向第一视频编码子模块发送第一流控指令,第一流控指令可以用于指示第一视频编码子模块提高第一视频编码子模块中的媒体编码码率,提高第一视频编码子模块中的媒体帧的帧率等等。当网络信息指示网络已发生拥塞,则第一媒体流传输子模块可以向第一视频编码子模块发送第二流控指令,第二流控指令可以用于指示第一视频编码子模块降低第一视频编码子模块中的媒体编码码率,降低第一视频编码子模块中的媒体帧的帧率,丢弃第一媒体流中的部分媒体帧等等。其中,媒体编码码率可以是指单位时间(例如1秒)内传送媒体流的比特数目;媒体编码码率越高,游戏画面的画质越清晰;媒体编码码率越低,游戏画面的画质越不清晰。媒体帧的帧率可以是指单位时间(例如1秒)内编码媒体流中媒体帧的数量;媒体帧的帧率越高,游戏画面越流畅;媒体帧的帧率越低,游戏画面越卡顿。通过这种方式,可以有针对性地、独立地对第一客户端进行流量控制,有效减少媒体流传输至第一客户端的过程中产生的时延,提高媒体流的清晰度和流畅度。

第二路流处理资源可以在第二媒体流的传输过程中进行流量控制。流量控制的具体过程如下:第二媒体流传输子模块在向第二客户端传输第二媒体流的过程中,还可以向第二客户端发送网络探测包,并接收第二客户端反馈的网络信息。当网络信息指示网络未发生拥塞,则第二媒体流传输子模块可以向第二视频编码子模块发送第一流控指令,第一流控指令可以用于指示第二视频编码子模块提高第二视频编码子模块中的媒体编码码率,提高第二视频编码子模块中的媒体帧的帧率等等。当网络信息指示网络已发生拥塞,则第二媒体流传输子模块可以向第二视频编码子模块发送第二流控指令,第二流控指令可以用于指示第二视频编码子模块降低第二视频编码子模块中的媒体编码码率,降低第二视频编码子模块中的媒体帧的帧率,丢弃第二媒体流中的部分媒体帧等等。通过这种方式,可以有针对性地、独立地对第二客户端进行流量控制,有效减少媒体流传输至第二客户端的过程中产生的时延,提高媒体流的清晰度和流畅度。

(3)权限控制

在接入云游戏实例的第一客户端和第二客户端中,具备针对云游戏实例的操作权限的客户端的操作数据可以被注入至云游戏实例中,不具备针对云游戏实例的操作权限的客户端的操作数据在传输过程中被丢弃。具体地,若第一客户端不具备针对云游戏实例的操作权限,则第一视频编码子模块可以丢弃第一客户端的操作数据;或者,若第二客户端不具备针对云游戏实例的操作权限,则第二视频编码子模块可以丢弃第二客户端的操作数据。在此方式下,可以通过丢弃操作数据的方式对接入云游戏实例的各个客户端进行权限控制,有利于对接入云游戏实例的各个客户端进行权限管控。

(4)实时调整传输参数

云游戏实例可以支持实时调整传输参数。接入云游戏实例的客户端可以向媒体传输模块发送传输参数设置请求,媒体传输模块响应传输参数设置请求,可以对原有的传输参数进行修正,媒体编码模块可以采用修正后的传输参数对游戏画面进行编码处理。举例来说,若接入云游戏实例的第一客户端向第一媒体流传输子模块发送媒体编码码率的设置请求,那么第一媒体流传输子模块可以根据媒体编码码率的设置请求中请求的媒体编码码率对原有的媒体编码码率进行修正,然后将修正后的媒体编码码率传输至第一视频编码子模块;第一视频编码子模块可以采用修正后的媒体编码码率对游戏画面进行编码处理。又如,若接入云游戏实例的第二客户端向第二媒体流传输子模块发送媒体帧的帧率的设置请求,那么第二媒体流传输子模块可以根据媒体帧的帧率的设置请求中请求的媒体帧的帧率对原有的媒体帧的帧率进行修正,然后将修正后的媒体帧的帧率传输至第二视频编码子模块;第二视频编码子模块可以采用修正后的媒体帧的帧率对游戏画面进行编码处理。通过这种方式,客户端可以根据需求实时调整传输参数,其绑定的流处理资源可以根据客户端的调整需求,实时调整或修正传输参数,非常灵活高效。

(5)传输监测

接入云游戏实例的观察者客户端可以共享云游戏实例中的流处理资源。观察者客户端可以是云游戏的测试人员所使用的客户端,观察者客户端用于对基于流处理资源的数据传输过程进行监测。具体来说,当接收到观察者客户端针对云游戏实例的接入请求,可以从云游戏实例已存在的流处理资源中选择一路流处理资源,并将选择的一路流处理资源与观察者客户端进行绑定。从云游戏实例已存在的流处理资源中选择一路流处理资源可以是指从云游戏实例已存在的流处理资源中随机选择一路流处理资源进行绑定,例如云游戏实例已存在的流处理资源为第一路流处理资源和第二路流处理资源,那么可以从第一路流处理资源和第二路流处理资源中随机选择一路,例如选择第一路流处理资源与观察者客户端进行绑定;从云游戏实例已存在的流处理资源中选择一路流处理资源还可以是指从云游戏实例已存在的流处理资源中选择指定的一路流处理资源进行绑定,例如云游戏实例已存在的流处理资源为第一路流处理资源和第二路流处理资源,假设指定的流处理资源为第一路流处理资源,那么可以将观察者客户端和第一路流处理资源进行绑定。观察者客户端接收到第一媒体流传输子模块传输的第一媒体流之后,第一观察者客户端可以解析并显示第一媒体流中的游戏画面,从而可以验证游戏画面是否清晰、是否流畅。并且观察者客户端仅对游戏画面进行观察,不参与流量控制,因此,观察者客户端与第一客户端共享第一路流处理资源可以有效减少资源消耗,节省传输带宽。

本申请实施例中,云游戏的服务器允许多个客户端接入并操作同一个云游戏实例,有效提升云游戏操作模式的灵活性和多样性。并且,云游戏的服务器为接入同一个云游戏实例的多个客户端中的每个客户端创建并绑定一路独立的流处理资源,任意一路流处理资源均可以在其绑定的客户端与云游戏实例之间进行数据传输,能够高效稳定地进行数据传输。另外,任一路流处理资源可以有针对性地、独立地对其绑定的客户端进行流量控制,有效减少媒体流传输过程中产生的时延,有效提高媒体流的清晰度和流畅度。其次,在客户端不具备针对云游戏实例的操作权限的情况下,其绑定的流处理资源可以通过丢弃操作数据的方式对客户端进行权限控制,有利于对接入云游戏实例的各个客户端进行权限管控。此外,客户端可以根据需求实时调整传输参数,其绑定的流处理资源可以根据客户端的调整需求,实时调整或修正传输参数,非常灵活高效。

本申请实施例提出的云游戏的处理方案还可与区块链相结合,例如云游戏的客户端或云游戏的服务器等可以是区块链网络中的节点;本申请实施例中的客户端与流处理资源之间的绑定过程、客户端与云游戏实例之间基于流处理资源之间的数据传输过程均可以上传至区块链上进行存储;例如,本申请实施例中涉及的诸如媒体流、操作数据等可以区块的形式存储在区块链中;又如,客户端与流处理资源之间的绑定关系可以区块的形式存储在区块链中。基于区块链中的区块不可被篡改和不可被伪造的特点,使得客户端与流处理资源之间的绑定过程更加安全可靠,客户端与云游戏实例之间基于流处理资源之间的数据传输过程更加安全可靠。

可以理解的是,本申请实施例描述的云游戏的处理系统是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

基于上述描述,图4示出了本申请一个示例性实施例提供的一种云游戏的处理方法的流程示意图,该云游戏的处理方法可以由本申请实施例提供的云游戏的处理设备执行,云游戏的处理设备可以是图3所示的云游戏的处理系统30中的云游戏的服务器304。该云游戏的处理方法可以包括以下步骤S401至步骤S404:

S401,接收第二客户端针对云游戏实例的接入请求。

云游戏实例是根据第一客户端针对云游戏的游玩请求而创建的,第一客户端与云游戏实例的第一路流处理资源相绑定,且云游戏实例与第一客户端基于第一路流处理资源进行数据传输。具体来说,当云游戏的服务器接收到第一客户端针对云游戏的游玩请求时,可以获取云游戏中已创建的云游戏实例的数量。若云游戏中已创建的云游戏实例的数量未超过(即小于或等于)实例创建阈值,则云游戏的服务器可以根据第一客户端针对云游戏的游玩请求创建云游戏实例,并创建第一路流处理资源,将第一流处理资源与第一客户端进行绑定,以及在云游戏实例与第一客户端之间基于第一路流处理资源进行数据传输;其中,实例创建阈值可以是指一个云游戏允许创建的云游戏实例的数量上限,例如一个云游戏允许创建的云游戏实例的数量上限为50000个。若云游戏中已创建的云游戏实例的数量超过(即大于)实例创建阈值,则云游戏的处理器可以向第一客户端返回云游戏实例创建失败通知;对于第一客户端而言,接收到云游戏实例创建失败通知后,第一客户端可以重新发起针对云游戏的游玩请求;第一客户端也可以排队等待直到云游戏中已创建的云游戏实例的数量未超过(即小于或等于)实例创建阈值时,云游戏的服务器创建云游戏实例。

在云游戏实例与第一客户端之间基于第一路流处理资源进行数据传输可以包括:获取云游戏实例中的媒体流;基于第一路流处理资源将媒体流(例如上述第一媒体流)发送至第一客户端;当第一客户端请求对云游戏实例进行操作时,基于第一路流处理资源接收第一客户端的操作数据。

第二客户端针对云游戏实例的接入请求是通过分享口令触发发送的。具体来说,云游戏的服务器接收第一客户端针对云游戏实例的分享请求;当云游戏的服务器接收到第一客户端针对云游戏实例的分享请求之后,可以响应于第一客户端的分享请求,并向第一客户端返回云游戏实例的分享口令,以使第一客户端将分享口令分享至除第一客户端之外的其他客户端。在一种实现方式中,第一客户端接收到云游戏的服务器返回的云游戏实例的分享口令之后,可以将分享口令分享至第二客户端;第二客户端接收到第一客户端分享的分享口令之后,可以将分享口令输入第二客户端中,例如可以将分享口令输入至第二客户端的云游戏参与界面中,从而触发第二客户端向云游戏的服务器发送针对云游戏实例的接入请求。在另一种实现方式中,分享口令可以是指一个云游戏的参与链接,第二客户端可通过直接点击第一客户端分享的分享口令便可触发向云游戏的服务器发送针对云游戏实例的接入请求。其中,分享口令可以包括云游戏实例的标识和云游戏实例的登录密码;云游戏实例的标识可以用于对云游戏实例进行识别,即可以保证第二客户端请求接入的云游戏实例就是第一客户端分享的云游戏实例;云游戏实例的登录密码可以用于对第二客户端的身份进行校验,例如可以将第二客户端输入的云游戏实例的登录密码与云游戏的服务器中存储的云游戏实例的登录密码进行比对,若两者相同则校验通过,允许第二客户端接入云游戏实例,若两者不相同则校验失败,禁止第二客户端接入云游戏实例;采用云游戏实例的登录密码对第二客户端的身份进行校验,可保证接入云游戏实例的第二客户端是可信的。

S402,响应于第二客户端的接入请求,创建云游戏实例的第二路流处理资源。

当接收到第二客户端针对云游戏实例的接入请求之后,响应于第二客户端的接入请求,可以创建云游戏实例的第二路流处理资源,如上述图2所示实施例,第二路流处理资源可以由第二视频编码子模块和第二媒体流传输子模块提供。其中,第二视频编码子模块可以用于对采集到的云游戏实例的游戏画面进行编码处理,并将编码得到的第二视频流传输至第二媒体流传输子模块;第二媒体流传输子模块可以用于将第二视频流和音频流组成的第二媒体流传输至第二客户端。

第二客户端的接入请求中可以包括第二客户端的用户标识(userID2)和第一接入策略(Exclusive策略),第一接入策略可以用于表示第二客户端的类型为使用者类型。在此情况下,创建云游戏实例的第二路流处理资源可以包括:根据第二客户端的用户标识,为第二客户端分配接入会话标识(SDK Session ID2);以及根据第一接入策略,实时生成云游戏实例的第二路流处理资源及第二路流处理资源的标识(CG Session ID2)。

S403,将第二路流处理资源与第二客户端进行绑定。

创建云游戏实例的第二路流处理资源之后,可以将第二路流处理资源与第二客户端进行绑定。将第二路流处理资源与第二客户端进行绑定是指:在第二客户端的接入会话标识与第二路流处理资源的标识之间建立绑定关系。

S404,在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输。

将第二路流处理资源与第二客户端进行绑定之后,可以在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输。在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输可以包括:获取云游戏实例中的媒体流(例如上述第二媒体流);基于第二路流处理资源将媒体流发送至第二客户端;以及当第二客户端请求对云游戏实例进行操作时,基于第二路流处理资源接收第二客户端的操作数据。

第三客户端可以是除第一客户端和第二客户端之外请求接入云游戏实例的一个客户端。云游戏的服务器可以接收第三客户端针对云游戏实例的接入请求;第三客户端的接入请求中可以携带第三客户端的用户标识(userID3)和接入策略。云游戏的服务器响应第三客户端的接入请求的响应过程可参见图5,图5示出了本申请一个示例性实施例提供的一种客户端的接入请求的响应过程的流程示意图,如图5所示,在一种实现方式中,若接入策略为第一接入策略,则云游戏的服务器可以响应于第三客户端的接入请求,创建云游戏实例的第三路流处理资源,并将第三路流处理资源与第三客户端进行绑定,以及在第三客户端与云游戏实例之间基于第三路流处理资源进行数据传输。在另一种实现方式中,若接入策略为第二接入策略(Shared策略),则云游戏的服务器可以检查云游戏实例中是否存在根据第一接入策略创建的流处理资源;第二接入策略可以用于表示第三客户端的类型为观察者(例如第三客户端可以是上述实施例中提及的观察者客户端)。若云游戏实例中存在根据第一接入策略创建的流处理资源,例如云游戏实例中已存在第一路流处理资源和第二路流处理资源,那么可以响应于第三客户端的接入请求,从第一路流处理资源和第二路流处理资源中选择一路流处理资源;将所选择的一路流处理资源与第三客户端进行绑定;以及在第三客户端与云游戏实例之间基于所选择的一路流处理资源进行数据传输;从云游戏实例的第一路流处理资源和第二路流处理资源中选择一路流处理资源可以是指从云游戏实例的第一路流处理资源和第二路流处理资源中随机选择一路流处理资源,例如可以选择第一路流处理资源;从云游戏实例的第一路流处理资源和第二路流处理资源中选择一路流处理资源还可以是指从云游戏实例的第一路流处理资源和第二路流处理资源中选择指定的一路流处理资源选择,假设指定的流处理资源为第一路流处理资源,那么选择的流处理资源为第一路流处理资源。若云游戏实例中不存在根据第一接入策略创建的流处理资源,则可以响应于第三客户端的接入请求,创建云游戏实例的第三路流处理资源,将第三路流处理资源与第三客户端进行绑定,在第三客户端与云游戏实例之间基于第三路流处理资源进行数据传输。其中,创建云游戏实例的第三路流处理资源,将第三路流处理资源与第三客户端进行绑定可以是指:根据第三客户端的用户标识,为第三客户端分配接入会话标识(SDKSession ID3);以及根据第一接入策略,实时生成云游戏实例的第三路流处理资源及第三路流处理资源的标识(CG Session ID3);以及在第三客户端的接入会话标识与第三路流处理资源的标识之间建立绑定关系。以从第一路流处理资源和第二路流处理资源中选择第一路流处理资源为例,将所选择的一路流处理资源与第三客户端进行绑定可以是指:在第三客户端的接入会话标识与第一路流处理资源的标识(CG Session ID1)之间建立绑定关系。

本申请实施例中,可以允许多个客户端(如第一客户端和第二客户端)接入并操作同一个云游戏实例,有效提升云游戏操作模式的灵活性与多样性。另外,可以为接入同一个云游戏实例的多个客户端中的每个客户端创建并绑定一路单独的流处理资源,云游戏实例的任一路流处理资源可以用于在该流处理资源绑定的客户端与云游戏实例之间进行数据传输,这样就有利于基于每路流处理资源来分别对各个客户端进行有针对性地、独立地编码流控和质量控制,并且由于各路流处理资源之间相互独立、互不影响,从而能够在客户端与云游戏实例之间进行高效且稳定地数据传。以第二客户端为例,通过建立第二客户端与第二路流处理资源之间的绑定关系,可以在接收到第二客户端的操作数据时,基于绑定关系快速确定其绑定的第二路流处理资源,并通过第二路流处理资源将第二客户端的操作数据注入至云游戏实例中;也可以在获取到云游戏实例的媒体流时,基于绑定关系快速确定第二路流处理资源绑定的第二客户端,从而可以通过第二路流处理资源快速地将媒体流转发至第二客户端,有效提升数据传输过程的准确性,降低数据传输过程中的延迟。

基于上述描述,图6示出了本申请另一个示例性实施例提供的一种云游戏的处理方法的流程示意图,该云游戏的处理方法可以由本申请实施例提供的云游戏的处理设备执行,云游戏的处理设备可以是图3所示的云游戏的处理系统30中的云游戏的服务器304。该云游戏的处理方法可以包括以下步骤S601至步骤S606:

S601,接收第二客户端针对云游戏实例的接入请求。

云游戏实例是根据第一客户端针对云游戏的游玩请求而创建的,第一客户端与云游戏实例的第一路流处理资源相绑定,且云游戏实例与第一客户端基于第一路流处理资源进行数据传输。

S602,响应于第二客户端的接入请求,创建云游戏实例的第二路流处理资源。

第二客户端的接入请求中可以包括第二客户端的用户标识和第一接入策略,第一接入策略可以用于表示第二客户端的类型为使用者类型。在此情况下,创建云游戏实例的第二路流处理资源可以包括:根据第二客户端的用户标识,为第二客户端分配接入会话标识;以及根据第一接入策略,实时生成云游戏实例的第二路流处理资源及第二路流处理资源的标识。

S603,将第二路流处理资源与第二客户端进行绑定。

创建云游戏实例的第二路流处理资源之后,可以将第二路流处理资源与第二客户端进行绑定。将第二路流处理资源与第二客户端进行绑定是指:在第二客户端的接入会话标识与第二路流处理资源的标识之间建立绑定关系。

S604,获取云游戏实例中的媒体流。

S605,基于第二路流处理资源将媒体流发送至第二客户端。

S606,当第二客户端请求对云游戏实例进行操作时,基于第二路流处理资源接收第二客户端的操作数据。

云游戏实例可以支持实时调整传输参数。接入云游戏实例的客户端可以向云游戏的服务器发送传输参数设置请求,云游戏的服务器可以响应传输参数设置请求,对原有的传输参数进行修正,并可以采用修正后的传输参数对游戏画面进行编码处理。其中,传输参数可以包括以下至少一种:媒体编码率、媒体帧的帧率和分辨率。媒体编码码率可以是指单位时间(例如1秒)内传送媒体流的比特数目;媒体编码码率越高,游戏画面的画质越清晰;媒体编码码率越低,游戏画面的画质越不清晰。媒体帧的帧率可以是指单位时间(例如1秒)内编码媒体流中媒体帧的数量;媒体帧的帧率越高,游戏画面越流畅;媒体帧的帧率越低,游戏画面越卡顿。分辨率可以包括设备分辨率和编码分辨率;设备分辨率又可以称为显示分辨率,是指设备的显示屏幕上所有可视面积上水平像素的数量和垂直像素的数量;例如设备分辨率为720×960,表示设备的显示屏幕的所有可视面积上水平显示720个像素,垂直显示960个像素;设备编码率一旦确定便无法更改。编码分辨率可以是指编码后的游戏画面中水平像素的数量和垂直像素的数量;例如编码分辨率为720×960,表示编码后的游戏画面中水平显示720个像素,垂直显示960个像素。

针对传输参数中的分辨率,当第一客户端接入至云游戏实例之后,云游戏的服务器可以基于第一路流处理资源接收第一客户端发送的设备分辨率;设备分辨率可以是指运行第一客户端的第一终端的设备分辨率,第一终端的设备分辨率可以是指第一终端的显示屏幕的所有可视面积上水平像素的数量和垂直像素的数量;例如第一终端的设备分辨率为720×960,表示第一终端的显示屏幕的所有可视面积上水平显示720个像素,垂直显示960个像素。接收到第一客户端发送的设备分辨率之后,云游戏的服务器可以根据设备分辨率设置云游戏实例的容器窗口分辨率,根据设备分辨率设置云游戏实例的容器窗口分辨率可以包括:设置云游戏实例的第一比值与第一终端的第二比值相同,第一比值是指云游戏实例的容器窗口的水平像素的数量与垂直像素的数量之间比值,第二比值是指第一终端的显示屏幕的水平像素的数量与垂直像素的数量之间的比值;例如,第一终端的设备分辨率为720×960,则可以设置云游戏实例的容器窗口分辨率为1080×1440,水平像素的数量与垂直像素的数量之间比值均为0.75。云游戏的服务器还可以将容器窗口分辨率基于第一路流处理资源发送至第一客户端;当第一客户端请求对云游戏实例进行操作时,可以根据设备分辨率与容器窗口分辨率对操作触屏坐标进行坐标转换;例如,可以将设备分辨率下的第一操作触屏坐标转换为容器窗口分辨率下的第二操作触屏坐标。

需要说明的是,云游戏实例的容器窗口分辨率一旦确定后便不能更改,如果接入云游戏实例的客户端设置的编码分辨率中的第三比值与第一比值不相同,那么编码得到的媒体流中的游戏画面会被拉伸变形,所以需要保持客户端设置的编码分辨率中的第三比值与云游戏实例的第一比值相同;其中,第三比值是指客户端设置的编码分辨率中的水平像素的数量与垂直像素的数量之间的比值。以第二客户端为例,当第二客户端接入至云游戏实例后,云游戏的服务器可以基于第二路流处理资源向第二客户端发送容器窗口分辨率;当第二客户端请求对云游戏实例进行操作时,可以根据设备分辨率与容器窗口分辨率对操作触屏坐标进行坐标转换。云游戏的服务器还可以基于第二路流处理资源接收第二客户端发送的分辨率设置请求,分辨率设置请求中可以携带第二客户端请求设置的编码分辨率;云游戏的服务器可以根据容器窗口分辨率对请求设置的编码分辨率进行修正;以及可以采用修正后的编码分辨率对基于第二路流处理资源传输的媒体流进行编码处理。云游戏的服务器可以根据容器窗口分辨率对请求设置的编码分辨率进行修正可以包括:设置请求设置的编码分辨率的第三比值与云游戏实例的第一比值相同。例如,第二客户端请求的编码分辨率为480P,那么可以根据容器窗口分辨率1080×1440对请求设置的编码分辨率进行修正,修正后的编码分辨率为480×640。

分辨率的设置过程可参见图7a,图7a示出了本申请一个示例性实施例提供的一种分辨率的设置过程的流程示意图,以第二客户端为例,当云游戏实例的容器窗口分辨率确定后,第二视频编码子模块可以将云游戏实例的容器窗口分辨率传输至第二媒体流传输子模块,例如云游戏实例的容器窗口分辨率为1080×1440。当第二媒体流传输子模块接收到第二客户端请求设置的编码分辨率后,第二媒体流传输子模块可以根据容器窗口分辨率对请求设置的编码分辨率进行修正,得到修正后的编码分辨率,例如请求修正的编码分辨率为480P,修正后的编码分辨率为480×640。然后第二媒体流传输子模块可以将修正后的编码分辨率传输至第二视频编码子模块,第二视频编码子模块便可以采用修正后的编码分辨率对待传输至第二客户端的媒体流进行编码处理。

由上述关于实时调整传输参数的描述可知,云游戏的服务器可以根据接入云游戏实例的客户端的传输参数设置请求,实时调整或修正传输参数,较好地满足接入云游戏实例的客户端的传输参数设置需求,非常灵活高效。

云游戏实例在数据传输过程中还可以支持流量控制。云游戏的服务器可以基于第二路流处理资源向第二客户端发送网络探测包,并接收第二客户端反馈的网络信息;网络探测包是指可以用于对网络拥塞情况进行探测的探测工具包;网络信息是指对网络拥塞情况的描述信息。然后,云游戏的服务器可以根据网络信息调整网络探测包的数据量,并调整第二路流处理资源的传输参数。其中,根据网络信息调整网络探测包的数据量,并调整第二路流处理资源的传输参数可以包括:若网络信息指示网络已发生拥塞,则可以减小网络探测包的数据量,并对第二路流处理资源的传输参数进行第一调整;若网络信息指示网络未发生拥塞,则可以增加网络探测包的数的量,并对第二路流处理资源的传输参数进行第二调整;第一调整可以包括以下至少一种:降低第二路流处理资源中的媒体编码码率,降低第二路流处理资源中的媒体帧的帧率,丢弃第二路流处理资源中的部分媒体帧;第二调整可以包括以下至少一种:提高第二路流处理资源中的媒体编码码率,提高第二路流处理资源中的媒体帧的帧率。

流量控制过程可参见图7b,图7b示出了本申请一个示例性实施例提供的一种流量控制过程的流程示意图,此处以第二客户端与云游戏实例之间的流量控制过程为例进行说明,第一客户端与云游戏实例之间的流量控制过程,与第二客户端与云游戏实例之间的流量控制过程类似,在此不再赘述。图7b所示的流量控制过程可以包括:第二路流处理资源的第二视频编码子模块将编码得到的第二视频流传输至第二路流处理资源的第二媒体流传输子模块之后,第二媒体流传输子模块可以将包括第二视频流和音频流的第二媒体流传输至第二客户端。第二媒体流传输子模块在向第二客户端传输第二媒体流的过程中,还可以向第二客户端发送网络探测包,并接收第二客户端反馈的网络信息。第二媒体流传输子模块可以根据网络信息向第二视频编码子模块发送流控指令;若网络信息指示网络未发生拥塞,则第二媒体流传输子模块可以向第二视频编码子模块发送第一流控指令,第一流控指令可以用于指示第二视频编码子模块提高第二视频编码子模块中的媒体编码码率,提高第二视频编码子模块中的媒体帧的帧率等等;若网络信息指示网络已发生拥塞,则第二媒体流传输子模块可以向第二视频编码子模块发送第二流控指令,第二流控指令可以用于指示第二视频编码子模块降低第二视频编码子模块中的媒体编码码率,降低第二视频编码子模块中的媒体帧的帧率,丢弃第二媒体流中的部分媒体帧等等。

需要说明的是,第二媒体流传输子模块可以通过非可靠传输协议将第二媒体流和网络探测包发送至第二客户端;非可靠传输协议可以包括RTP(Real-time TransportProtocol,实时传输协议)。由于可靠传输协议TCP(Transmission Control Protocol,传输控制协议)在网络拥塞情况下不能丢包或者丢包重传导致延迟增大,因此TCP在网络拥塞情况下的传输效率较低;基于此本申请实施例可以采用非可靠传输协议RTP进行媒体流与网络探测包的传输,非可靠传输协议RTP可以在网络拥塞情况下主动丢包,这样有利于在网络拥塞情况下有效减少传输时延。另外,第二媒体流传输子模块可以采用带反馈机制的协议接收第二客户端反馈的网络信息;带反馈机制的协议可以包括RTCP(RTP ControlProtocol,RTP控制协议),网络信息可以包括RTCP RR(RTCP Reciever Report,RTCP接收者报告),客户端每间隔目标时间段反馈一次网络信息,目标时间段例如可以为100毫秒。

由于第二视频编码子模块响应流控指令调整媒体编码码率、媒体帧的帧率等传输参数需要一段时间,因此,当网络突发拥塞,调整传输参数可能会产生一定的时延,通常采用丢弃媒体流中的部分媒体帧的方式来快速降低媒体编码码率。图7c示出了本申请一个示例性实施例提供的一种媒体帧丢弃过程的流程示意图,如图7c所示,当网络信息指示网络突发拥塞,第二媒体流传输子模块可以向第二视频编码子模块发送媒体帧丢弃请求;然后,第二视频编码子模块响应于媒体帧丢弃请求,可以在图像采集子模块采集到游戏画面后,按照丢帧策略丢弃采集到的部分媒体帧;按照丢帧策略丢弃采集到的部分媒体帧可以是指按照目标比例丢弃采集到的部分媒体帧,目标比例可以为图像采集子模块采集到的媒体帧数量的三分之一、十分之一、二百分之一等等。当网络信息指示网络未发生拥塞时,可以关闭上述丢帧策略。

由上述关于流量控制的描述可知,云游戏的服务器中的媒体编码模块和媒体传输模块可以联合进行流量控制,能够有效降低媒体流的传输时延,提升媒体流中的游戏画面的质量,从而在客户端与云游戏实例之间进行高效且稳定地数据传输。

云游戏实例在数据传输过程中还可以支持权限控制。云游戏的服务器可以根据第一客户端的权限设置请求为第二客户端配置权限,权限可以包括以下任一种:针对云游戏实例的操作权限,针对云游戏实例的浏览权限,针对云游戏实施例的操作权限和浏览权限;针对云游戏实例的操作权限是指可以对云游戏实例进行操作的权限;针对云游戏实例的浏览权限是指对云游戏实例的游戏画面进行浏览的权限,具备针对云游戏实例的浏览权限的用户只能浏览其他用户操作云游戏实例的游戏画面,不能对云游戏实例进行操作。若第二客户端不具备针对云游戏实例的操作权限,则当云游戏的服务器基于第二路流处理资源接收到第二客户端的操作数据时,可以丢弃第二客户端的操作数据。若第二客户端具备针对云游戏实例的操作权限,则当云游戏的服务器基于第二路流处理资源接收到第二客户端的操作数据时,可以将第二客户端的操作数据注入至云游戏实例中。其中,操作数据可以包括以下至少一种:Touch操作数据(例如可以是上述的操作触屏坐标)、文本输入数据、语音输入数据、GPS(Global Positioning System,全球定位系统)数据、传感器的传感数据等等。

图7d示出了本申请一个示例性实施例提供的一种权限控制过程的流程示意图,如图7d所示,第一媒体流传输子模块提供一个权限设置接口(HTTP Restful接口)第一客户端可以通过第一媒体流传输子模块的权限设置接口向第一媒体流传输子模块发送权限设置请求,请求为第二客户端配置权限,从而第一媒体流传输子模块可以根据第一客户端的权限设置请求为第二客户端配置权限,并将权限配置结果发送至第一视频编码子模块,第一视频编码子模块可以将权限配置结果转发至第二视频编码子模块。若权限配置结果指示第二客户端不具备针对云游戏实例的操作权限,则第二视频编码子模块可以丢弃第二客户端的操作数据。若权限配置结果指示第二客户端具备针对云游戏实例的操作权限,则第二视频编码子模块可以将第二客户端的操作数据注入至云游戏实例中以对云游戏实例进行操作。

由上述关于权限控制的描述可知,通过注入操作数据或丢弃操作数据,实现了云游戏实例的权限控制,具备针对云游戏的操作权限的客户端的操作数据可以注入云游戏实例中,不具备针对云游戏的操作权限的客户端的操作数据在传输过程中被丢弃,有效丰富了云游戏的操作模式。

云游戏实例还可以支持多用户同时操作。在此以两个用户即第一客户端和第二客户端对云游戏实例进行操作为例,第一客户端可以与云游戏实例中的第一操作控件相映射,第二客户端可以与云游戏实例中的第二操作控件相映射;第一操作控件和第二操作控件均可以是云游戏实例中的操纵杆。图7e示出了本申请一个示例性实施例提供的一种多用户操作云游戏实例的流程示意图,如图7e所示,当基于第一路流处理资源接收到第一客户端的操作数据时,云游戏的处理器可以将第一客户端的操作数据注入至第一操作控件中,以控制第一操作控件操作云游戏实例;具体地,当第一客户端请求对云游戏实例进行操作时,第一媒体流传输子模块可以接收第一客户端的操作数据,并将接收到的第一客户端的操作数据传输至第一视频编码子模块,第一视频编码子模块可以将第一客户端的操作数据注入至第一操作控件中,以控制第一操作控件操作云游戏实例。当第一视频编码子模块获取到云游戏实例的游戏画面时,第一视频编码子模块可以对游戏画面进行编码处理得到第一视频流,并将第一视频流传输至第一媒体传输子模块,然后由第一媒体传输子模块将包含第一视频流和音频流的第一媒体流传输至第一客户端。当基于第二路流处理资源接收到第二客户端的操作数据时,云游戏的服务器可以将第二客户端的操作数据注入第二操作控件,以控制第二操作控件对云游戏实例进行操作;具体地,当第二客户端请求对云游戏实例进行操作时,第二媒体流传输子模块可以接收第二客户端的操作数据,并将接收到的第二客户端的操作数据传输至第二视频编码子模块,第二视频编码子模块可以将第二客户端的操作数据注入至第二操作控件中,以控制第二操作控件操作云游戏实例。当第二视频编码子模块获取到云游戏实例的游戏画面时,第二视频编码子模块可以对游戏画面进行编码处理得到第二视频流,并将第二视频流传输至第二媒体传输子模块,然后由第二媒体传输子模块将包含第二视频流和音频流的第二媒体流传输至第一客户端。

其中,第一客户端与云游戏实例中的第一操作控件相映射可以包括以下两种情况:第一路流处理资源的标识与第一操作控件的标识之间存在映射关系,也就是说,在第一路流处理资源的标识与第一操作控件的标识之间建立了绑定关系;或者,第一客户端发送的操作数据中携带第一操作控件的标识。第二客户端与云游戏实例中的第二操作控件相映射可以包括以下两种情况:第二路流处理资源的标识与第二操作控件的标识之间存在映射关系,也就是说,在第二路流处理资源的标识与第二操作控件的标识之间建立了绑定关系;或者,第二客户端发送的操作数据中携带第二操作控件的标识。

由上述多用户同时操作云游戏实例的描述可知,云游戏实例支持多客户端同时注入操作数据,有效丰富了云游戏的操作模式。

本申请实施例中,云游戏的服务器可以根据接入云游戏实例的客户端的传输参数设置请求,实时调整或修正传输参数,较好地满足接入云游戏实例的客户端的传输参数设置需求,非常灵活高效。云游戏的服务器中的媒体编码模块和媒体传输模块可以联合进行流量控制,能够有效降低媒体流的传输时延,提升媒体流中的游戏画面的质量,从而在客户端与云游戏实例之间进行高效且稳定地数据传输。另外,云游戏实例还支持权限控制,具备针对云游戏的操作权限的客户端的操作数据可以注入云游戏实例中,不具备针对云游戏的操作权限的客户端的操作数据在传输过程中被丢弃,有效丰富了云游戏的操作模式。此外,云游戏实例还支持多人同时操作,即接入云游戏实例的多个客户端均可向云游戏实例注入操作数据,进一步丰富了云游戏的操作模式。

上述各实施例中提及的云游戏的处理方案可以应用于主播用户带练云游戏以及街机类多用户操作云游戏两个游戏场景中,下面分别对两个游戏场景进行介绍:

(1)主播用户带练云游戏

在主播带练云游戏的游戏场景中,第一客户端可以是主播用户所使用的主播客户端,第二客户端可以是观众用户所使用的观众客户端;在实际游戏场景中,观众用户可以包括至少一个,也就是说观众客户端可以包括至少一个,本申请实施例以包括一个观众用户的情况为例进行说明。

对于主播用户而言,云游戏的服务器可以根据主播客户端针对云游戏的游玩请求创建云游戏实例,并创建云游戏实例的第一路流处理资源,以及将主播客户端与第一路流处理资源进行绑定,云游戏实例与主播客户端之间可以基于第一路流处理资源进行数据传输。其中,云游戏的游玩请求是在主播客户端响应于主播用户的云游戏游玩操作生成的;如图8a所示,图8a示出了本申请一个示例性实施例提供的一种云游戏游玩操作的界面示意图,主播客户端的服务界面80中显示有多个云游戏的游戏信息(例如云游戏的图标、云游戏的画报等等)和云游戏的游玩控件。举例来说,当服务界面80中的云游戏2的游戏控件801被选中时,主播用户的客户端可以生成针对云游戏2的游玩请求,并将云游戏2的游玩请求发送至云游戏的服务器。在一种实现方式中,若云游戏2中已创建的云游戏实例的数量未超过实例创建阈值,那么云游戏的服务器可以根据主播客户端针对云游戏2的游玩请求创建云游戏2的云游戏实例;云游戏实例创建成功,则主播客户端中可以显示云游戏2的云游戏实例的游戏界面81;其中,实例创建阈值是指一个云游戏允许创建的云游戏实例的数量上限。在另一种实现方式中,若云游戏2中已创建的云游戏实例的数量已超过实例创建阈值时,云游戏的处理器可以向主播客户端返回云游戏实例创建失败通知,主播客户端可以根据云游戏实例创建失败通知,在服务界面80中输出创建失败提示消息802(例如图8a所示的“目前暂无空闲设备,排队中,请耐心等待”),主播客户端需排队等待直到具备云游戏实例的创建资格(即云游戏2中已创建的云游戏实例的数量未超过实例创建阈值)时,云游戏的服务器可以针对云游戏2的游玩请求创建云游戏2的游戏实例;云游戏实例创建成功,则主播客户端中可以显示云游戏2的云游戏实例的游戏界面81。

如图8b所示,图8b示出了本申请一个示例性实施例提供的一种云游戏分享操作的界面示意图。当云游戏2的云游戏实例创建成功后,主播客户端中显示有云游戏2的游戏界面81,游戏界面81中可以包括云游戏实例的分享控件811;当云游戏实例的分享控件811被选中时,主播客户端可以向云游戏的服务器发送针对云游戏实例的分享请求;云游戏的服务器接收到主播客户端针对云游戏实例的分享请求后,响应于主播客户端的分享请求,向主播客户端返回云游戏实例的分享口令;在一种实现方式中,主播客户端可以将云游戏实例的分享口令输出至游戏界面81中,分享口令可以包括云游戏实例的标识以及云游戏实例的登录密码,如图8b所示的分享口令812“您的账号口令为:0021”;在另一种实现方式中,主播客户端可以将云游戏实例的分享口令发送至观众客户端。

对于观众用户,观众用户的处理流程可参见图8c,图8c示出了本申请一个示例性实施例提供的一种云游戏实例的接入过程的流程示意图。如图8c所示,当观众用户获取到分享口令时,若观众用户使用的终端未安装云游戏的客户端(即未安装观众客户端),则观众用户需要在终端中下载并安装登录云游戏的客户端。在一种实现方式中,若观众用户的终端已安装云游戏的客户端,则观众用户可以在观众客户端中输入分享口令,例如可以在观众客户端的游戏参与界面中输入分享口令;输入分享口令之后,观众客户端可以向云游戏的服务器发送接入请求。在另一种实现方式中,分享口令可以是指云游戏的参与链接,若观众用户的终端已安装云游戏的客户端,那么观众用户可以直接点击观众客户端中显示的主播直播界面中的分享口令,或者观众用户可以直接点击主播客户端分享至观众客户端中的分享口令,便可触发向云游戏的服务器发送接入请求。若已接入云游戏2的云游戏实例的客户端的数量超过接入数量阈值,则云游戏的服务器可以向观众客户端返回接入失败通知;观众客户端接收到接入失败通知之后,可以根据接入失败通知向观众用户输出接入失败提示,例如接入失败提示的提示内容可以为“云游戏2的接入位置已满”;其中,接入数量阈值是指允许接入云游戏2的云游戏实例中的客户端的数量上限。若已接入云游戏2的云游戏实例的客户端的数量未超过接入数量阈值,则观众客户端允许接入云游戏实例;观众客户端成功接入云游戏实例之后,云游戏的服务器可以创建云游戏实例的第二路流处理资源,以及将观众客户端与第二路流处理资源进行绑定,云游戏实例与观众客户端之间可以基于第二路流处理资源进行数据传输。

在观众客户端未接入云游戏实例之前,主播客户端具备云游戏实例的操作权限,即主播客户端可以对云游戏实例进行操作。在观众客户端成功接入至云游戏实例之后,云游戏的服务器可以根据主播客户端的权限设置请求为观众客户端配置权限。权限可以包括以下任意一种:针对云游戏实例的操作权限、针对云游戏实例的浏览权限、针对云游戏实例的操作权限和浏览权限;针对云游戏实例的操作权限是指可以对云游戏实例进行操作的权限;针对云游戏实例的浏览权限是指对云游戏实例的游戏画面进行浏览的权限,具备云游戏实例的浏览权限的用户只能浏览其他用户操作云游戏实例的游戏画面,不能对云游戏实例进行操作。在一种实现方式中,若云游戏的服务器根据主播客户端的权限设置请求为观众客户端配置云游戏实例的操作权限,此时观众客户端的操作数据被注入至云游戏实例中,观众客户端可以对云游戏实例进行操作;主播客户端可以对观众客户端控制的云游戏实例的游戏画面进行浏览,并在游戏界面81中输出控制提示813(例如图8b所示的“观众客户端正在控制”)。在另一种实现方式中,若云游戏的服务器根据主播客户端的权限设置请求为观众客户端配置云游戏实例的浏览权限,此时观众客户端的操作数据在传输至云游戏实例的过程中被丢弃,观众客户端不能对云游戏实例进行操作,而只能对主播客户端控制的云游戏实例的游戏画面进行浏览。

(2)街机类多用户操作云游戏

在街机类多用户操作云游戏的游戏场景中,对于第一客户端触发创建云游戏实例的过程,以及第二客户端接入云游戏实例的过程,与主播带练云游戏的游戏场景类似,在此不再赘述。而街机类多用户操作云游戏的游戏场景与主播带练云游戏的游戏场景的区别在于:在主播带练云游戏的游戏场景中,第二客户端对于云游戏实例的权限是云游戏的服务器根据第一客户端的权限设置请求配置的;主播客户端与观众客户端中,只有一个客户端具备云游戏实例的操作权限,其他客户端具备云游戏实例的浏览权限;而在街机类多用户操作云游戏的游戏场景中,接入云游戏实例的所有客户端均具备对云游戏的操作权限,都可以对云游戏实例进行操作。例如,在双人格斗云游戏中,双人格斗云游戏的云游戏实例创建成功后,第一客户端映射到第一操作控件,第一客户端在游戏界面中选择双人模式;然后,第二客户端接入至云游戏实例之后,第二客户端映射到第二操作控件;第一客户端的用户可以通过向第一操作控件注入第一客户端的操作数据,以控制第一操作杆根据注入的操作数据对云游戏实例中的第一格斗选手进行操作,第二客户端的用户可以通过向第二操作杆注入第二客户端的操作数据,以控制第二操作杆根据注入的操作数据对云游戏实例中的第二个格斗选手进行操作,实现双人格斗。

由上述关于主播用户带练云游戏的游戏场景可知,主播客户端可以通过向云游戏的服务器发送权限设置请求,实现操作权限在主播客户端和观众客户端之间进行切换和转让,满足主播带练的游戏需求。由上述街机类多用户操作云游戏的游戏场景可知,接入云游戏实例的多个客户端均具备针对云游戏实例的操作权限,均可以对云游戏实例进行操作,满足多用户参与的游戏需求。本申请实施例提及的云游戏的处理方案可以丰富云游戏的游玩场景;并且参与云游戏的客户端均具备独立的一路流处理资源,可以保证客户端与云游戏实例之间的数据传输过程高效平稳地进行,各个客户端中显示的游戏画面清晰而流畅,有效提升了用户的游戏参与体验。

上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面提供了本申请实施例的装置。

请参见图9,图9示出了本申请一个示例性实施例提供的一种云游戏的处理装置的结构示意图,该云游戏的处理装置90可以设置于云游戏的处理设备中,云游戏的处理设备可以是图3所示的云游戏的处理系统中的服务器304;云游戏的处理装置90可以用于执行图4或图6所示的方法实施例中的相应步骤,该云游戏的处理装置90可以包括如下单元:

媒体传输模块901,用于接收第二客户端针对云游戏实例的接入请求,云游戏实例是根据第一客户端针对云游戏的游玩请求而创建的,第一客户端与云游戏实例的第一路流处理资源相绑定,且云游戏实例与第一客户端基于第一路流处理资源进行数据传输;

媒体编码模块902和媒体传输模块901,均用于响应于第二客户端的接入请求,创建云游戏实例的第二路流处理资源;

媒体传输模块901,还用于将第二路流处理资源与第二客户端进行绑定;以及,在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输。

在一种实现方式中,第二客户端的接入请求中携带第二客户端的用户标识和第一接入策略,第一接入策略用于表示第二客户端的类型为使用者类型;

媒体编码模块902和媒体传输模块901,均用于响应于所述第二客户端的接入请求,创建所述云游戏实施例的第二路流处理资源时,具体用于执行如下步骤:

根据第二客户端的用户标识,为第二客户端分配接入会话标识;

根据第一接入策略,实时生成云游戏实例的第二路流处理资源及第二路流处理资源的标识。

在一种实现方式中,媒体传输模块901,用于将第二路流处理资源与第二客户端进行绑定时,具体用于执行如下步骤:

在第二客户端的接入会话标识与第二路流处理资源的标识之间建立绑定关系。

在一种实现方式中,媒体传输模块901,还用于执行如下步骤:

接收第三客户端针对云游戏实例的接入请求,第三客户端的接入请求中携带第三客户端的用户标识和第二接入策略,第二接入策略用于表示第三客户端的类型为观察者类型;

响应于第三客户端的接入请求,从第一路流处理资源和第二路流处理资源中选择一路流处理资源;

将所选择的一路流处理资源与第三客户端进行绑定;以及,在第三客户端与云游戏实例之间基于所选择的一路流处理资源进行数据传输。

在一种实现方式中,媒体传输模块901用于在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输时,具体用于执行如下步骤:

获取云游戏实例中的媒体流;

基于第二路流处理资源将媒体流发送至第二客户端;以及,当第二客户端请求对云游戏实例进行操作时,基于第二路流处理资源接收第二客户端的操作数据。

在一种实现方式中,媒体传输模块901还用于执行如下步骤:

基于第二路流处理资源向第二客户端发送网络探测包,并接收第二客户端反馈的网络信息;以及,根据网络信息调整网络探测包的数据量,并调整第二路流处理资源的传输参数。

在一种实现方式中,媒体传输模块901,用于根据网络信息调整网络探测包的数据量,并调整第二路流处理资源的传输参数时,具体用于执行如下步骤:

若网络信息指示网络已发生拥塞,则减小网络探测包的数据量,并对第二路流处理资源的传输参数进行第一调整;

若网络信息指示网络未发生拥塞,则增加网络探测包的数的量,并对第二路流处理资源的传输参数进行第二调整;

其中,第一调整包括以下至少一种:降低第二路流处理资源中的媒体编码码率,降低第二路流处理资源中的媒体帧的帧率,丢弃第二路流处理资源中的部分媒体帧;

第二调整包括以下至少一种:提高第二路流处理资源中的媒体编码码率,提高第二路流处理资源中的媒体帧的帧率。

在一种实现方式中,媒体传输模块901还用于执行如下步骤:根据第一客户端的权限设置请求为第二客户端配置权限,权限包括以下任一种:针对云游戏实例的操作权限,针对云游戏实例的浏览权限,针对云游戏实施例的操作权限和浏览权限;

媒体编码模块902还用于执行如下步骤:若第二客户端不具备针对云游戏实例的操作权限,则当基于第二路流处理资源接收到第二客户端的操作数据时,丢弃第二客户端的操作数据。

在一种实现方式中,第一客户端与云游戏实例中的第一操作控件相映射,第二客户端与云游戏实例中的第二操作控件相映射;

当媒体传输模块901基于第一路流处理资源接收到第一客户端的操作数据时,媒体编码模块902还用于执行如下步骤:将第一客户端的操作数据注入至第一操作控件中,以控制第一操作控件操作云游戏实例;

当媒体传输模块901基于第二路流处理资源接收到第二客户端的操作数据时,媒体编码模块902还用于执行如下步骤:将第二客户端的操作数据注入至第二操作控件中,以控制第二操作控件操作云游戏实例。

在一种实现方式中,媒体传输模块901还用于执行如下步骤:基于第一路流处理资源接收第一客户端发送的设备分辨率;

媒体编码模块902还用于执行如下步骤:根据设备分辨率设置云游戏实例的容器窗口分辨率;

媒体传输模块901还用于执行如下步骤:将容器窗口分辨率基于第一路流处理资源发送至第一客户端。

在一种实现方式中,媒体传输模块901,还用于执行如下步骤:当第二客户端接入至云游戏实例后,基于第二路流处理资源向第二客户端发送容器窗口分辨率;

基于第二路流处理资源接收第二客户端发送的分辨率设置请求,分辨率设置请求中携带第二客户端请求设置的编码分辨率;

根据容器窗口分辨率对请求设置的编码分辨率进行修正;

媒体编码模块902,还用于执行如下步骤:采用修正后的编码分辨率对传输的媒体流进行编码处理。

在一种实现方式中,媒体传输模块901还用于执行如下步骤:接收第一客户端针对云游戏实例的分享请求;

响应于第一客户端的分享请求,向第一客户端返回云游戏实例的分享口令,以使第一客户端将分享口令分享至除第一客户端之外的其他客户端;分享口令包含云游戏实例的标识及云游戏实例的登录密码;

其中,第二客户端的接入请求是在第二客户端获得分享口令之后,通过分享口令触发发送的。

根据本申请的一个实施例,图9所示的云游戏的处理装置90中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该云游戏的处理装置90也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括例如中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的通用计算机的通用计算设备上运行能够执行如图4或图6中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图9中所示的云游戏的处理装置90,以及来实现本申请实施例的云游戏的处理方法。计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算设备中,并在其中运行。

本申请实施例中,第一客户端针对云游戏发起游玩请求并创建云游戏实例时,会为该第一客户端分配云游戏实例的第一路流处理资源,并且该第一客户端与该第一路流处理资源相绑定,云游戏实例与第一客户端基于该第一路流处理资源进行数据传输;第二客户端可以请求接入至由第一客户端请求创建的该云游戏实例中,响应于第二客户端的接入请求,会为第二客户端分配云游戏实例的第二路流处理资源,将第二路流处理资源与第二客户端进行绑定,第二客户端与云游戏实例之间则可基于第二路流处理资源进行数据传输。由此可见,本申请实施例支持对同一个云游戏实例的多路操作,即允许多个客户端(如第一客户端和第二客户端)接入并操作同一个云游戏实例,有效提升了云游戏操作模式的灵活性与多样性。另外,接入至同一个云游戏实例的每个客户端均各自绑定云游戏实例的一路单独的流处理资源,并基于各自绑定的单独的流处理资源来进行数据传输,这样就有利于基于每路流处理资源来分别对各个客户端进行有针对性地、独立地编码流控和质量控制,并且由于各路流处理资源之间相互独立、互不影响,从而能够在客户端与云游戏实例之间进行高效且稳定地数据传输。

请参见图10,图10示出了本申请一个示例性实施例提供的一种云游戏的处理设备的结构示意图,该云游戏的处理设备100至少包括处理器1001、计算机可读存储介质1002以及通信接口1003。其中,处理器1001、计算机可读存储介质1002以及通信接口1003可通过总线或者其它方式连接。通信接口1003可以用于接收第一客户端的游玩请求、第二客户端的接入请求、第一客户端的操作数据、第二客户端的操作数据等等,通信接口1003还可以向第一客户端发送媒体流、向第二客户端发送媒体流等等。计算机可读存储介质1002可以存储在存储器中,计算机可读存储介质1002用于存储计算机程序,计算机程序包括计算机指令。处理器1001用于执行计算机指令。处理器1001(或称CPU(Central Processing Unit,中央处理器))是云游戏的处理设备100的计算核心以及控制核心,其适于实现一条或多条计算机指令,具体适于加载并执行一条或多条计算机指令从而实现相应方法流程或相应功能。

本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是云游戏的处理设备100中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质1002既可以包括云游戏的处理设备100中的内置存储介质,当然也可以包括云游戏的处理设备100所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了云游戏的处理设备100的操作系统。并且,在该存储空间中还存放了适于被处理器1001加载并执行的一条或多条的计算机指令,这些计算机指令可以是一个或多个的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质1002可以是高速RAM存储器,也可以是非不稳定的存储器(Non-Volatile Memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器1001的计算机可读存储介质。

该云游戏的处理设备100可以是图3所示的云游戏的处理系统中的服务器304,该计算机可读存储介质1002中存储有计算机程序,计算机程序包括一条或多条计算机指令;由处理器1001加载并执行一条或多条计算机指令,以实现图4或图6所示方法实施例中的相应步骤;具体实现中,计算机可读存储介质1002中的计算机指令由处理器1001加载并执行如下步骤:

接收第二客户端针对云游戏实例的接入请求,云游戏实例是根据第一客户端针对云游戏的游玩请求而创建的,第一客户端与云游戏实例的第一路流处理资源相绑定,且云游戏实例与第一客户端基于第一路流处理资源进行数据传输;

响应于第二客户端的接入请求,创建云游戏实例的第二路流处理资源;

将第二路流处理资源与第二客户端进行绑定;以及,在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输。

在一种实现方式中,第二客户端的接入请求中携带第二客户端的用户标识和第一接入策略,第一接入策略用于表示第二客户端的类型为使用者类型;

计算机可读存储介质1002中的计算机指令由处理器1001加载并且执行响应于所述第二客户端的接入请求,创建所述云游戏实施例的第二路流处理资源时,具体用于执行如下步骤:

根据第二客户端的用户标识,为第二客户端分配接入会话标识;

根据第一接入策略,实时生成云游戏实例的第二路流处理资源及第二路流处理资源的标识。

在一种实现方式中,计算机可读存储介质1002中的计算机指令由处理器1001加载并且执行将第二路流处理资源与第二客户端进行绑定时,具体用于执行如下步骤:

在第二客户端的接入会话标识与第二路流处理资源的标识之间建立绑定关系。

在一种实现方式中,计算机可读存储介质1002中的计算机指令由处理器1001加载并且还用于执行如下步骤:

接收第三客户端针对云游戏实例的接入请求,第三客户端的接入请求中携带第三客户端的用户标识和第二接入策略,第二接入策略用于表示第三客户端的类型为观察者类型;

响应于第三客户端的接入请求,从第一路流处理资源和第二路流处理资源中选择一路流处理资源;将所选择的一路流处理资源与第三客户端进行绑定;以及,在第三客户端与云游戏实例之间基于所选择的一路流处理资源进行数据传输。

在一种实现方式中,计算机可读存储介质1002中的计算机指令由处理器1001加载并且执行在第二客户端与云游戏实例之间基于第二路流处理资源进行数据传输时,具体用于执行如下步骤:

获取云游戏实例中的媒体流;

基于第二路流处理资源将媒体流发送至第二客户端;以及,当第二客户端请求对云游戏实例进行操作时,基于第二路流处理资源接收第二客户端的操作数据。

在一种实现方式中,计算机可读存储介质1002中的计算机指令由处理器1001加载并且还用于执行如下步骤:

基于第二路流处理资源向第二客户端发送网络探测包,并接收第二客户端反馈的网络信息;以及,根据网络信息调整网络探测包的数据量,并调整第二路流处理资源的传输参数。

在一种实现方式中,计算机可读存储介质1002中的计算机指令由处理器1001加载并且执行根据网络信息调整网络探测包的数据量,并调整第二路流处理资源的传输参数时,具体用于执行如下步骤:

若网络信息指示网络已发生拥塞,则减小网络探测包的数据量,并对第二路流处理资源的传输参数进行第一调整;

若网络信息指示网络未发生拥塞,则增加网络探测包的数的量,并对第二路流处理资源的传输参数进行第二调整;

其中,第一调整包括以下至少一种:降低第二路流处理资源中的媒体编码码率,降低第二路流处理资源中的媒体帧的帧率,丢弃第二路流处理资源中的部分媒体帧;

第二调整包括以下至少一种:提高第二路流处理资源中的媒体编码码率,提高第二路流处理资源中的媒体帧的帧率。

在一种实现方式中,计算机可读存储介质1002中的计算机指令由处理器1001加载并且还用于执行如下步骤:

根据第一客户端的权限设置请求为第二客户端配置权限,权限包括以下任一种:针对云游戏实例的操作权限,针对云游戏实例的浏览权限,针对云游戏实施例的操作权限和浏览权限;

若第二客户端不具备针对云游戏实例的操作权限,则当基于第二路流处理资源接收到第二客户端的操作数据时,丢弃第二客户端的操作数据。

在一种实现方式中,第一客户端与云游戏实例中的第一操作控件相映射,第二客户端与云游戏实例中的第二操作控件相映射;计算机可读存储介质1002中的计算机指令由处理器1001加载并且还用于执行如下步骤:

当基于第一路流处理资源接收到第一客户端的操作数据时,将第一客户端的操作数据注入至第一操作控件中,以控制第一操作控件操作云游戏实例;

当基于第二路流处理资源接收到第二客户端的操作数据时,将第二客户端的操作数据注入至第二操作控件中,以控制第二操作控件操作云游戏实例。

在一种实现方式中,计算机可读存储介质1002中的计算机指令由处理器1001加载并且还用于执行如下步骤:

基于第一路流处理资源接收第一客户端发送的设备分辨率;

根据设备分辨率设置云游戏实例的容器窗口分辨率;

将容器窗口分辨率基于第一路流处理资源发送至第一客户端。

在一种实现方式中,计算机可读存储介质1002中的计算机指令由处理器1001加载并且还用于执行如下步骤:

当第二客户端接入至云游戏实例后,基于第二路流处理资源向第二客户端发送容器窗口分辨率;

基于第二路流处理资源接收第二客户端发送的分辨率设置请求,分辨率设置请求中携带第二客户端请求设置的编码分辨率;

根据容器窗口分辨率对请求设置的编码分辨率进行修正;

采用修正后的编码分辨率对基于第二路流处理资源传输的媒体流进行编码处理。

在一种实现方式中,计算机可读存储介质1002中的计算机指令由处理器1001加载并且还用于执行如下步骤:

接收第一客户端针对云游戏实例的分享请求;

响应于第一客户端的分享请求,向第一客户端返回云游戏实例的分享口令,以使第一客户端将分享口令分享至除第一客户端之外的其他客户端;分享口令包含云游戏实例的标识及云游戏实例的登录密码;

其中,第二客户端的接入请求是在第二客户端获得分享口令之后,通过分享口令触发发送的。

本申请实施例中,第一客户端针对云游戏发起游玩请求并创建云游戏实例时,会为该第一客户端分配云游戏实例的第一路流处理资源,并且该第一客户端与该第一路流处理资源相绑定,云游戏实例与第一客户端基于该第一路流处理资源进行数据传输;第二客户端可以请求接入至由第一客户端请求创建的该云游戏实例中,响应于第二客户端的接入请求,会为第二客户端分配云游戏实例的第二路流处理资源,将第二路流处理资源与第二客户端进行绑定,第二客户端与云游戏实例之间则可基于第二路流处理资源进行数据传输。由此可见,本申请实施例支持对同一个云游戏实例的多路操作,即允许多个客户端(如第一客户端和第二客户端)接入并操作同一个云游戏实例,有效提升了云游戏操作模式的灵活性与多样性。另外,接入至同一个云游戏实例的每个客户端均各自绑定云游戏实例的一路单独的流处理资源,并基于各自绑定的单独的流处理资源来进行数据传输,这样就有利于基于每路流处理资源来分别对各个客户端进行有针对性地、独立地编码流控和质量控制,并且由于各路流处理资源之间相互独立、互不影响,从而能够在客户端与云游戏实例之间进行高效且稳定地数据传输。

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

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种云手机游戏进度数据的处理方法、系统和存储介质
  • 实体游戏数据处理方法、装置、设备、存储介质及实体游戏系统
技术分类

06120112849532