一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种云桌面的视频传输方法、电子设备、装置及介质与流程

2022-10-07 04:36:35 来源:中国专利 TAG:


1.本技术涉及虚拟化计算领域,具体而言,涉及一种云桌面的视频传输方法、电子设备、装置及介质。


背景技术:

2.云桌面又被叫做桌面虚拟化,与传统的pc主机相比,云桌面不再需要为每一个用户终端购置单独的物理主机,而是通过网络,仅使用便宜的瘦客户机搭配显示器和键鼠等外围设备就能拥有传统电脑一样的体验效果。随着虚拟化技术的快速发展,云桌面逐渐成为了云计算时代的典型应用。
3.云桌面的实现依赖于服务器的虚拟化技术。虚拟化技术(virtualization)总的来说就是在服务器上创建云桌面虚拟机,把计算资源抽象出来,一方面将资源提供给需要的部件,另一方面将资源映射到物理硬件上。但是,在服务器上创建大量虚拟机需要大量资源,虚拟机同时还需要做编码、视频传输等工作,服务器端的资源压力较大,且不好扩展。


技术实现要素:

4.有鉴于此,本技术的目的在于提供一种云桌面的视频传输方法、电子设备、装置及介质,将桌面图像数据单独存储到一台流媒体服务器上,通过流媒体技术将云桌面虚拟机和视频编码分开通过网络传输,使得虚拟机服务器不仅可以创建更多虚拟机资源,也便于更好的横向扩展。
5.本技术实施例提供的一种云桌面的视频传输方法,应用于云桌面服务平台,所述云桌面服务平台包括虚拟机服务器和流媒体服务器,所述虚拟机服务器上设置有桌面虚拟机;所述视频传输方法包括以下步骤:
6.所述桌面虚拟机在检测到满足预设桌面更新条件时,将生成的桌面图像数据发送至流媒体服务器中;其中,所述桌面图像数据中携带有所述桌面虚拟机的标识信息;
7.所述流媒体服务器接收到所述桌面图像数据后,根据所述桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中;不同的预设流媒体地址中存储不同桌面虚拟机发送的桌面图像数据;
8.所述流媒体服务器根据预先配置的客户端与预设流媒体地址的关联关系,将目标预设流媒体地址中存储的目标桌面图像数据发送至第一目标客户端。
9.在一些实施例中,所述的云桌面的视频传输方法还包括以下步骤:
10.所述流媒体服务器接收并存储客户端发送的键鼠命令,并根据预设命令处理规则处理所述键鼠命令;所述预设命令处理规则包括合并重复指令、删除冲突指令;所述键鼠命令中携带有桌面虚拟机标识;
11.根据所述键鼠命令中的桌面虚拟机标识,将处理之后的键鼠命令分别发送至所述桌面虚拟机标识对应的桌面虚拟机中。
12.在一些实施例中,所述的云桌面的视频传输方法还包括以下步骤:
13.所述流媒体服务器响应接收到第二目标客户端发送的、针对第一目标客户端桌面共享请求,在将所述目标预设流媒体地址中存储的目标桌面图像数据发送至第一目标客户端的同时,将所述目标预设流媒体地址中存储的目标桌面图像数据发送至第二目标客户端;
14.所述流媒体服务器接收第一目标客户端、第二目标客户端发送的、携带相同目标桌面虚拟机标识的键鼠命令,将第一目标客户端、第二目标客户端发送的键鼠命令转发至同一个目标桌面虚拟机中。
15.在一些实施例中,所述的云桌面的视频传输方法中,所述桌面虚拟机检测到满足预设桌面更新条件,包括:
16.所述桌面虚拟机检测到达到本桌面虚拟机在当下工作模式下的预设刷新时长,和/或所述桌面虚拟机接收到流媒体服务器发送的刷新命令;其中,所述桌面虚拟机的工作状态不同,所述预设刷新时长不同和/或所述发送至流媒体服务器的桌面图像分辨率不同。
17.在一些实施例中,所述的云桌面的视频传输方法中,所述桌面虚拟机中预先配置有多组采集参数;
18.当所述桌面虚拟机检测到客户端满足预设频率条件时,所述桌面虚拟机按照预设频率条件对应的采集参数采集桌面图像数据;
19.所述桌面虚拟机检测到客户端满足预设频率条件,至少包括以下之一:所述桌面虚拟机检测到有客户端访问,所述桌面虚拟机检测到在第一预设时间段内接收客户端的操作命令,所述桌面虚拟机检测到与客户端建立连接并在第二预设时间段内保持连接。
20.在一些实施例中,所述的云桌面的视频传输方法中,所述桌面虚拟机在检测到满足预设桌面更新条件时,将生成的桌面图像数据发送至流媒体服务器中,包括:
21.所述桌面虚拟机在检测到满足预设桌面更新条件时,根据预先配置的第一编码规则将生成的桌面图像数据进行编码,以压缩所述桌面图像数据;
22.所述桌面虚拟机通过预先配置的传输协议将所述编码后的桌面图像数据转换为第一目标格式的桌面图像数据,并将所述第一目标格式的桌面图像数据发送至流媒体服务器中。
23.在一些实施例中,所述的云桌面的视频传输方法中,所述流媒体服务器接收到所述桌面图像数据后,根据所述桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中;包括:
24.所述流媒体服务器接收到所述桌面图像数据后,根据预先配置的第二编码规则对所述桌面图像数据进行编码,得到第二目标格式的桌面图像数据;
25.根据第二目标格式的桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中。
26.在一些实施例中,还提供一种云桌面的视频传输装置,应用于云桌面服务平台,所述云桌面服务平台包括虚拟机服务器和流媒体服务器,所述虚拟机服务器上设置有桌面虚拟机;所述视频传输装置包括:
27.第一发送模块,用于在所述桌面虚拟机在检测到满足预设桌面更新条件时,将生成的桌面图像数据发送至流媒体服务器中;其中,所述桌面图像数据中携带有所述桌面虚拟机的标识信息;
28.存储模块,用于在所述流媒体服务器接收到所述桌面图像数据后,根据所述桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中;不同的预设流媒体地址中存储不同桌面虚拟机发送的桌面图像数据;
29.第二发送模块,用于使所述流媒体服务器根据预先配置的客户端与预设流媒体地址的关联关系,将目标预设流媒体地址中存储的目标桌面图像数据发送至第一目标客户端。
30.在一些实施例中,还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行所述的云桌面的视频传输方法的步骤。
31.在一些实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行所述的云桌面的视频传输方法的步骤。
32.基于此,本技术提供一种云桌面的视频传输方法,单独部署流媒体服务器,将多个云桌面虚拟机产生的桌面图像数据先传输至流媒体服务器中储存起来,再通过流媒体技术将桌面图像数据发送至对应的客户端,通过维持和流媒体间少量且稳定的通道而不是客户端间频繁的连接,增加虚拟机图像数据的复用,减少了交互操作,进而降低了虚拟机服务器端的资源压力;而且流媒体服务器会定时获取虚拟机服务器的桌面图像数据并缓存下来,流媒体服务器内就像有多个客户端与虚拟机服务器保持连接,类似有一个虚拟机池,这样当新的客户端连接时只需通过拉流就可以获取虚拟机池中的虚拟机图像数据,减少了响应的时间,无需创建新的一组通道,便于横向扩展;同时由于每一个虚拟机都在流媒体服务器内有缓存数据,在用户切换不同虚拟机时的效果也会更好。
附图说明
33.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
34.图1示出了现有技术中spice的工作流程图;
35.图2示出了现有技术中spice的接口示意图;
36.图3示出了本技术实施例所述一种云桌面的视频传输方法的方法流程图;
37.图4示出了本技术实施例中云桌面服务平台的结构示意图;
38.图5示出了本技术实施例所述另一种云桌面的视频传输方法的方法流程图;
39.图6示出了本技术实施例所述云桌面的视频传输装置的结构示意图;
40.图7示出了本技术实施例所述一种电子设备的结构示意图。
具体实施方式
41.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,应当理解,本技术中附图
仅起到说明和描述的目的,并不用于限定本技术的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本技术中使用的流程图示出了根据本技术的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本技术内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
42.另外,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
43.需要说明的是,本技术实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
44.云桌面又被叫做桌面虚拟化,与传统的pc主机相比,云桌面不再需要为每一个用户终端购置单独的物理主机,而是通过网络,仅使用便宜的瘦客户机搭配显示器和键鼠等外围设备就能拥有传统电脑一样的体验效果。随着虚拟化技术的快速发展,云桌面逐渐成为了云计算时代的典型应用。形象的说,虚拟化就像水培技术,植物在营养液中生长就像和在土壤里一样。如今虚拟化解决方案已经比较成熟,红帽公司(redhat)开源的kvm技术(kernel-based virtual machine)配合开源的qemu技术组成的qemu-kvm得到了快速发展,并在业界得到了广泛的使用。
45.利用qemu-kvm我们可以创建同个人电脑一样的虚拟机,但要实现云桌面的应用我们还需要通过一些手段来访问这些虚拟机,而这就需要虚拟显示设备(virtual display device)和传输协议(protocol)。其中得到很好支持的就有qxl和spice。
46.spice(simple protocol for independentcomputing environments)是红帽公司提出的桌面虚拟化解决方案,它是基于kvm的开源虚拟化桌面传输协议。qxl则是使用spice时事实上的标准虚拟显卡,已经得到了qemu的支持。
47.spice可以分成四个部分:spice-server(服务器)、spice-guest(驱动)、spice-client(客户端)、spice-protocol(协议)。
48.请参照图1,spice的工作流程包括以下步骤:步骤1、在虚拟机内,图像引擎将命令传递给qxl驱动(spice-guest),qxl将操作系统命令转为qxl命令推送给qxl device(设备)的命令环;步骤2、libspice(spice-server)提取命令环中的命令,并将它添加到图形命令树(display tree)中,图形命令树优化命令后将命令发送给发送队列;步骤3、当一个命令从发送队列中拉出后,它会转化为spice协议消息(spice-protocol)发送给客户端;步骤4、客户端(spice-clinet)接收命令后更新显示。
49.请参照图2,除了图像显示,spice还定义了其他很多设备接口,可以控制远程计算机设备,例如鼠标、键盘、音频设备等。server和client间通过channel通信,每一种类型的数据都有一个特定的channel来传输。这里,channel为spice定义的术语,是指专门用于处理特殊信息的socket通道(socket是网络术语,中文术语为套接字,可以理解为两个应用间需要网络通信必须通过socket)。此channel应理解为广义上的消息处理通道(预先配置的消息处理通道)。特别的,每当一个新的spice-client连接,都会重新创建一组通道,这就导
致虚拟机服务器资源压力大,用户切换不同虚拟机时的效果差。
50.基于此,虽然spice已经取得了不错的成果,但是仍然存在以下问题:首先,服务器上创建大量虚拟机需要大量资源、同时还需要做编码、视频传输等工作,服务器端的资源压力较大,且不好扩展;其次,目前spice并不支持多客户端同时连接,但在一些场景下是需要同屏协作的,如果在虚拟机上安装单独的软件来实现,对资源的利用率较低。
51.云桌面的通用工作流程的具体步骤如下:1、云桌面的目的是通过客户端让用户使用一台pc,因此,先创建一台与该客户端对应的虚拟机。2、在虚拟机服务器上通过上述的qemu-kvm技术创建了一台虚拟机,对服务器来说一台虚拟机就是一个进程。3、虚拟机对于用户而言是看不见,无法操作,因此,通过qxl和spice实现键鼠操作,就像在操作一台实际的pc。4、每个虚拟机都有一个qxl驱动,通过qxl驱动捕获虚拟机桌面画面数据,桌面数据需要刷新,也就是每秒会采集多帧,这就是我们说的刷新率也就是帧率,帧率越高,每个帧率间像素移动越小,运动的画面看起来就更流畅。5、原始的图像数据通过libspice编码(类似压缩,减少传输量)等一系列操作,然后把这些数据通过channel发送给客户端。6、客户端接收到数据后解码(类似解压缩)后通过瘦客户端的物理硬件渲染出来,然后显示到显示器上,这样用户就能看到虚拟机的桌面画面。7、用户除了看,还需要点击鼠标、键盘输入,这些键鼠操作经spice-client捕获,通过channel发送给libspice。8、每个虚拟机除了qxl驱动用于显示的虚拟设备,还有虚拟的键盘和鼠标设备,libspice处理键鼠操作后转给qemu,然后发送到虚拟机上对应的设备驱动,这样远程操作就像在本地操作一样。
52.综上所述,云桌面的实现依赖于服务器的虚拟化技术。虚拟化技术(virtualization)总的来说就是在服务器上创建云桌面虚拟机,把计算资源抽象出来,一方面将资源提供给需要的部件,另一方面将资源映射到物理硬件上。但是,在服务器上创建大量桌面虚拟机需要大量资源,桌面虚拟机同时还需要做编码、视频传输等工作,服务器端的资源压力较大,且不好扩展。
53.基于此,本技术提供一种云桌面的视频传输方法,单独部署流媒体服务器,将多个云桌面虚拟机产生的桌面图像数据先传输至流媒体服务器中储存起来,再通过流媒体技术将桌面图像数据发送至对应的客户端,通过维持和流媒体间少量且稳定的通道而不是客户端间频繁的连接,增加虚拟机图像数据的复用,减少了交互操作,进而降低了虚拟机服务器端的资源压力;而且流媒体服务器会定时获取虚拟机服务器的桌面图像数据并缓存下来,流媒体服务器内就像有多个客户端与虚拟机服务器保持连接,类似有一个虚拟机池,这样当新的客户端连接时只需通过拉流就可以获取虚拟机池中的虚拟机图像数据,减少了响应的时间,无需创建新的一组通道,便于横向扩展;同时由于每一个虚拟机都在流媒体服务器内有缓存数据,在用户切换不同虚拟机时的效果也会更好。
54.请参照图3,图3示出了本技术实施例所述的一种云桌面的视频传输方法,应用于云桌面服务平台,所述云桌面服务平台包括虚拟机服务器和流媒体服务器,所述虚拟机服务器上设置有桌面虚拟机;具体的,所述视频传输方法包括以下步骤s301-s303:
55.s301、所述桌面虚拟机在检测到满足预设桌面更新条件时,将生成的桌面图像数据发送至流媒体服务器中;其中,所述桌面图像数据中携带有所述桌面虚拟机的标识信息;
56.s302、所述流媒体服务器接收到所述桌面图像数据后,根据所述桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址
中;不同的预设流媒体地址中存储不同桌面虚拟机发送的桌面图像数据;
57.s303、所述流媒体服务器根据预先配置的客户端与预设流媒体地址的关联关系,将目标预设流媒体地址中存储的目标桌面图像数据发送至第一目标客户端。
58.图4示出了本技术实施例中云桌面服务平台的结构示意图;在本技术实施例中,所述虚拟机服务器401:是指用于创建、运行虚拟机等虚拟机相关服务的物理服务器。所述虚拟机服务器401上可以创建多个桌面虚拟机,每一个桌面虚拟机都有一个对应的qxl设备和qxl驱动;qxl驱动在虚拟机进程内,qxl设备则是在qemu进程内。换句话说,每一个桌面虚拟机对应一个qxl设备,所述qxl设备,是指使用spice时事实上的标准虚拟显卡。
59.本技术实施例中,通过spice-agent实现桌面虚拟机和流媒体服务器402之间的连接。spice-agent包括第一spice-agent模块和第二spice-agent模块。spice-agent又可简称为agent。
60.本技术实施例中,替换现有技术中虚拟机服务器401上的libspice,并定义为第一spice-agent模块;这里,第一spice-agent模块可以理解为包含一部分libspice功能再加上自定义的功能库,第一spice-agent模块用于获取qxl设备中原始的桌面图像数据。
61.本技术实施例中,所述流媒体服务器402端也有一个spice-agent模块,命名为第二spice-agent模块,每个流媒体服务器402和对应的虚拟机服务器401间通过第一spice-agent模块和第二spice-agent模块保持一个长连接。
62.这里,如果服务器性能足够,虚拟机服务和流媒体服务都可以部署到一台物理服务器上。但为了结构更清晰以及更好地扩展,服务器只会用于一类特定的服务(例如常见的文件服务器、数据库服务器等),当谈及服务器时其实是代指它上面的服务。
63.第一spice-agent模块和第二spice-agent模块可以这样理解,对于两台服务器a和b,服务器a上部署了kvm可以创建虚拟机,服务器b上部署了流媒体服务,此时两者间是没有联系的。而agent的作用就是用来连接虚拟机和流媒体服务的,也就是服务器a和服务器b间的通信都是通过agent来代理的。这里,所述agent即spice-agent,包括第一spice-agent模块和第二spice-agent模块。第一spice-agent模块和第二spice-agent模块之前的交互和转换过程,可以通过自定义的功能库来实现。
64.所述流媒体服务器402,实际上是将spice-server单独部署到一台服务器上,并通过流媒体技术将虚拟机和视频编码分开通过网络传输。当存在多台流媒体服务器402时可以通过keepalived等工具组成一个流媒体服务器402集群,这样当虚拟机增加时遇到性能瓶颈也能更好地横向扩展。
65.流媒体服务器402可以有多个,通过集群的方式对外暴露一个,例如大家都是通过www.baidu.com访问百度搜索服务,但其实他内部有很多服务器用来处理大量的请求。客户端403可以同时连接在一个流媒体服务器402上,受限于流媒体服务器402的硬件资源例如cpu、内存、存储空间、网口带宽等。
66.本技术实施例中所述的客户端403,又称之为瘦终端、瘦终端设备、终端、终端设备、用户端等。
67.所述步骤s301中,所述桌面虚拟机在检测到满足预设桌面更新条件时,将生成的桌面图像数据发送至流媒体服务器中;其中,所述桌面图像数据中携带有所述桌面虚拟机的标识信息。
68.所述桌面虚拟机检测到满足预设桌面更新条件,包括:
69.所述桌面虚拟机检测到达到本桌面虚拟机在当下工作模式下的预设刷新时长,和/或所述桌面虚拟机接收到流媒体服务器发送的刷新命令;其中,所述桌面虚拟机的工作状态不同,所述预设刷新时长不同和/或所述发送至流媒体服务器的桌面图像分辨率不同。
70.考虑到如果客户端使用的频率较低时,即没有多少客户端用户访问虚拟机时,如果流媒体服务器和虚拟机服务器间仍然保持大量的数据传输,会造资源的损失,对spice-agent设置了休眠模式。在休眠模式下即对应虚拟机的状态不活跃的情况,spice-agent会降低桌面图像的质量和帧率(例如原本是1080p60帧改为720p4帧);当有新得客户端连接时,会首先获得较低质量的桌面图像但可以正常使用,同时标记虚拟机变为活跃状态,spice-agent提高图像数据采集,增加桌面图像质量和帧率,这样用户就能在短时间内获取一个渐进式的效果,满足用户的正常使用时。当客户端关闭时,虚拟机状态又会回到空闲状态,此时spice-agent又会进入休眠模式。
71.这里,所述桌面虚拟机中预先配置有多组采集参数;当所述桌面虚拟机检测到客户端满足预设频率条件时,所述桌面虚拟机按照预设频率条件对应的采集参数采集桌面图像数据;
72.所述桌面虚拟机检测到客户端满足预设频率条件,至少包括以下之一:所述桌面虚拟机检测到有客户端访问,所述桌面虚拟机检测到在第一预设时间段内接收客户端的操作命令,所述桌面虚拟机检测到与客户端建立连接并在第二预设时间段内保持连接。
73.这里,桌面虚拟机按照预设频率条件对应的采集参数采集桌面图像数据,即所述spice-agent获取桌面图像数据,具体为第一spice-agent模块从桌面虚拟机对应的qxl设备中获取原始的桌面图像数据。桌面虚拟机中预先配置有多组采集参数,即第一spice-agent模块中预先配置有多组采集参数,每组采集参数对应客户端的一种状态,每组采集参数中的采集帧率和图像分辨率不同。
74.根据桌面虚拟机检测到客户端满足预设频率条件,可以将桌面虚拟机的采集状态分为活跃状态和休眠状态;也就是说:1、若一个桌面虚拟机没有客户端访问,则为休眠状态,否则为活跃状态;2、若一个桌面虚拟机长时间(可以手动设置,例如30min)没有接收到任何操作命令,则为休眠状态,若接收到操作命令则为活跃状态;3、在第一次连接或者桌面虚拟机切换前为休眠状态(可以理解为此时为不稳定状态,很多人可能只是预览一下,并不一定是要使用的),在保持连接一定时间(例如3-5秒)不断开的情况下改为活跃状态。
75.spice-agent被通知对应的虚拟机为休眠状态时,虚拟机对应的采集参数会降低,传输给流媒体服务器的数据也会变少,结果就是客户端获取后显示的画面质量变低。
76.本技术实施例中,所述桌面虚拟机在检测到满足预设桌面更新条件时,将生成的桌面图像数据发送至流媒体服务器中,包括:
77.所述桌面虚拟机在检测到满足预设桌面更新条件时,根据预先配置的第一编码规则将生成的桌面图像数据进行编码,以压缩所述桌面图像数据;
78.所述桌面虚拟机通过预先配置的传输协议将所述编码后的桌面图像数据转换为第一目标格式的桌面图像数据,并将所述第一目标格式的桌面图像数据发送至流媒体服务器中。
79.也就是说,第一spice-agent模块将qxl设备中的桌面图像数据经过压缩后发送给
流媒体服务器。
80.相应的,流媒体服务器接收到所述压缩后的、第一目标格式的桌面图像数据后,要对所述第一目标格式的桌面图像数据进行解压。
81.所述步骤s301中,所述桌面虚拟机的标识信息,是在虚拟机管理软件在创建虚拟机时,所记录的一些虚拟机的信息,例如虚拟机的id、名称、ip、spice的端口等。虚拟机服务器和流媒体服务器间通信时,spice-agent同时也会将桌面虚拟机的桌面图像数据对应到虚拟机服务器上的某一台桌面虚拟机,并记录到本地的数据库上。
82.在所述步骤s302中,所述流媒体服务器接收到所述桌面图像数据后,根据所述桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中;不同的预设流媒体地址中存储不同桌面虚拟机发送的桌面图像数据。
83.这里,流媒体服务器在获取桌面虚拟机的桌面图像数据后会推流,为所述桌面图像数据指定一个rtsp的地址(例如:rtsp://admin:12345@192.168.0.1:554/streaming/channels/1),这个就是之后客户端拉流所需要的rtsp地址;同样,这些重要的信息会记录到本地数据库中,并将指定的该rtsp的地址和桌面虚拟机的标识信息(例如桌面虚拟机的id)关联绑定,从而将不同桌面虚拟机发送的桌面图像数据发送到对应的预设流媒体地址。
84.按照虚拟机服务器工作原理,接收到的第一目标格式的桌面图像数据解压后,为原始多媒体流,由于原始多媒体流体积庞大、帧数高、格式特殊,不利于普通播放器播放,也会增加网络负载,所以需要对原始多媒体流进行转码,即对原始多媒体流进行第二次编码,以获得易于播放、易于传输、适合rtsp推流的桌面图像数据。
85.具体的,所述流媒体服务器接收到所述桌面图像数据后,根据所述桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中;包括:
86.所述流媒体服务器接收到所述桌面图像数据后,根据预先配置的第二编码规则对所述桌面图像数据进行编码,得到第二目标格式的桌面图像数据;
87.根据第二目标格式的桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中。
88.这里,所述第二编码规则包括对接收的桌面图像数据的解码和第二次编码。
89.在所述步骤s303中,所述流媒体服务器根据预先配置的客户端与预设流媒体地址的关联关系,将目标预设流媒体地址中存储的目标桌面图像数据发送至第一目标客户端。
90.客户端要连接虚拟机,主要是包含两部分功能:1、获取虚拟机的桌面2、键鼠操作。获取桌面虚拟机的桌面图像数据,只需知道对应桌面虚拟机的rtsp地址然后拉流播放即可。
91.在一些实施例中,流媒体服务器上提供一个web服务(tcp服务也可),客户端通过访问该web服务可以获取可用的虚拟机列表,列表包含桌面虚拟机的id、名称、ip、rtsp地址等,在客户端连接桌面虚拟机时,在所述流媒体服务器中建立客户端与预设流媒体地址的关联关系,从而目标预设流媒体地址中存储的目标桌面图像数据发送至第一目标客户端。
92.对于键鼠操作,客户端将根据键鼠操作生成的键鼠指令发送给流媒体服务,在spice-agent上进行处理后转发到虚拟机服务器上。在发送键鼠命令时带上虚拟机的id作为标识,流媒体收到键鼠命令时可以通过此id区分不同的虚拟机,以将键鼠命令转发至对
应的桌面虚拟机。
93.基于此,本技术实施例中,如图5所示,所述的云桌面的视频传输方法还包括以下步骤:
94.s501、所述流媒体服务器接收并存储客户端发送的键鼠命令,并根据预设命令处理规则处理所述键鼠命令;所述预设命令处理规则包括合并重复指令、删除冲突指令;所述键鼠命令中携带有桌面虚拟机标识;
95.s502、根据所述键鼠命令中的桌面虚拟机标识,将处理之后的键鼠命令分别发送至所述桌面虚拟机标识对应的桌面虚拟机中。
96.具体的,本技术实施例中,所述客户端和流媒体服务器之间是一个短连接,多个瘦终端设备捕获键鼠操作后发送键鼠命令给流媒体的第二spice-agent模块,第二spice-agent模块此时会将命令暂存到一个指令树中,指令树上会先优化指令,例如合并一些重复指令、删除冲突的指令等;然后将指令发送到一个队列中,此队列按序发送给虚拟机服务器端的第一spice-agent模块完成操作。
97.这里,针对键鼠命令的合并重复指令、删除冲突指令等处理,可以进一步减轻虚拟机服务器的压力。
98.目前spice并不支持多客户端同时连接,但在一些场景下是需要同屏协作的,如果在虚拟机上安装单独的软件来实现,对资源的利用率较低。
99.基于此,本技术实施例中,所述的云桌面的视频传输方法还包括以下步骤:
100.所述流媒体服务器响应接收到第二目标客户端发送的、针对第一目标客户端桌面共享请求,在将所述目标预设流媒体地址中存储的目标桌面图像数据发送至第一目标客户端的同时,将所述目标预设流媒体地址中存储的目标桌面图像数据发送至第二目标客户端;
101.相应的,所述流媒体服务器接收第一目标客户端、第二目标客户端发送的、携带相同目标桌面虚拟机标识的键鼠命令,将第一目标客户端、第二目标客户端发送的键鼠命令转发至同一个目标桌面虚拟机中。
102.这里,所述桌面共享请求还可以是同屏协作请求等等。
103.由于客户端通过拉流的方式获取桌面图像数据,因此,不再有数量的限制。客户端和流媒体服务器间其实并不存在很强的对应关系,可以把流媒体服务器看作服务端(例如baidu),客户端看成是桌面上的浏览器。第二目标客户端拉取到第一目标客户端的数据,即第二目标客户端拉取第一目标客户端的桌面虚拟机数据,即第二目标客户端拉取第一目标客户端访问的流媒体服务器中资源是同一个,也就是同一个rtsp地址;同样的,第二目标客户端、第一目标客户端发送键鼠命令时附带同一个桌面虚拟机的id,从而将第二目标客户端、第一目标客户端发送键鼠命令均转发至对应的桌面虚拟机。
104.所述流媒体服务器接收到所述桌面图像数据后,根据所述桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中;包括:
105.所述流媒体服务器接收到所述桌面图像数据后,根据预先配置的第二编码规则对所述桌面图像数据进行编码,得到第二目标格式的桌面图像数据;
106.根据第二目标格式的桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中。
107.本技术实施例中,还提供一种云桌面的视频传输装置,应用于云桌面服务平台,所述云桌面服务平台包括虚拟机服务器和流媒体服务器,所述虚拟机服务器上设置有桌面虚拟机;如图6所示,所述视频传输装置包括:
108.第一发送模块601,用于在所述桌面虚拟机在检测到满足预设桌面更新条件时,将生成的桌面图像数据发送至流媒体服务器中;其中,所述桌面图像数据中携带有所述桌面虚拟机的标识信息;
109.存储模块602,用于在所述流媒体服务器接收到所述桌面图像数据后,根据所述桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中;不同的预设流媒体地址中存储不同桌面虚拟机发送的桌面图像数据;
110.第二发送模块603,用于使所述流媒体服务器根据预先配置的客户端与预设流媒体地址的关联关系,将目标预设流媒体地址中存储的目标桌面图像数据发送至第一目标客户端。
111.在一些实施例中,所述云桌面的视频传输装置,还包括:
112.处理模块,用于使所述流媒体服务器接收并存储客户端发送的键鼠命令,并根据预设命令处理规则处理所述键鼠命令;所述预设命令处理规则包括合并重复指令、删除冲突指令;所述键鼠命令中携带有桌面虚拟机标识;
113.第三发送模块,用于根据所述键鼠命令中的桌面虚拟机标识,将处理之后的键鼠命令分别发送至所述桌面虚拟机标识对应的桌面虚拟机中。
114.在一些实施例中,所述云桌面的视频传输装置,还包括:
115.第四发送模块,用于在所述流媒体服务器响应接收到第二目标客户端发送的、针对第一目标客户端桌面共享请求时,在将所述目标预设流媒体地址中存储的目标桌面图像数据发送至第一目标客户端的同时,将所述目标预设流媒体地址中存储的目标桌面图像数据发送至第二目标客户端;
116.转发模块,用于使所述流媒体服务器接收第一目标客户端、第二目标客户端发送的、携带相同目标桌面虚拟机标识的键鼠命令,将第一目标客户端、第二目标客户端发送的键鼠命令转发至同一个目标桌面虚拟机中。
117.在一些实施例中,所述云桌面的视频传输装置中,所述桌面虚拟机检测到满足预设桌面更新条件,具体包括:所述桌面虚拟机检测到达到本桌面虚拟机在当下工作模式下的预设刷新时长,和/或所述桌面虚拟机接收到流媒体服务器发送的刷新命令;其中,所述桌面虚拟机的工作状态不同,所述预设刷新时长不同和/或所述发送至流媒体服务器的桌面图像分辨率不同。
118.在一些实施例中,所述云桌面的视频传输装置中还包括采集模块,用于在所述桌面虚拟机中预先配置有多组采集参数时,当所述桌面虚拟机检测到客户端满足预设频率条件时,所述桌面虚拟机按照预设频率条件对应的采集参数采集桌面图像数据;
119.所述桌面虚拟机检测到客户端满足预设频率条件,至少包括以下之一:所述桌面虚拟机检测到有客户端访问,所述桌面虚拟机检测到在第一预设时间段内接收客户端的操作命令,所述桌面虚拟机检测到与客户端建立连接并在第二预设时间段内保持连接。
120.在一些实施例中,所述视频传输装置中的第一发送模块,用于在所述桌面虚拟机在检测到满足预设桌面更新条件时,将生成的桌面图像数据发送至流媒体服务器中,具体
用于:
121.在所述桌面虚拟机在检测到满足预设桌面更新条件时,根据预先配置的第一编码规则将生成的桌面图像数据进行编码,以压缩所述桌面图像数据;
122.所述桌面虚拟机通过预先配置的传输协议将所述编码后的桌面图像数据转换为第一目标格式的桌面图像数据,并将所述第一目标格式的桌面图像数据发送至流媒体服务器中。
123.在一些实施例中,所述视频传输装置中的存储模块,在所述流媒体服务器接收到所述桌面图像数据后,根据所述桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中,具体用于:
124.在所述流媒体服务器接收到所述桌面图像数据后,根据预先配置的第二编码规则对所述桌面图像数据进行编码,得到第二目标格式的桌面图像数据;
125.根据第二目标格式的桌面图像数据中携带的标识信息,将所述桌面图像数据存储至与所述桌面虚拟机对应的预设流媒体地址中。
126.请参照图7,本技术实施例还提供一种电子设备700,包括:处理器702、存储器701和总线,所述存储器701存储有所述处理器702可执行的机器可读指令,当电子设备700运行时,所述处理器702与所述存储器701之间通过总线通信,所述机器可读指令被所述处理器702执行时执行所述的云桌面的视频传输方法的步骤。
127.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行所述的云桌面的视频传输方法的步骤。
128.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本技术中不再赘述。在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
129.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
130.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
131.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,平台服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者
光盘等各种可以存储程序代码的介质。
132.以上仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献