一种图像传输的方法以及相关装置与流程

文档序号:18450871发布日期:2019-08-17 01:15阅读:196来源:国知局
一种图像传输的方法以及相关装置与流程

本申请涉及互联网技术领域,尤其涉及一种图像传输的方法以及相关装置。



背景技术:

随着互联网技术的快速发展,各类联网游戏层出不穷,为用户提供了更为丰富的娱乐方式。然而,随着联网游戏的不断发展,联网游戏也对用于运行联网游戏的终端提出了更为严格的要求;例如计算机,如果想玩一款大型的网络游戏,对于计算机的内存、处理器以及显卡等都有一定的要求,否则,用户无法获得良好的游戏体验。

为解决因终端的限制而难以流畅地开展联网游戏的问题,指令流云游戏应运而生。指令流云游戏是指在服务器执行游戏的主要逻辑,在客户端获取用户的操作输入,将服务器基于用户的操作输入运行游戏之后,所得到的图形界面通过网络传输至客户端,从而使得用户可以通过客户端游玩联网游戏。

服务器传输图形界面至客户端主要是将渲染指令发送至客户端,其中,渲染指令中携带有渲染所需的图像,客户端通过回放渲染指令,可以得到相应的游戏渲染画面。然而,在渲染指令中携带图像进行发送会导致所发送的渲染指令数据量较大,容易造成客户端等待渲染指令的传输,从而引起客户端的画面卡顿。



技术实现要素:

本申请实施例提供了一种图像传输的方法以及相关装置,通过建立相互独立的第一数据传输通道和第二数据传输通道,分别在第一数据传输通道和第二数据传输通道进行渲染指令和图像数据的发送,使得渲染指令的传输时间不会受到图像数据的传输时间的影响,提高了渲染指令的传输效率,从而改善了客户端容易出现画面卡顿的问题。

有鉴于此,本申请第一方面提供一种图像传输的方法,包括:

通过云应用客户端获取渲染指令,其中,云应用客户端布署于服务器上;

根据渲染指令获取图像集合,其中,图像集合中包括至少一个待渲染的图像;

通过第一数据传输通道向客户端发送渲染指令;

通过第二数据传输通道向客户端发送图像集合,其中,渲染指令用于指示客户端对图像集合中的图像进行渲染。

本申请第二方面提供另一种图像传输的方法,包括:

接收服务器通过第一数据传输通道发送的渲染指令;

接收服务器通过第二数据传输通道发送的图像集合,其中,图像集合中包括至少一个待渲染的图像;

根据渲染指令,对图像集合中的图像进行渲染。

本申请第三方面提供一种服务器,包括:

获取单元,用于通过云应用客户端获取渲染指令,其中,云应用客户端布署于服务器上;

获取单元,还用于根据渲染指令获取图像集合,其中,图像集合中包括至少一个待渲染的图像;

发送单元,用于通过第一数据传输通道向客户端发送渲染指令;

发送单元,还用于通过第二数据传输通道向客户端发送图像集合,其中,渲染指令用于指示客户端对图像集合中的图像进行渲染。

在一种可能的设计中,在本申请实施例的第三方面的第一种实现方式中,还包括加入单元和确定单元;

加入单元,用于将第一图像以及第二图像加入至第一处理队列,其中,第一图像以及第二图像均属于图像集合中待渲染的图像;

确定单元,用于根据第一处理队列确定图像发送顺序,其中,图像发送顺序用于指示第一图像与第二图像之间的发送顺序;

发送单元,还用于根据图像发送顺序,通过第二数据传输通道向客户端发送第一图像以及第二图像。

在一种可能的设计中,在本申请实施例的第三方面的第二种实现方式中,

获取单元,还用于获取第一优先级以及第二优先级,其中,第一优先级表示第一图像在预设规则下的优先级,第二优先级表示第二图像在预设规则下的优先级;

发送单元,还用于若第一优先级高于第二优先级,则根据第一处理队列确定第一图像在第二图像之前发送;

发送单元,还用于若第二优先级高于第一优先级,则根据第一处理队列确定第一图像在第二图像之后发送。

在一种可能的设计中,在本申请实施例的第三方面的第三种实现方式中,还包括分割单元;

分割单元,用于若第三图像所占用的存储量大于预置值,对第三图像进行数据分割,得到图像子数据集合,其中,第三图像属于第一处理队列中的图像,图像子数据集合包括至少两个图像子数据,至少两个图像子数据所占用的存储量均小于或等于预置值;

加入单元,还用于将第一图像子数据和第二图像子数据加入至第二处理队列,第一图像子数据和第二图像子数据均属于图像子数据集合中的图像子数据;

确定单元,还用于根据第二处理队列确定图像子数据发送顺序,其中,图像子数据发送顺序用于指示第一图像子数据和第二图像子数据之间的发送顺序;

发送单元,还用于根据图像子数据发送顺序,通过第二数据传输通道向客户端发送第一图像子数据和第二图像子数据。

在一种可能的设计中,在本申请实施例的第三方面的第四种实现方式中,还包括调整单元;

调整单元,用于若第一处理队列中相邻的多个第四图像所占用的存储量之和小于预置值,则调整多个第四图像在第一处理队列中的发送顺序,多个第四图像在第一处理队列中调整后的发送顺序为多个第四图像并行发送;

发送单元,还用于根据调整后的发送顺序,通过第二数据传输通道向客户端发送多个第四图像。

在一种可能的设计中,在本申请实施例的第三方面的第五种实现方式中,还包括剔除单元;

获取单元,还用于获取客户端中已缓存图像的标识,其中,已缓存图像为客户端缓存在本地的图像;

剔除单元,用于若图像集合中存在有第五图像,则将第五图像从图像集合中剔除,其中,第五图像的标识与已缓存图像的标识相同;

发送单元,还用于通过第二数据传输通道向客户端发送剔除第五图像后的图像集合。

本申请第四方面提供一种终端,包括:

第一接收单元,用于接收服务器在第一数据传输通道中发送的渲染指令;

第二接收单元,用于接收服务器在第二数据传输通道中发送的图像数据;

渲染单元,用于基于渲染指令,根据图像数据进行渲染。

本申请第五方面提供一种服务器,包括:存储器、收发器、处理器以及总线系统;

其中,存储器用于存储程序;

处理器用于执行存储器中的程序,包括如下步骤:

通过云应用客户端获取渲染指令,其中,云应用客户端布署于服务器上;

根据渲染指令获取图像集合,其中,图像集合中包括至少一个待渲染的图像;

通过第一数据传输通道向客户端发送渲染指令;

通过第二数据传输通道向客户端发送图像集合,其中,渲染指令用于指示客户端对图像集合中的图像进行渲染;

总线系统用于连接存储器以及处理器,以使存储器以及处理器进行通信。

本申请第六方面提供一种终端,包括:存储器、收发器、处理器以及总线系统;

其中,存储器用于存储程序;

处理器用于执行存储器中的程序,包括如下步骤:

接收服务器通过第一数据传输通道发送的渲染指令;

接收服务器通过第二数据传输通道发送的图像集合,其中,图像集合中包括至少一个待渲染的图像;

根据渲染指令,对图像集合中的图像进行渲染;

总线系统用于连接存储器以及处理器,以使存储器以及处理器进行通信。

本申请第七方面提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一方面的方法。

本申请的第八方面提供了一种包含指令的计算机程序产品,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一方面的方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

通过云应用客户端获取渲染指令,其中,云应用客户端布署于服务器上,其中,渲染指令指示有渲染调用图像;根据渲染指令获取图像数据,其中,图像数据包括渲染过程所调用的图像;在第一数据传输通道中将渲染指令发送至终端,在第二数据传输通道中将图像数据发送至终端,其中,渲染指令用于指示终端根据图像数据进行渲染;通过上述方式,建立了相互独立的第一数据传输通道和第二数据传输通道,分别在第一数据传输通道和第二数据传输通道进行渲染指令和图像数据的发送,使得渲染指令的传输时间不会受到图像数据的传输时间的影响,提高了渲染指令的传输效率,从而改善了客户端容易出现画面卡顿的问题。

附图说明

图1为实现本申请实施例提供的图像传输的方法的系统架构图;

图2为本申请实施例中图像传输的方法一个实施例的流程示意图;

图3为本实施例中确定图像集合中图像的发送顺序的一个示例图;

图4为本实施例中根据预设规则确定图像集合中图像的发送顺序的一个示例图;

图5为本实施例中对图像集合中图像进行分割后再发送的一个示例图;

图6为本实施例中发送图像时网络传输流量分布的一个示例图;

图7为本实施例中对图像集合中图像进行并行发送的一个示例图;

图8为本申请实施例中图像传输的方法另一个实施例的流程示意图;

图9为本申请实施例应用场景中图像传输的一个流程示意图;

图10为本发明实施例中服务器一个实施例示意图;

图11为本发明实施例中服务器另一个实施例示意图;

图12为本发明实施例中服务器另一个实施例示意图;

图13为本发明实施例中服务器另一个实施例示意图;

图14为本发明实施例中服务器另一个实施例示意图;

图15是本申请实施例提供的一种服务器结构示意图;

图16示出的是与本申请实施例提供的终端结构框图。

具体实施方式

本申请实施例提供了一种图像传输的方法以及相关装置,通过建立相互独立的第一数据传输通道和第二数据传输通道,分别在第一数据传输通道和第二数据传输通道进行渲染指令和图像数据的发送,使得渲染指令的传输时间不会受到图像数据的传输时间的影响,提高了渲染指令的传输效率,从而改善了客户端容易出现画面卡顿的问题。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应理解,目前市面上的指令流云游戏主要是通过服务器将携带有图像数据的渲染指令发送给客户端,客户端通过回放渲染指令,对图像进行渲染,可以得到相应的游戏渲染画面。其中,渲染指令和图像数据是混合在一起发送至客户端的,服务器通常需要将混合在一起的渲染指令和图像数据打包压缩后,再将压缩包发送至客户端;客户端在接收到压缩包后,需要先对压缩包解压,得到渲染指令和图像数据,然后再对渲染指令进行解析和回放,从而得到相应的游戏渲染画面。然而,由于图像数据的数据量通常较大,将渲染指令和图像数据进行打包压缩以及发送均需要一定的时间,客户端需要等待较长的时间才能够获得渲染指令,从而导致客户端难以及时对渲染指令进行解析和回放,容易引起客户端的画面卡顿。

有鉴于此,本申请实施例提供了一种图像传输的方法,通过建立相互独立的第一数据传输通道和第二数据传输通道,分别在第一数据传输通道和第二数据传输通道进行渲染指令和图像数据的发送,使得渲染指令的传输时间不会受到图像数据的传输时间的影响,提高了渲染指令的传输效率,从而改善了客户端容易出现画面卡顿的问题。

图1示出了实现本申请实施例提供的图像传输的方法的系统架构图,该系统可以包括:服务器及终端,其中:

服务器上布署有云应用客户端,由于本申请实施例提供的图像传输的方法可以适用于基于云计算的应用场景,将由服务器执行云应用客户端的主要逻辑,将与用户交互有关的应用图形界面,通过网络传送给用户侧的客户端。

以游戏为例,该服务器上布署有云游戏客户端,即服务器是云游戏的云端,用户玩该游戏时,游戏的主要逻辑是在云端的云游戏客户端上运行,不需要在本地下载游戏程序,本申请实施例对云游戏的应用场景不再详述。

终端上布署有用户侧的客户端,即终端是应用的用户端,终端具体可以包括但不限于智能手机、个人电脑、掌上电脑、电视机顶盒等终端设备,用来输出应用图形界面,并将用户通过如鼠标、键盘等输入设备输入的操作指令,通过网络发送至服务器。

仍以游戏为例,用户无需在终端设备下载、安装大容量的游戏程序,免除了软件系统和设备性能升级限制等问题,只需要足够的带宽及一台具有视频流解码能力的终端设备,就能够体验不同平台下的游戏,用户能够直接使用上述终端设备,进入游戏平台,选择要玩的游戏图标,输入游戏登录账号,即可与布署有云游戏客户端的游戏服务器(如上述的服务器)建立通信连接,以获取游戏服务器传输的渲染指令数据,来渲染游戏图形界面,并显示在用户面前,以便用户继续后续操作。

下面将从服务器的角度,对本申请实施例中图像传输的方法进行介绍,请参阅图2,本申请实施例中图像传输的方法一个实施例包括:

201、通过云应用客户端获取渲染指令,其中,云应用客户端布署于服务器上;

本实施例中,以云应用为云游戏为例进行说明,用户使用终端设备(如智能手机、个人电脑、电视机顶盒等)进入云游戏的应用平台,并且启动应用平台上的某个云游戏客户端之后,布署有该云游戏客户端的服务器将会创建相应的游戏进程运行该云游戏客户端,以使得用户能够在终端设备上操作该游戏。在云游戏客户端的运行过程中,云游戏客户端会产生渲染指令,并且基于该渲染指令,对图像进行调用和渲染,从而实现游戏画面的绘制。因此,为获取渲染指令,在云游戏客户端的运行过程中,服务器可以对云游戏客户端所产生的渲染指令进行截获,从而得到不同时刻下的渲染指令。

在实际应用中,云游戏客户端通常可以通过调用api(applicationprogramminginterface,应用程序编程接口)的方式,来获取图形库中的图形信息,从而进行云游戏对应图形界面的渲染。因此,本实施例中可以通过监听云游戏客户端对api的调用,及时截获调用api对应的渲染指令。其中,api可以包括但不限于direct3d(d3d),开放图形库(opengraphicslibrary,opengl)等。此外,服务器除了通过监听云游戏客户端对api的调用来实现渲染指令的获取之外,还可以通过其他方式来实现渲染指令的获取,例如,对云游戏客户端进行渲染的过程进行录制,从而得到相应的渲染指令。本实施例对该渲染指令的获取方式不作具体限定。

值得注意的是,本申请实施例中,服务器获取得到的渲染指令中可以包括有如指令编码、参数等指令类数据,而不包括有纹理图片等图像类数据,即渲染指令中并没有携带有图像数据。具体地,服务器在截获渲染指令的过程中,可以只截获云游戏客户端产生的指令类数据,其中,指令类数据中包含有对图像进行调用的指令,而不包含有指令所调用的图像,即服务器不截获图像类数据。此外,服务器在截获渲染指令的过程中,也可以一并截获云游戏客户端产生的指令类数据和图像类数据,然后再将图像类数据从指令类数据中独立出来,从而获得只包含有指令类数据的渲染指令。

在用户对云游戏客户端的实际操作过程中,随着用户输入操作的改变,云游戏客户端产生的渲染指令可以相应变化,具体可以是渲染指令的全部内容都相应改变,也可以是渲染指令中的部分数据随着时间的变化而不断改变,本实施例对不同时刻截获的渲染指令的变化情况不作限定。

202、根据渲染指令获取图像集合,其中,图像集合中包括至少一个待渲染的图像;

可以理解的是,渲染指令中通常会包含有图像调用指令,图像调用指令主要用于调用图像来进行渲染。本实施例中,在服务器截获的渲染指令只包含有指令类数据的情况下,服务器可以通过解析渲染指令中的图像调用指令,来获得图像调用指令对应的图像;通过解析渲染指令中所有或者部分图像调用指令,可以获得图像集合,图像集合中包括有至少一个待渲染的图像。此外,在服务器截获的渲染指令既包含有指令类数据,还包含有图像类数据的情况下,可以将指令类数据和图像类数据进行分离,将独立出来的指令类数据作为服务器获取得到的渲染指令,将独立出来的图像类数据作为图像集合,从而实现渲染指令和图像集合的获取。

203、通过第一数据传输通道向客户端发送渲染指令;

本实施例中,针对获取得到的渲染指令,服务器可以创建一个单独的线程,作为第一数据传输通道,对渲染指令进行处理和发送,例如,对渲染指令进行压缩后,通过第一数据传输通道向客户端发送压缩后的渲染指令。

204、通过第二数据传输通道向客户端发送图像集合,其中,渲染指令用于指示客户端对图像集合中的图像进行渲染。

本实施例中,针对获取得到的图像集合,服务器可以创建另一个单独的线程,作为第二数据传输通道,对图像集合进行处理和发送,例如,对图像集合中的图像进行压缩后,通过第二数据传输通道向客户端发送压缩后的图像集合。

由于服务器通过第一数据传输通道所发送的渲染指令中包括有指令数据,指令数据中通常还包括有顶点数据,顶点数据主要用来构建虚拟场景,若指令数据没有及时发送到用户侧的客户端,则难以构建游戏中的虚拟场景,容易导致游戏画面卡顿,甚至是游戏崩溃。服务器通过第二数据传输通道所发送的图像集合主要包括纹理图片,纹理图片主要用来给场景贴图,图像集合没有及时发送到用户侧的客户端,会影响到游戏画面的绘制效果,但不容易导致游戏画面卡顿或者是游戏崩溃。此外,在一些情况下,一帧游戏画面所对应的渲染指令可能会调用大量的图像,或者是调用一些占用存储量较大的图像,即图像集合的数据量较大,这样在处理和发送与该渲染指令对应的大量图像或者是占用存储量较大的图像时,需要占用一定的时间,若渲染指令与图像集合混合在一起进行处理和发送,显然会影响到客户端正常接收渲染指令。

在本实施例中,通过将渲染指令和图像集合进行独立处理和发送,可以使得渲染指令的传输时间不会受到图像数据的传输时间的影响,提高了渲染指令的传输效率,从而改善了客户端容易出现画面卡顿的问题。

可选地,为了保证渲染指令能够优先传输至客户端,可以设置第一数据传输通道和第二数据传输通道的传输优先级。例如,设置第一数据传输通道的第一传输优先级高于第二数据传输通道的第二传输优先级,即在第一数据传输通道和第二数据传输通道同时有数据需要发送时,优先发送第一数据传输通道内的数据;也就是说,在第一数据传输通道处理完毕渲染指令且第二数据传输通道也处理完毕图像集合的情况下,优先发送渲染指令,在渲染指令发送完毕的情况下再发送图像集合。此外,在传输条件允许的情况下,例如在网络带宽足够且没有网络流量控制时,也可以设置第一数据传输通道和第二数据传输通道的传输优先级是相同的,即渲染指令和图像集合也可以同时发送,例如,在渲染指令和图像集合同时处理完毕时,可以同时发送渲染指令和图像集合;或者,在渲染指令的发送期间,图像集合处理完毕了,也可以在发送渲染指令的同时,并行发送图像集合。通常而言,由于图像集合的数据量远大于渲染指令的数据量,因此,在大部分情况下,第一数据传输通道在发送渲染指令时,第二数据传输通道可能还在处理图像集合,在第一数据传输通道发送完渲染指令之后,第二数据传输通道处理完毕并且可以发送图像集合,这样一来,可以保证第一数据传输通道和第二数据传输通道发送数据的时间相互错开,提高了数据传输的效率,避免了渲染指令和图像集合混合在一起处理时,网络通信通道容易处于空闲状态。

可选地,在上述图2对应的实施例的基础上,本申请实施例提供的图像传输的方法第一个可选实施例中,通过第二数据传输通道向客户端发送图像集合之前,还包括:

将第一图像以及第二图像加入至第一处理队列,其中,第一图像以及第二图像均属于图像集合中待渲染的图像;

根据第一处理队列确定图像发送顺序,其中,图像发送顺序用于指示第一图像与第二图像之间的发送顺序;

通过第二数据传输通道向将客户端发送图像集合,包括:

根据图像发送顺序,通过第二数据传输通道向客户端发送第一图像以及第二图像。

本实施例中,服务器在获取到图像集合之后,可以将图像集合中的图像均加入至第一处理队列中,在第一处理队列中确定图像集合中各个图像之间的发送顺序,得到整个图像集合中所有图像的发送顺序,然后基于这个发送顺序,通过第二数据传输通道依次发送图像集合中的图像。其中,在第一处理队列中确定图像集合中各个图像之间的发送顺序具体可以是在第一处理队列中将图像集合中的图像分成若干图像组,两两图像为一组,通过比对每一组图像中两两图像之间的发送顺序,再综合所有图像组的比对结果,最后获得第一处理队列中整个图像集合各个图像之间的发送顺序。应理解,上述的第一图像和第二图像可以是图像集合中的任意两个图像,而不应理解为特指的两个图像。

为了便于理解,本实施例中,将通过具体的例子介绍服务器是如何在第一处理队列中确定图像集合中各个图像之间的发送顺序。

请参阅图3,图3为本实施例中确定图像集合中图像的发送顺序的一个示例图。如图所示,301表示的是第一处理队列中的图像集合,其中,第一处理队列中包括有图像a、图像b和图像c;302表示的是将第一处理队列中的图像集合进行分组,一共分成三个图像组,第一个图像组包括图像a和图像b,第二个图像组包括图像b和图像c,第三个图像组包括图像a和图像c;303表示的是每个图像组中两两图像进行发送顺序的比对之后得到的结果,其中,第一个图像组中为图像a先于图像b发送,第二个图像组中为图像c先于图像b发送,第三个图像组中为图像c先于图像a发送;304表示的是综合三个图像组的比对结果,所得到的图像集合中图像的发送顺序,其中,图像c先于图像a发送,图像a先于图像b发送。应当理解,图3仅为本方案的一个示例,用于方便理解本方案,不用于限定本方案。

值得注意的是,在图3对应示例的基础上,在本实施例中,在将第一处理队列中的图像集合进行分组,并且获取分组内两两图像之间的发送顺序的过程中,并非是一定需要在获得所有图像组的比对结果之后,才能够获得整个图像集合中图像的发送顺序。可以理解的是,在303中,通过第一图像组和第三图像组确定了图像a先于图像b发送以及图像c先于图像a发送之后,便可以确定“图像c--图像a--图像b”的发送顺序,即不需要获得第二图像组的比对结果,也可以确定得到唯一的发送顺序。因此,在实际应用过程中,当服务器能够根据当前图像组的比对结果确定得到图像集合中图像唯一的发送顺序,即可以停止图像分组或者是图像组内两两图像比对的步骤,直接将当前确定得到的发送顺序作为图像集合中图像的发送顺序,既可以节省服务器的运算资源,还可以节省确定图像集合中图像发送顺序的时间。

可选地,在本实施例中,除了通过在第一处理队列中比较图像集合中两两图像之间的发送顺序来确定图像集合中图像的发送顺序,还可以基于图像集合中图像加入至第一处理队列的先后顺序来确定图像的发送顺序。例如,图像集合中的图像a、图像b、图像c加入至第一处理队列的顺序依次为图像b、图像c、图像a,对应的,在第一处理队列中,图像集合中图像的发送顺序则为图像b、图像c、图像a,即先加入至第一处理队列的图像先发送,后加入至第一处理队列的图像后发送。此外,当存在有多个图像同时加入到第一处理队列中时,可以通过随机的方式来确定这几个图像之间的发送顺序,也可以通过其他的方式来确定这几个图像之间的发送顺序,例如通过比较图像大小的方式来确定图像的发送顺序,此处不再做具体限定。

其次,在本实施例中,通过将图像集合中的图像加入至第一处理队列中,并且在第一处理队列中确定图像集合中图像的发送顺序,能够确保图像集合中的图像是按照发送顺序逐个逐个被发送至客户端,避免了图像集合中的图像被统一打包发送至客户端时,会由于数据量过大而导致网络堵塞。此外,由于渲染指令和图像集合是独立发送至客户端的,客户端在接收到渲染指令之后,可以陆续接收到图像集合中的图像,然后基于渲染指令,对接收到的图像陆续进行渲染,相对于图像集合中的图像被统一打包发送至客户端,本实施例中在接收到第二数据传输通道逐个发送的图像之后,便可以开始进行图像的渲染,而不需要在接收到整个图像集合的压缩包之后,才开始图像的渲染,如此一来,可以提高游戏画面的渲染效率,保证客户端游戏画面的渲染效果。

可选地,在本实施例中,根据渲染指令提取得到图像集合之后,可以使用高效压缩格式对图像集合中的图像进行编码压缩,例如,将图像集合中的图像编码成webp格式,将图像编码成webp格式,图像的压缩体积大约只有jpeg格式图像的2/3,并能节省大量的服务器宽带资源和存储空间。通过将图像编码成高效压缩格式,能够极大地降低每一张图像的数据量,进而降低整个图像集合的总数据量,从而提高图像传输的效率,并且降低对于网络带宽的要求。此外,对于图像集合中的某一些图像而言,这些图像本身已经是硬件支持的压缩格式,例如dds(directdrawsurface)格式,则可以不再对这些图像进行额外的压缩。可以理解的是,在图像集合中存在有大量的图像,或者是存在一些占用存储量较大的图像时,对图像集合进行打包压缩并向客户端发送压缩后的图像集合均需要一定的时间,因此,在图像集合打包压缩和发送的过程中,客户端往往需要等待一定的时间才能够接收到图像集合中的图像,从而影响游戏画面的渲染效果。在本实施例中,图像集合中的图像是被加入到第一处理队列中,在第一处理队列中进行排队发送,并且图像被编码成高效压缩格式后再发送至客户端,相较于将整个图像集合中的图像打包压缩并且统一发送的方式,将单个图像进行编码压缩后再逐个进行发送,可以降低传输数据量的同时,还能够保证客户端能够及时接收到图像,避免游戏画面的渲染效果受到太大的影响。

此外,在对图像集合中的图像进行编码压缩后,可以将图像缓存在服务器本地中,这样在服务器下一次运行该云游戏客户端时,就可以直接读取缓存在服务器本地中的压缩图像,也不需要再次对图像进行编码压缩了。

可选地,在上述图3对应的实施例的基础上,本申请实施例提供的图像传输的方法第二个可选实施例中,根据第一处理队列确定图像发送顺序,包括:

获取第一优先级以及第二优先级,其中,第一优先级表示第一图像在预设规则下的优先级,第二优先级表示第二图像在预设规则下的优先级;

若第一优先级高于第二优先级,则根据第一处理队列确定第一图像在第二图像之前发送;

若第二优先级高于第一优先级,则根据第一处理队列确定第一图像在第二图像之后发送。

在本实施例中,在确定第一图像和第二图像之间的发送顺序时,可以通过比较第一图像和第二图像在同一个预设规则下所对应的优先级,来确定第一图像和第二图像之间的发送顺序。具体地,假设第一图像在预设规则下对应的优先级为第一优先级,第二图像在预设规则下对应的优先级为第二优先级,则可以通过对比第一优先级和第二优先级之间的大小来确定第一图像和第二图像之间的发送顺序;如果,第一优先级高于第二优先级,则代表发送第一图像的优先程度要高于发送第二图像的优先程度,可以确定第一图像先于第二图像发送;如果,第二优先级高于第一优先级,则代表发送第二图像的优先程度要高于发送第一图像的优先程度,可以确定第二图像先于第一图像发送。

在一种示例性的方案中,预设规则具体可以是属于当前视口范围内的图像对应的优先级为第一优先级,不属于当前视口范围内的图像对应的优先级为第二优先级,其中,视口范围指的是终端设备上能够显示画面的区域,简单而言,属于当前视口范围内的图像是用户在终端设备的显示装置上能够直接看到的图像,不属于当前视口范围内的图像则是用户在终端设备的显示装置上不能够直接看到的图像。可以理解的是,对于大部分游戏而言,在游戏中都会构建有一个较为庞大的虚拟场景,用户所操控的游戏人物主要是在这个较为庞大的虚拟场景中进行活动和游玩,因此,在大部分时刻下,呈现在终端设备显示装置上的游戏画面仅仅是虚拟场景中的“冰山一角”,即大部分的游戏画面中都只能够是呈现虚拟场景的一部分,在游戏画面之外,还有大部分的场景没有得到呈现。尤其是对于一些第一人称视觉的游戏而言,例如第一人称射击游戏,在游戏人物身前的场景是当前视口范围内可见的场景,而游戏人物身后的场景则是当前视口范围内不可见的场景。因此,在客户端对游戏中的游戏画面进行渲染时,可以优先渲染当前视口范围内的游戏画面,以保证用户能够看到的游戏画面有较好的渲染效果,而当前视口范围外的游戏画面则可以在渲染完毕当前视口范围内的游戏画面之后再进行渲染,即用户看不到的游戏画面则可以推迟渲染,也不会影响到用户的游戏体验。

也就是说,在确定图像的优先级时,可以通过判断图像是否属于当前视口范围内的图像,来确定图像所对应的优先级。具体地,判断图像是否属于当前视口范围内的图像可以是通过监听当前帧渲染指令所引用的图像资源来判断,即当前帧的渲染指令所引用的图像可以视为是当前视口范围内可见的图像,例如,在d3d中可以通过api接口settexture将最近设定的图像资源视为属于当前视口范围内的图像。

此外,可以理解的是,对于一些场景而言,当前视口范围内的游戏画面可能是由多张图像所渲染构成的,首先以一张能够呈现大部分游戏画面内容的图像作为游戏画面的骨架,然后在这张图像上再贴上其他的细节图像来完成对游戏画面其他细节部分的补充,从而渲染得到完整的游戏画面。显然,在构成游戏画面的这些图像中,既包括了能够呈现大部分画面内容的骨架图像,也包括了对游戏画面细节部分进行补充的细节图像,这些骨架图像和细节图像实际上都属于当前视口范围内的图像,即在同一个预设规则下拥有相同的优先级。然而,在用户游玩游戏的过程中,游戏画面的骨架图像往往呈现了游戏的大部分内容,如果骨架图像没有能够及时呈现,会严重影响用户的游戏体验;而游戏画面的细节图像是对游戏画面中的细节部分进行补充,往往能够为用户提供更加丰富、逼真的视觉体验,而不会严重影响到用户的游戏体验,因此,在发送当前视口范围内的图像时,也可以优先发送对用户游戏体验影响较大的图像。

应理解,当采用上述的一个预设规则确定图像集合中图像的优先级时,容易出现一部分图像优先级相同的情况,因此,在本实施例中,可以采用多个预设规则分别确定图像集合中图像对应的优先级,当多个图像在某一个预设规则下的优先级相同时,再比较其他的预设规则下的优先级,从而继续确定这部分图像的发送顺序。例如,采用第一预设规则和第二预设规则对图像a、图像b和图像c进行发送顺序的确定,其中,在第一预设规则下,图像a和图像b均属于相同的第一优先级,而图像c则属于第二优先级,因此,可以确定图像a和图像b均在图像c前发送;在第二预设规则下,图像a属于第三优先级,图像b属于第四优先级,因此,可以确定图像a在图像b前发送,即根据第一预设规则和第二预设规则,可以确定图像a、图像b和图像c之间的发送顺序为图像a--图像b--图像c。对应的,图像a和图像b可以是当前视口范围内的图像,而图像c是当前视口范围外的图像;并且,图像a是骨架图像,图像b是细节图像。

为了便于理解,以下将结合图4对本实施例中基于预设规则确定图像发送顺序的方法进行解释,图4为本实施例中根据预设规则确定图像集合中图像的发送顺序的一个示例图。如图4所示,在图4中共有三个图像需要确定它们之间的发送顺序,分别是鱼塘图像、鱼图像和森林图像,其中,鱼塘图像和鱼图像均属于当前视口范围内的图像,而森林图像则属于当前视口范围外的图像;并且,鱼塘图像属于骨架图像,能够呈现画面的大部分内容,而鱼图像则属于贴在鱼塘图像上的细节图像。401表示的是确定森林图像和鱼塘图像之间的发送顺序,由于在第一预设规则下,鱼塘图像的优先级高于森林图像的优先级,因此,可以确定鱼塘图像先于森林图像发送;402表示的是确定鱼塘图像和鱼图像之间的发送顺序,由于在第一预设规则下,鱼塘图像和鱼图像的优先级相同,因此,接着比较鱼塘图像和鱼图像在第二预设规则下的优先级,在第二预设规则下,鱼塘图像的优先级高于鱼图像的优先级,因此,可以确定鱼塘图像先于鱼图像发送;403表示的是确定森林图像和鱼图像之间的发送顺序,由于在第一预设规则下,鱼图像的优先级高于森林图像的优先级,因此,可以确定鱼图像先于森林图像发送;综合401~403的确定结果,可以得到鱼塘图像、鱼图像和森林图像之间的发送顺序。404表示的是鱼塘图像、鱼图像和森林图像之间的发送顺序,即鱼塘图像先于鱼图像发送,鱼图像先于森林图像发送。

其次,在本实施例中,通过根据预设规则确定图像集中图像的发送顺序,对于在预设规则下优先级较高的图像先进行发送,对于在预设规则下优先级较低的图像则延后发送,保证了对用户体验影响较高的图像能够优先发送,而对用户体验影响较低的图像则可以延后发送,确保了用户在游玩云游戏过程中的游戏体验。

可选地,在上述图3对应的实施例的基础上,本申请实施例提供的图像传输的方法第三个可选实施例中,通过第二数据传输通道向客户端发送图像集合之前,还包括:

若第三图像所占用的存储量大于预置值,对第三图像进行数据分割,得到图像子数据集合,其中,第三图像属于第一处理队列中的图像,图像子数据集合包括至少两个图像子数据,至少两个图像子数据所占用的存储量均小于或等于预置值;

将第一图像子数据和第二图像子数据加入至第二处理队列,第一图像子数据和第二图像子数据均属于图像子数据集合中的图像子数据;

根据第二处理队列确定图像子数据发送顺序,其中,图像子数据发送顺序用于指示第一图像子数据和第二图像子数据之间的发送顺序;

通过第二数据传输通道向客户端发送图像集合,包括:

根据图像子数据发送顺序,通过第二数据传输通道向客户端发送第一图像子数据和第二图像子数据。

在本实施例中,服务器在发送第一处理队列中的图像之前,可以先判断第一处理队列中的图像所占用的存储量是否大于预置值,在图像所占用的存储量大于预置值的时候,将该图像进行数据分割,得到多个图像子数据之后,再将多个图像子数据进行排队发送。其中,预置值可以是根据实际网络带宽而定的一个数值,例如根据当前网络带宽的实际情况可以将预置值定为500千字节(kilobyte,kb),此处不做具体限定。

可以理解的是,在传输图像集合中图像的过程中,在图像集合中可能会存在一些占用存储量特别大的图像,例如占用存储量为10mb的图像,在发送这个占用存储量特别大的图像的时候,会占用很高的网络带宽,对网络传输造成较大的压力。因此,为了平滑网络带宽需求,降低对网络传输能力的要求,可以将占用存储量较大的图像分割成多个图像子数据进行发送,从而使得网络流量分布更为平滑,传输性能也更为稳定。

请参阅图5,图5为本实施例中对图像集合中图像进行分割后再发送的一个示例图。如图5所示,501表示的是根据第一处理队列确定好的图像a、图像b和图像c之间的发送顺序,其中,图像a所占用的存储量为1.5兆字节(mbyte,mb),图像b所占用的存储量为300kb,图像c所占用的存储量为200kb,以预置值为500kb为例,显然图像a所占用的存储量大于预置值,而图像b和图像c所占用的存储量均没有大于预置值。因此,可以将图像a进行数据分割,得到图像子数据a1、图像子数据a2和图像子数据a3,其中,图像子数据a1、图像子数据a2和图像子数据a3所占用的存储量均为500kb,并没有大于预置值。然后,将图像子数据a1、图像子数据a2和图像子数据a3加入到第二处理队列中,并且根据第二处理队列确定图像子数据a1、图像子数据a2和图像子数据a3之间的发送顺序。502表示的是根据第一处理队列和第二处理队列确定好的图像a、图像b和图像c之间的发送顺序,其中,图像a被分割成了图像子数据a1、图像子数据a2和图像子数据a3,且图像子数据a1、图像子数据a2和图像子数据a3之间的发送顺序为图像子数据a1--图像子数据a2--图像子数据a3,因此,图像集合中图像的发送顺序实际上是图像子数据a1--图像子数据a2--图像子数据a3--图像b--图像c。

请参阅图6,图6为本实施例中发送图像时网络传输流量分布的一个示例图。其中,图6中的横坐标表示的是帧号,即所发送的每一帧图像对应的号码;图6中的纵坐标表示的是传输的数据量(单位为字节)。由图6可以看出,通过排队发送图像并且将存储量较大的图像进行分割后再进行发送,能够有效地平滑网络传输流量的分布,不容易出现网络传输流量有较为突出的峰值的情况。

在本实施例中,服务器在发送第一处理队列中的图像之间,先判断第一处理队列中的图像所占用的存储量是否大于预置值,在图像所占用的存储量大于预置值的时候,将该图像进行数据分割,得到多个图像子数据之后,再将多个图像子数据进行排队发送。通过上述方式,能够实现单位时间内最大传输流量的控制,从而使得网络流量分布更为平滑,传输性能也更为稳定。

可选地,在上述图3对应的实施例的基础上,本申请实施例提供的图像传输的方法第四个可选实施例中,通过第二数据传输通道向客户端发送图像集合之前,还包括:

若第一处理队列中相邻的多个第四图像所占用的存储量之和小于预置值,则调整多个第四图像在第一处理队列中的发送顺序,多个第四图像在第一处理队列中调整后的发送顺序为多个第四图像并行发送;

通过第二数据传输通道向客户端发送图像集合,包括:

根据调整后的发送顺序,通过第二数据传输通道向客户端发送多个第四图像。

本实施例中,服务器在发送第一处理队列中的图像之前,可以先判断第一处理队列中的图像所占用的存储量是否小于预置值,在图像所占用的存储量小于预置值的时候,可以进一步判断该图像与在第一处理队列中相邻的多个图像所占用的存储量之和是否小于仍然预置值,如果这些相邻的图像所占用的存储量之和仍然小于预置值,则可以向客户端并行发送这些相邻的图像。其中,预置值可以是根据实际网络带宽而定的一个数值,例如根据当前网络带宽的实际情况可以将预置值定为500千字节(kilobyte,kb),此处不做具体限定。

可以理解的是,在传输图像集合中图像的过程中,在图像集合中可能会存在一些占用存储量特别小的图像,例如占用存储量为50kb或100kb的图像,在发送这个占用存储量特别大的图像的时候,会占用较低的网络带宽;在图像集合中存在大量的占用存储量特别小的图像时,如果仍然是按照第一处理队列中的发送顺序逐个发送相应的图像,则会导致发送整个图像集合的时间比较长,降低图像发送的效率。因此,在网络带宽允许的情况下,可以将占用存储量较小的多个图像并行发送至客户端,既不会网络传输造成压力,还能够提高图像的传输效率,并且使得网络流量分布更为平滑,传输性能也更为稳定。

请参阅图7,图7为本实施例中对图像集合中图像进行并行发送的一个示例图。如图7所示,701表示的是根据第一处理队列确定好的图像a、图像b、图像c、图像d和图像e之间的发送顺序,其中,图像a所占用的存储量为300kb,图像b所占用的存储量为100kb,图像c所占用的存储量为100kb,图像d所占用的存储量为450kb,图像e所占用的存储量为480kb,以预置值为500kb为例,显然图像a、图像b、图像c所占用的存储量均小于预置值,而图像a、图像b和图像c三个图像所占用的存储量之和也没有大于预置值。因此,可以将图像a、图像b和图像c的发送顺序进行调整,将图像a、图像b和图像c的发送顺序调整为图像a、图像b和图像c并行发送至客户端。702表示的是对图像a、图像b和图像c的发送顺序进行调整后得到的图像a、图像b、图像c、图像d和图像e之间的发送顺序,其中,图像a、图像b和图像c并行发送,并且先于图像d和图像e发送,因此,图像集合中图像的发送顺序实际上是(图像a、图像b和图像c)--图像d--图像e。

本实施例中,服务器在发送第一处理队列中的图像之前,先判断第一处理队列中的图像所占用的存储量是否小于预置值,在图像所占用的存储量小于预置值的时候,进一步判断该图像与在第一处理队列中相邻的多个图像所占用的存储量之和是否小于仍然预置值,如果这些相邻的图像所占用的存储量之和仍然小于预置值,则向客户端并行发送这些相邻的图像。通过上述方式,可以将占用存储量较小的多个图像并行发送至客户端,既不会对网络传输造成压力,还能够提高图像的传输效率,并且使得网络流量分布更为平滑,传输性能也更为稳定。

可选地,在上述图3对应的实施例的基础上,本申请实施例提供的图像传输的方法第五个可选实施例中,通过第二数据传输通道向客户端发送图像集合之前,还包括:

获取客户端中已缓存图像的标识,其中,已缓存图像为客户端缓存在本地的图像;

若图像集合中存在有第五图像,则将第五图像从图像集合中剔除,其中,第五图像的标识与已缓存图像的标识相同;

通过第二数据传输通道向客户端发送图像集合,包括:

通过第二数据传输通道向客户端发送剔除第五图像后的图像集合。

本实施例中,在服务器通过第二数据传输通道发送图像集合之前,先从客户端处获取客户端已缓存在本地的图像的标识,然后通过识别图像集合中图像的标识,来判断图像集合中是否存在有与客户端已缓存图像相同的第五图像,如果存在有,就将第五图像从图像集合中剔除,并通过第二数据传输通道向客户端发送剔除了第五图像之后的图像集合。具体地,对于图像集合中的图像而言,每一个图像都有一个唯一的标识,通过识别这个唯一的标识可以对每一个图像进行区分,其中,该标识可以是图像的哈希值,也可以是预先给图像设定的唯一名称等,本实施例中不做具体限定。由于客户端对服务器所发送的图像进行缓存,使得服务器可以不再重复发送客户端已缓存的图像,降低了发送的数据量,提高了发送图像的效率。

下面将从终端的角度,对本申请实施例中图像传输的方法进行介绍,请参阅图8,本申请实施例中图像传输的方法另一个实施例包括:

801、接收服务器通过第一数据传输通道发送的渲染指令;

本申请实施例中,客户端接收得到的渲染指令中可以包括有如指令编码、参数等指令类数据,而不包括有纹理图片等图像类数据,即渲染指令中并没有携带有图像数据。具体地,服务器在截获渲染指令的过程中,可以只截获云游戏客户端产生的指令类数据,其中,指令类数据中包含有对图像进行调用的指令,而不包含有指令所调用的图像,即服务器不截获图像类数据。此外,服务器在截获渲染指令的过程中,也可以一并截获云游戏客户端产生的指令类数据和图像类数据,然后再将图像类数据从指令类数据中独立出来,从而获得只包含有指令类数据的渲染指令。

802、接收服务器通过第二数据传输通道发送的图像集合,其中,图像集合中包括至少一个待渲染的图像;

可以理解的是,渲染指令中通常会包含有图像调用指令,图像调用指令主要用于调用图像来进行渲染。本实施例中,在服务器截获的渲染指令只包含有指令类数据的情况下,服务器可以通过解析渲染指令中的图像调用指令,来获得图像调用指令对应的图像,然后通过第二数据传输通道发送给客户端,使得客户端可以接收到图像集合。此外,在服务器截获的渲染指令既包含有指令类数据,还包含有图像类数据的情况下,可以将指令类数据和图像类数据进行分离,将独立出来的指令类数据作为服务器获取得到的渲染指令,将独立出来的图像类数据作为图像集合,从而使得客户端可以接收到不同的数据传输通道发送的渲染指令和图像集合。

803、根据渲染指令,对图像集合中的图像进行渲染。

客户端在获取到渲染指令和图像集合之后,可以对渲染指令进行解析,然后通过回放渲染指令来执行对应的渲染操作,即对图像集合中的图像进行渲染,从而获得相应的游戏画面。

在本实施例中,通过在客户端独立接收不同的数据传输通道所传输的渲染指令和图像集合,可以使得渲染指令的传输时间不会受到图像数据的传输时间的影响,提高了渲染指令的传输效率,从而改善了客户端容易出现画面卡顿的问题。

为了便于理解,下面将结合图9介绍一种视频封面生成的应用场景,请参阅图9,图9为本申请实施例应用场景中图像传输的一个流程示意图,如图所示,具体地:

步骤s1中,服务器从云游戏客户端获取到渲染指令,并将渲染指令放入至第一数据传输通道进行处理;

步骤s2中,服务器在第一数据传输通道中对渲染指令进行打包压缩,然后将打包压缩后的渲染指令向客户端发送;

步骤s3中,服务器从云游戏客户端获取图像集合,例如根据渲染指令获取与该渲染指令对应的图像集合;

步骤s4中,服务器判断获取得到的图像集合中是否存在有客户端已缓存的图像,如果存在有客户端已缓存的图像,则将该图像从图像集合中剔除掉;

步骤s5中,当图像集合中不存在有客户端已缓存的图像时,将图像集合中的图像加入至第一处理队列中进行排队处理;

步骤s6中,根据预设规则对第一处理队列中图像的优先级进行设置,从而确定图像之间的发送顺序;

步骤s7中,采用高效压缩格式对第一处理队列中的图像进行压缩;

步骤s8中,在向客户端发送图像集合之前,对图像集合传输过程的网络传输流量进行控制,例如,将占用存储量较大的图像分割成多个图像子数据进行发送;或者,将占用存储量较小的多个图像并行发送;

步骤s9中,客户端在接收到渲染指令之后,对渲染指令进行解压和解析;

步骤s10中,客户端得到相应的渲染指令,并且对渲染指令进行了解析;

步骤s11中,客户端通过回放相应的渲染指令,然后基于渲染指令进行渲染处理,得到游戏画面;

步骤s12中,客户端在接收到图像集合中的图像之后,对图像进行解压和解析;

步骤s13中,客户端将解压得到的图像缓存在本地,以供下次调用该图像时备用;

步骤s14中,客户端将图像内容设置到图形处理器(graphicsprocessingunit,gpu)中,以供在回放渲染指令时在gpu调用图像。

下面对本发明中的服务器进行详细描述,请参阅图10,图10为本发明实施例中服务器一个实施例示意图,服务器100包括:

获取单元1001,用于通过云应用客户端获取渲染指令,其中,云应用客户端布署于服务器上;

获取单元1001,还用于根据渲染指令获取图像集合,其中,图像集合中包括至少一个待渲染的图像;

发送单元1002,用于通过第一数据传输通道向客户端发送渲染指令;

发送单元1002,还用于通过第二数据传输通道向客户端发送图像集合,其中,渲染指令用于指示客户端对图像集合中的图像进行渲染。

在本实施例中,通过将渲染指令和图像集合进行独立处理和发送,可以使得渲染指令的传输时间不会受到图像数据的传输时间的影响,提高了渲染指令的传输效率,从而改善了客户端容易出现画面卡顿的问题。

可选地,在上述图10所对应的实施例的基础上,请参阅图11,本发明实施例提供的服务器100的另一实施例中,还包括:加入单元1003和确定单元1004;

加入单元1003,用于将第一图像以及第二图像加入至第一处理队列,其中,第一图像以及第二图像均属于图像集合中待渲染的图像;

确定单元1004,用于根据第一处理队列确定图像发送顺序,其中,图像发送顺序用于指示第一图像与第二图像之间的发送顺序;

发送单元1002,还用于根据图像发送顺序,通过第二数据传输通道向客户端发送第一图像以及第二图像。

在本实施例中,通过将图像集合中的图像加入至第一处理队列中,并且在第一处理队列中确定图像集合中图像的发送顺序,能够确保图像集合中的图像是按照发送顺序逐个逐个被发送至客户端,避免了图像集合中的图像被统一打包发送至客户端时,会由于数据量过大而导致网络堵塞。此外,由于渲染指令和图像集合是独立发送至客户端的,客户端在接收到渲染指令之后,可以陆续接收到图像集合中的图像,然后基于渲染指令,对接收到的图像陆续进行渲染,相对于图像集合中的图像被统一打包发送至客户端,本实施例中在接收到第二数据传输通道逐个发送的图像之后,便可以开始进行图像的渲染,而不需要在接收到整个图像集合的压缩包之后,才开始图像的渲染,如此一来,可以提高游戏画面的渲染效率,保证客户端游戏画面的渲染效果。

可选地,在上述图11所对应的实施例的基础上,本发明实施例提供的服务器100的另一实施例中,

获取单元1001,还用于获取第一优先级以及第二优先级,其中,第一优先级表示第一图像在预设规则下的优先级,第二优先级表示第二图像在预设规则下的优先级;

发送单元1002,还用于若第一优先级高于第二优先级,则根据第一处理队列确定第一图像在第二图像之前发送;

发送单元1001,还用于若第二优先级高于第一优先级,则根据第一处理队列确定第一图像在第二图像之后发送。

在本实施例中,通过根据预设规则确定图像集中图像的发送顺序,对于在预设规则下优先级较高的图像先进行发送,对于在预设规则下优先级较低的图像则延后发送,保证了对用户体验影响较高的图像能够优先发送,而对用户体验影响较低的图像则可以延后发送,确保了用户在游玩云游戏过程中的游戏体验。

可选地,在上述图11所对应的实施例的基础上,请参阅图12,本发明实施例提供的服务器100的另一实施例中,还包括分割单元1005;

分割单元1005,用于若第三图像所占用的存储量大于预置值,对第三图像进行数据分割,得到图像子数据集合,其中,第三图像属于第一处理队列中的图像,图像子数据集合包括至少两个图像子数据,至少两个图像子数据所占用的存储量均小于或等于预置值;

加入单元1003,还用于将第一图像子数据和第二图像子数据加入至第二处理队列,第一图像子数据和第二图像子数据均属于图像子数据集合中的图像子数据;

确定单元1004,还用于根据第二处理队列确定图像子数据发送顺序,其中,图像子数据发送顺序用于指示第一图像子数据和第二图像子数据之间的发送顺序;

发送单元1002,还用于根据图像子数据发送顺序,通过第二数据传输通道向客户端发送第一图像子数据和第二图像子数据。

在本实施例中,服务器在发送第一处理队列中的图像之间,先判断第一处理队列中的图像所占用的存储量是否大于预置值,在图像所占用的存储量大于预置值的时候,将该图像进行数据分割,得到多个图像子数据之后,再将多个图像子数据进行排队发送。通过上述方式,能够实现单位时间内最大传输流量的控制,从而使得网络流量分布更为平滑,传输性能也更为稳定。

可选地,在上述图11所对应的实施例的基础上,请参阅图13,本发明实施例提供的服务器100的另一实施例中,还包括调整单元1006;

调整单元1006,用于若第一处理队列中相邻的多个第四图像所占用的存储量之和小于预置值,则调整多个第四图像在第一处理队列中的发送顺序,多个第四图像在第一处理队列中调整后的发送顺序为多个第四图像并行发送;

发送单元1002,还用于根据调整后的发送顺序,通过第二数据传输通道向客户端发送多个第四图像。

本实施例中,服务器在发送第一处理队列中的图像之前,先判断第一处理队列中的图像所占用的存储量是否小于预置值,在图像所占用的存储量小于预置值的时候,进一步判断该图像与在第一处理队列中相邻的多个图像所占用的存储量之和是否小于仍然预置值,如果这些相邻的图像所占用的存储量之和仍然小于预置值,则向客户端并行发送这些相邻的图像。通过上述方式,可以将占用存储量较小的多个图像并行发送至客户端,既不会对网络传输造成压力,还能够提高图像的传输效率,并且使得网络流量分布更为平滑,传输性能也更为稳定。

可选地,在上述图11所对应的实施例的基础上,请参阅图14,本发明实施例提供的服务器100的另一实施例中,还包括剔除单元1007;

获取单元1001,还用于获取客户端中已缓存图像的标识,其中,已缓存图像为客户端缓存在本地的图像;

剔除单元1007,用于若图像集合中存在有第五图像,则将第五图像从图像集合中剔除,其中,第五图像的标识与已缓存图像的标识相同;

发送单元1002,还用于通过第二数据传输通道向客户端发送剔除第五图像后的图像集合。

本实施例中,由于客户端对服务器所发送的图像进行缓存,使得服务器可以不再重复发送客户端已缓存的图像,降低了发送的数据量,提高了发送图像的效率。

图15是本申请实施例提供的一种服务器结构示意图,该服务器1500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)1522(例如,一个或一个以上处理器)和存储器1532,一个或一个以上存储应用程序1542或数据1544的存储介质1530(例如一个或一个以上海量存储设备)。其中,存储器1532和存储介质1530可以是短暂存储或持久存储。存储在存储介质1530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1522可以设置为与存储介质1530通信,在服务器1500上执行存储介质1530中的一系列指令操作。

服务器1500还可以包括一个或一个以上电源1526,一个或一个以上有线或无线网络接口1550,一个或一个以上输入输出接口1558,和/或,一个或一个以上操作系统1541,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述实施例中由服务器所执行的步骤可以基于该图15所示的服务器结构。

本申请实施例还提供了一种终端,如图16所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(personaldigitalassistant,pda)、销售终端(pointofsales,pos)、车载电脑等任意终端设备,以终端为手机为例:

图16示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图16,手机包括:射频(radiofrequency,rf)电路1610、存储器1620、输入单元1630、显示单元1640、传感器1650、音频电路1660、无线保真(wirelessfidelity,wifi)模块1670、处理器1680、以及电源1690等部件。本领域技术人员可以理解,图16中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图16对手机的各个构成部件进行具体的介绍:

rf电路1610可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1680处理;另外,将设计上行的数据发送给基站。通常,rf电路1610包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoiseamplifier,lna)、双工器等。此外,rf电路1610还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystemofmobilecommunication,gsm)、通用分组无线服务(generalpacketradioservice,gprs)、码分多址(codedivisionmultipleaccess,cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,wcdma)、长期演进(longtermevolution,lte)、电子邮件、短消息服务(shortmessagingservice,sms)等。

存储器1620可用于存储软件程序以及模块,处理器1680通过运行存储在存储器1620的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

输入单元1630可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1630可包括触控面板1631以及其他输入设备1632。触控面板1631,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1631上或在触控面板1631附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1631可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1680,并能接收处理器1680发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1631。除了触控面板1631,输入单元1630还可以包括其他输入设备1632。具体地,其他输入设备1632可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元1640可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1640可包括显示面板1641,可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板1641。进一步的,触控面板1631可覆盖显示面板1641,当触控面板1631检测到在其上或附近的触摸操作后,传送给处理器1680以确定触摸事件的类型,随后处理器1680根据触摸事件的类型在显示面板1641上提供相应的视觉输出。虽然在图16中,触控面板1631与显示面板1641是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1631与显示面板1641集成而实现手机的输入和输出功能。

手机还可包括至少一种传感器1650,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1641的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1641和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路1660、扬声器1661,传声器1662可提供用户与手机之间的音频接口。音频电路1660可将接收到的音频数据转换后的电信号,传输到扬声器1661,由扬声器1661转换为声音信号输出;另一方面,传声器1662将收集的声音信号转换为电信号,由音频电路1660接收后转换为音频数据,再将音频数据输出处理器1680处理后,经rf电路1610以发送给比如另一手机,或者将音频数据输出至存储器1620以便进一步处理。

wifi属于短距离无线传输技术,手机通过wifi模块1670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图16示出了wifi模块1670,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器1680是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1620内的软件程序和/或模块,以及调用存储在存储器1620内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1680可包括一个或多个处理单元;可选的,处理器1680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1680中。

手机还包括给各个部件供电的电源1690(比如电池),可选的,电源可以通过电源管理系统与处理器1680逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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