云桌面图像更新方法及虚拟机与流程

文档序号:14656774发布日期:2018-06-12 05:34阅读:484来源:国知局

本发明涉及云计算领域,具体涉及一种云桌面图像更新方法及虚拟机。



背景技术:

云桌面技术是基于数据空间的云桌面,主要通过虚拟化应用,将云端资源如数据空间、管理服务提供桌面化的方式发布给各操作终端。

现有技术中服务端只能捕获到云桌面的全屏主画面,并且是将全屏主画面不经过压缩的传输到客户端的显示屏显示。由于传输依靠网络的进行,全屏主画面的传输其数据要求带宽大,客户端播放的画面基本是一秒一帧、非常卡顿,明显使用户感到操作不流畅,影响体验。



技术实现要素:

针对现有技术的不足,本发明提供了一种云桌面图像更新方法及虚拟机,解决了图像更新占用带宽大、播放卡顿的问题。

为实现以上目的,本发明通过以下技术方案予以实现:

一种云桌面图像更新方法,包括:

获取云桌面显示的主画面中发生变化的区域,将所述变化区域内的图像信息作为更新信息,所述更新信息携带有更新参数;

将所述更新信息发送至客户端,供所述客户端刷新显示的图像。

进的一步地,所述获取云桌面显示的主画面中发生变化的区域,将所述变化区域内的图像信息作为更新信息,所述更新信息携带有更新参数,包括:

获取所述主画面中发生变化的区域的更新参数,根据获取的先后顺序将多个所述更新参数加入更新队列中;

当更新队列的大小大于预设阈值时,清空所述更新队列中的所述更新参数,并获取云桌面的主画面;

其中,所述更新参数包括更新区域的起始坐标及区域范围参数。

进的一步地,所述将所述更新信息发送至客户端,包括:

根据所述更新参数获取所述更新信息,将所述更新信息发送至客户端。

进的一步地,将所述更新信息发送至客户端,包括:

将所述更新信息按预设压缩质量发送至客户端。

进的一步地,还包括:所述客户端接收所述更新信息,并根据所述更新参数将所述图像信息执行上屏渲染。

本发明还提供一种虚拟机,包括:

获取模块,用于根据预设参数获取云桌面显示的主画面中发生变化的区域,将所述变化区域内的图像信息作为更新信息,所述更新信息携带有更新参数;

发送模块,用于将所述更新信息发送至客户端,供所述客户端刷新显示的图像。

进一步地,所述获取模块包括:

更新单元,用于获取所述主画面中发生变化的区域的更新参数,根据获取的先后顺序将多个所述更新参数加入更新队列中;

清空单元,用于当更新队列的大小大于预设阈值时,清空所述更新队列中的所述更新参数,并获取云桌面的主画面;

其中,所述更新参数包括更新区域的起始坐标及区域范围参数。

进一步地,所述发送模块包括:

提取单元,用于根据所述更新参数获取所述更新信息,将所述更新信息发送至客户端。

进一步地,所述发送模块包括:

压缩单元,用于将所述更新信息按预设压缩质量发送至客户端。

进一步地,所述客户端接收所述更新信息,并根据所述更新参数将所述图像信息执行上屏渲染。

本发明实施例提供了一种云桌面图像更新方法及虚拟机。具备以下有益效果:

通过捕获主画面中变化区域的图像信息作为更新信息向客户端传输,由于传输的更新信息仅为主画面中的部分区域的图像,相比传送全屏主画面大大降低了网络带宽的消耗,解决了客户端播放卡顿的问题。

附图说明

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

图1是本发明中一实施例中示出的云桌面图像更新方法的流程图。

图2是本发明中另一实施例中示出的云桌面图像更新方法的流程图。

图3是本发明中又一实施例中示出的云桌面图像更新方法的流程图。

图4是本发明中云桌面图像更新方法中获取的主画面及更新区域的示意图。

图5是本发明中一实施例中示出的虚拟机的模块框图。

图6是本发明中一实施例中示出的虚拟机中获取模块的结构示意图。

图7是本发明中一实施例中示出的虚拟机中发送模块的结构示意图。

具体实施方式

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

图1是本发明中一实施例中示出的云桌面图像更新方法的流程图。如图1所示,本发明提供一种云桌面图像更新方法可解决云桌面图像更新过程中带宽消耗大的问题。该方法可应用于win10操作系统中Spice QXL驱动技术中,当然也可以应用于其他云桌面系统中,本发明对此不做限制。该方法包括以下步骤:

在步骤101中:获取云桌面显示的主画面中发生变化的区域,将所述变化区域内的图像信息作为更新信息,所述更新信息携带有更新参数。

该步骤中所述的主画面为在虚拟机服务端显示的全屏画面,该主画面的获取在win10操作系统中可使用Desktop Duplication API提供的远程接口操作一组桌面截图的协作方案实现。在本实施例中,可基于DXGI的接口进行屏幕的捕获,从而获取主画面中发生变化的区域,该变化区域即更新区域,该更新区域内的图像作为更新主体。

例如,云桌面播放一视频文件,视频文件中根据播放时间按帧序列显示图像,而在播放过程中当前帧的图像与前一帧的图像会存在显示变化,即两帧图像之间的在相同区域内显示的内容不同,而在其他区域内显示的内容相同时,则仅需更新所述的不同内容即可,无需更新所有图像。将该主画面中发生变化的区域作为更新区域,将该更新区域内的图像信息作为传输给客户端的更新信息供客户端显示更新,可以大大降低更新内容占用的内存,同时在传输过程中也占用较少的带宽。另,基于DXGI的接口进行屏幕捕获时可实现获取主画面发生变化区域的坐标参数,该坐标参数作为更新参数;因而可以根据更新参数获取主画面中的发生变化区域的图像信息作为更新数据传输给客户端。

在步骤102中:将所述更新信息发送至客户端,供所述客户端刷新显示的图像。

在该步骤中,将上述步骤中服务端获得的图像信息(例如JPEG格式的图像)通过网络传输给客户端,客户端根据接收到的所述图像信息刷新其显示的图像。客户端在刷新其显示的图像仅在该图像上刷新显示接收到的所述图像信息,因此减少了客户端对接收的图像信息的处理压力,可以释放部分内部资源。

有上述实施例可知,本发明通过捕获主画面中变化区域的图像信息作为更新信息向客户端传输,由于传输的更新信息仅为主画面中的部分区域的图像,相比传送全屏主画面大大降低了网络带宽的消耗,解决了客户端播放卡顿的问题。

基于上述实施例,本发明提供的云桌面图像更新方法还包括步骤103。如图2所示,在步骤103中:所述客户端接收所述更新信息,并根据所述更新参数将所述图像信息执行上屏渲染。

在该步骤中,所示客户端在接收到服务端传输的更新信息后,先对该更新信息做预处理,然后执行上屏渲染。例如,服务端传输的更新信息为压缩文件,客户端接对收到该压缩文件后进行解压,然后读取更新信息中的所述更新参数在所显示的图像中确定待更新区域,该待更新区域与服务端获取主画面上的发生变化的区域相同,在确定了待更新区域后在该待更新区域内执行接收的更新信息中图像信息的上屏渲染。

由图1和图2所示的实施例可知,本发明中服务端和客户端之间的数据交互在于:由服务端捕获主画面中发生变化区域的图像信息,其中发生变化区域视为更新区域,所述的图像信息视为待更新图像;而客户端根据服务端确定的主画面中发生变化的区域作为更新区域,然后在该更新区域内更新所述待更新图像。两者所执行的步骤类似于:客户端显示第一图像,服务端显示的图像为所述第一图像的播放序列的后一图像,该图像作为第二图像;服务端在第二图像的更新区域中扣取局部图像传输给客户端,客户端再将服务端扣取的局部图像更新在客户端显示的第一图像更新,使该第一图像更新成所述第二图像。

下面通过一具体实施例对本发明作进一步地说明:

图3是本发明中另一实施例中示出的云桌面图像更新方法的流程图。如图3所示,所述更新方法包括:

在步骤301中:初始化内存、队列。

以SPICE(独立计算环境简单协议)为例,SPICE是一个开源的远程计算机解决方案,提供客户端访问远程显示和设备(例如,键盘、鼠标、音频),可极大限度的减轻客户端的CPU和GPU任务。在该步骤中,在SPICE服务端初始化一块内存(buffer),该内存用于存放整屏的主画面信息,并初始化一个存放每次更新区域对应的更新参数的队列。。其中,所述更新参数包括更新区域的起始坐标及区域范围参数;例如,更新参数包括更新区域的起始坐标(x,y),更新区域的矩形的长、宽(w,h)。

在步骤302中:记录主画面的初始信息。

在获取云桌面图像时可根据预设参数获取服务端显示的主画面;例如按播放帧序列获取服务端显示的主画面,在win10操作系统中可基于DXGI接口捕获服务端显示的每一帧图像。当然,也可跟每两帧或其他参数捕获图像,可根据不同需求及网络带宽设置捕获频率,而捕获频率越高用户操作体验越顺畅。假如服务端在播放视频文件,在该步骤中,记录主画面的初始信息包括记录服务端显示的视频文件的第一帧图像以及该第一帧图像显示的更新参数(0,0,全屏的宽h,全屏的高w)。

在步骤303中:捕获更新区域信息。

该步骤中捕获更新区域信息即捕获服务端显示的视频文件的第一帧图像之后的每一帧图像,并获取相邻两帧图像之间的差异位置区域及该差异位置区域在整帧图像上的位置坐标参数。其中位置坐标参数即上述更新参数,包括起始坐标(x,y),更新区域的矩形的长、宽(w,h)。图4是本发明中云桌面图像更新方法中获取的主画面及更新区域的示意图。如图4所示,图中虚线示出的区域即上述差异位置区域,也即更新区域。在这一帧图像中,更新区域的更新参数为(0,20,1376,816),而在该更新区域以外的区域在客户端已经显示或者说已存在图像,无需更新。

在步骤304中:将更新区域的矩形参数加入更新队列。

上述更新参数即基于DXGI接口捕获服务端显示图像的矩形参数,将该矩形参数加入步骤301中的队列中。服务端可以另启一个线程来读取该队列中的矩形参数,然后根据读取的矩形参数获取更新区域。在本实施例中,获取所述服务端显示的主画面中发生变化的区域的图像信息是根据矩形参数(更新参数)在该主画面上截取的,因而服务端获取更新区域只需存储矩形参数,然后依据该矩形参数进行画面的更新即可。实际应用过程中,可根据获取的先后顺序将多个所述矩形参数(更新参数)加入更新队列中;例如,根据帧序列获取每一帧图像的矩形参数,然后将该矩形参数加入更新队列中,服务端依据该更新队列实现对客户端图像的更新。

在步骤305中:判断队列是否超过15帧;若队列中超过15帧执行步骤306,若队列中未超过15帧执行步骤307。

在步骤用于解决因内存中缓存数据太多导致客户端显示画面延迟的问题。其中,预设阈值15仅为本实施例提供的一个举例值,当然也可以采用其他预设阈值,本发明对此不做限制。

在步骤306中:清空队列,获取整屏的图像。

当更新队列的大小大于预设阈值15时,清空所述更新队列中的所述更新参数,并获取云桌面的主画面。在获取云桌面的主画面时,基于该主画面作为初始信息,然后根据帧序列捕获该主画面后的每一帧的更新区域,将获取的矩形参数加入更新队列。

在步骤307中:获取图像信息。

在该步骤中,服务端根据所述更新参数获取作为更新信息的图像信息,将该图像信息作为更新数据发送给客户端。服务端的内存中存放有播放视频的整屏的主画面信息(如图4中的图像),服务端启动的线程读取更新列中的矩形参数,然后依据该矩形参数中对应主画面的具体坐标和宽高指定该主画面中更新区域,然后获取该更新区域中的图像信息。

在步骤308中:将图像信息压缩发送至客户端。

在该步骤中,可通过将图像信息(更新信息)进一步处理以降低利用网络传输该图像信息所占用的带宽。在本实施例中,通过将所述更新信息按预设压缩质量压缩所述图像信息,然后再将该压缩后的图像信息发送至客户端。例如,可以在获取到JPEG格式图像信息后按照75%的压缩质量对该图像信息进行JPEG压缩;当然,也可以根据其他百分比的压缩质量对该图像信息进行压缩,本发明对此不做限制。

由上可知,本发明通过DXGI接口获取到的更新图像的更新参数,将该更新参数加入到更新队列,并根据更新参数来更新(buffer)存放整屏的画面信息,再根据更新参数的具体坐标和宽高,内存拷贝来修改buffer中的指定画面区域。相比于现有技术中将全屏画面不经过压缩传输到Spice客户端显示屏显示,会极大的降低网络带宽,在spice客户端显示屏上看到的画面会非常流畅,用户体验也得到了提高。

本发明还提供对应上述云桌面图像更新方法的一种虚拟机。图5是本发明中一实施例中示出的虚拟机的模块框图。如图5所示,该虚拟机包括:

获取模块51,用于获取云桌面显示的主画面中发生变化的区域,将所述变化区域内的图像信息作为更新信息,所述更新信息携带有更新参数;

发送模块52,用于将所述更新信息发送至客户端,供所述客户端刷新显示的图像。所述客户端接收所述更新信息,并根据所述更新参数将所述图像信息执行上屏渲染。

在另一实施例中,该虚拟机还包括客户端,所述客户端接收所述更新信息,并根据所述更新参数将所述图像信息执行上屏渲染。

如图6所示,所述获取模块51包括:

更新单元511,用于获取所述主画面中发生变化的区域的更新参数,根据获取的先后顺序将多个所述更新参数加入更新队列中;

清空单元512,用于当更新队列的大小大于预设阈值时,清空所述更新队列中的所述更新参数,并获取云桌面的主画面;

其中,所述更新参数包括更新区域的起始坐标及区域范围参数。

如图7所示,所述发送模块52包括:

提取单元521,用于根据所述更新参数获取所述更新信息,将所述更新信息发送至客户端。

所述发送模块52还包括:

压缩单元522,用于将所述更新信息按预设压缩质量发送至客户端。

上述装置中各个模块、单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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

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