本说明书涉及通信技术领域,尤其涉及一种虚拟机图像帧率控制方法及网络设备、存储介质。
背景技术:
虚拟机(云桌面)是基于虚拟桌面基础架构,能够将用户的桌面环境以云桌面的形式托管至高性能服务器上,给用户提供与物理计算机几乎相同的用户体验。比较广泛的应用于如日常办公、学校教学等云桌面的解决方案。
当虚拟机(云桌面)上的图像处于快速更新时,若采用通用压缩编码的方式将图片发给客户机,将占用大量的带宽,造成终端解码拥堵的问题。
技术实现要素:
为克服相关技术中存在的问题,本说明书提供了一种虚拟机图像帧率控制方法及网络设备、存储介质。
根据本说明书实施例的第一方面一种虚拟机图像帧率控制方法,
保存虚拟机的配置文件,配置文件至少包括图像发送的最高帧率max_fps;
接收虚拟机的显卡指令,记录显卡指令时间;
解析显卡指令,获取到虚拟机的图像以及图像的surface;
判断接收到虚拟机发送图像的帧率是否高于设定的最高帧率max_fps;
若帧率在设定范围内,则按压缩编码方式发送图像给客户机;
若帧率高于设定范围,则启动定时器,以时间间隔=1/max_fps,定时以图像的全屏流模式发送图像给客户机。
优选的,配置文件还包括定时器定时获取图像的超时时间timeout,
若超过时间间隔1/max_fps未接收到虚拟机发送的显卡指令,则开启定时器,判断定时器当前记录时间和接收到最后一条显卡指令时间的差值;
若差值小于timeout,获取图像的全屏流模式图像并发送给客户机;
若差值大于等于timeout,则图像不作更新,定时器关闭,以压缩编码方式发送图像给客户机。
优选的,在差值小于timeout条件下,将全屏流模式图像传输给客户机,并且重新设置定时器,时间间隔=1/max_fps。
进一步地,判断接收到虚拟机发送图像的帧率是否高于设定的最高帧率max_fps,包括:
通过surface中的图像存储地址找到虚拟机共享存储上对应的图像数据;
判断当前找到的图像的帧率是否高于设定的最高帧率max_fps。
优选的,接收虚拟机的显卡指令,记录显卡指令时间之前,与虚拟机建立协议连接,并获取虚拟机的识别信息。
进一步地,识别信息至少包括虚拟机的ip和端口信息。
本申请实施例还提供了一种网络设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时执行上述一种虚拟机图像帧率控制方法。
本申请实施例最后还提供了一种存储介质,其上存储有计算机程序指令,所述程序指令被处理器执行时用于实现上述一种虚拟机图像帧率控制方法。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例通过设置最高帧率,图像在不同帧率下采用不同的图像传输方式。高帧率的图像直接通过全屏流模式进行视频图像传输,解决了传输高帧率图片到客户机时解码堵塞和延迟卡顿的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本申请实施例组网示意图;
图2是本申请虚拟机帧率控制方法流程图;
图3是本申请实施例虚拟机未定时发送图像流程图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
为了解决背景技术中存在的问题,本申请提供了一种虚拟机图像帧率控制方法,客户机通过宿主机获取虚拟机上的图像信息。在该组网中,客户机首先需要和宿主机建立链路连接,宿主机需要和虚拟机之间建立协议连接,宿主机获取到虚拟机的识别信息。宿主机通常下挂多台虚拟机(虚拟机1、虚拟机2和虚拟机3),且宿主机与多台客户机(客户机1、客户机2和客户机3)相连接,如图1。本申请实施例以客户机1通过宿主机请求获取虚拟机1上的图像为例进行举例说明。另外上述实施例中提到的在宿主机和虚拟机之间建立的协议可以是例如现有的rdp或spice等协议,当然也可以是自定义的协议。因为不是本申请发明点,在此不在赘述。宿主机与每台虚拟机客户端只有一个协议连接进程,通过进程连接至宿主机的服务端,用于图像传输。本申请实施例宿主机与虚拟机建立协议连接以后,宿主机获取到虚拟机的识别信息,识别信息至少包括了虚拟机的ip和端口信息,实现宿主机服务端与虚拟机进程一对一的连接以及图像信息交互。宿主机上保存有每台虚拟机的配置文件。配置文件主要是图像发送的最高帧率max_fps,以及定时器定时获取图像的超时时间timeout。解析显卡指令得到对应虚拟机的图像以及图像存储地址信息等。
如图2所示,具体交互过程如下:
客户机1向宿主机请求虚拟机1的图像,因此宿主机接到请求后向虚拟机1发出图像请求;
宿主机接收虚拟机1的显卡指令,并记录下显卡指令到达的时间;
宿主机解析显卡指令,获取到对应的虚拟机的图像以及图像的surface;判断接收到来自虚拟机1发送图像的帧率是否高于设定的最高帧率max_fps;若帧率在设定范围内,则按压缩编码方式发送图像给客户机1;若帧率高于设定范围,则启动定时器,以时间间隔=1/max_fps,定时以图像的全屏流模式发送图像给客户机1。这里需要说明全屏流模式指的是以全屏视频形式发送图像。而通用的压缩编码方式发送的图像是以普通图片或照片形式发送。
本申请中surface指宿主机服务端保存虚拟机当前显示发送图像的存储地址。这里的存储地址指图像存储在宿主机所有下挂虚拟机的共享存储上的存储地址。
由于虚拟机1有可能没有在设定时间间隔1/max_fps向宿主机发送显卡指令,启动宿主机服务端进程的定时器,判断定时器当前记录时间和接收到最后一条先看指令时间的差值,若差值小于timeout,获取图像的全屏流模式图像并发送给客户机1;若差值大于等于timeout,则图像不作更新,定时器关闭,以压缩编码方式发送图像给所述客户机1,如图3所示。
在上述实施例中,判断接收到虚拟机1发送图像的帧率是否高于设定的最高帧率max_fps的方法,包括:
通过surface中的图像存储地址找到所有虚拟机的共享存储上对应的图像数据;
判断当前找到的图像的帧率是否高于设定的最高帧率max_fps。
本申请实施例通过设置最高帧率,图像在不同帧率下采用不同的图像传输方式。高帧率的图像直接通过全屏流模式进行视频图像传输,解决了传输高帧率图片到客户机时解码堵塞和延迟卡顿的问题。
本申请实施例还提供一种网络设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述程序时执行上述实施例的一种虚拟机图像帧率控制方法。
本申请实施例还提供了一种存储介质,其上存储有计算机程序指令,程序指令被处理器执行时用于实现上述实施例的一种虚拟机图像帧率控制方法。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
1.一种虚拟机图像帧率控制方法,其特征在于,
保存虚拟机的配置文件,所述配置文件至少包括图像发送的最高帧率max_fps;
接收虚拟机的显卡指令,记录所述显卡指令时间;
解析所述显卡指令,获取到所述虚拟机的图像以及图像的surface;
判断接收到所述虚拟机发送图像的帧率是否高于设定的最高帧率max_fps;
若帧率在设定范围内,则按压缩编码方式发送图像给客户机;
若帧率高于设定范围,则启动定时器,以时间间隔=1/max_fps,定时以图像的全屏流模式发送图像给客户机。
2.根据权利要求1所述的虚拟机图像帧率控制方法,其特征在于,配置文件还包括定时器定时获取图像的超时时间timeout,
若超过时间间隔1/max_fps未接收到所述虚拟机发送的显卡指令,则开启所述定时器,判断定时器当前记录时间和接收到最后一条显卡指令时间的差值;
若差值小于timeout,获取图像的全屏流模式图像并发送给所述客户机;
若差值大于等于timeout,则图像不作更新,所述定时器关闭,以压缩编码方式发送图像给所述客户机。
3.根据权利要求2所述的虚拟机图像帧率控制方法,其特征在于,在差值小于timeout条件下,将所述全屏流模式图像传输给所述客户机,并且重新设置所述定时器,时间间隔=1/max_fps。
4.根据权利要求1所述的虚拟机图像帧率控制方法,其特征在于,判断接收到所述虚拟机发送图像的帧率是否高于设定的最高帧率max_fps,包括:
通过surface中的图像存储地址找到虚拟机共享存储上对应的图像数据;
判断当前找到的图像的帧率是否高于设定的最高帧率max_fps。
5.根据权利要求1所述的虚拟机图像帧率控制方法,其特征在于,接收所述虚拟机的显卡指令,记录所述显卡指令时间之前,与所述虚拟机建立协议连接,并获取所述虚拟机的识别信息。
6.根据权利要求5所述的虚拟机图像帧率控制方法,其特征在于,所述识别信息至少包括所述虚拟机的ip和端口信息。
7.一种网络设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行权利要求1-6任意一项所述的一种虚拟机图像帧率控制方法。
8.一种存储介质,其上存储有计算机程序指令,其特征在于,所述程序指令被处理器执行时用于实现权利要求1-6任一项中所述的一种虚拟机图像帧率控制方法。
技术总结