CN118075514A - 播放响应方法及装置、播放方法、终端设备及服务器 - Google Patents

播放响应方法及装置、播放方法、终端设备及服务器 Download PDF

Info

Publication number
CN118075514A
CN118075514A CN202211477495.8A CN202211477495A CN118075514A CN 118075514 A CN118075514 A CN 118075514A CN 202211477495 A CN202211477495 A CN 202211477495A CN 118075514 A CN118075514 A CN 118075514A
Authority
CN
China
Prior art keywords
video
video data
cloud desktop
playing
paravirtualized
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211477495.8A
Other languages
English (en)
Inventor
苏良虎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Shiyuan Electronics Thecnology Co Ltd
Guangzhou Shirui Electronics Co Ltd
Original Assignee
Guangzhou Shiyuan Electronics Thecnology Co Ltd
Guangzhou Shirui Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Shiyuan Electronics Thecnology Co Ltd, Guangzhou Shirui Electronics Co Ltd filed Critical Guangzhou Shiyuan Electronics Thecnology Co Ltd
Priority to CN202211477495.8A priority Critical patent/CN118075514A/zh
Publication of CN118075514A publication Critical patent/CN118075514A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本申请实施例公开了一种播放响应方法及装置、播放方法、终端设备及服务器,云桌面服务器运行云桌面的虚拟操作系统并将云桌面的运行界面发送至终端设备进行显示;播放响应方法包括:接收终端设备发送的视频播放操作;响应于视频播放操作,获取对应的视频数据;将视频数据写入半虚拟化视频编解码设备,半虚拟化视频编解码设备通过半虚拟化前端程序注册到云桌面服务器的模拟视频编解码设备中;由半虚拟化后端程序通过模拟视频编解码设备获取半虚拟化视频编解码设备中写入的视频数据;由半虚拟化后端程序将视频数据发送至终端设备,以在终端设备进行解码及播放。采用上述方法可以解决一些技术中云桌面的宿主机在播放视频时设备负载高的技术问题。

Description

播放响应方法及装置、播放方法、终端设备及服务器
技术领域
本申请实施例涉及云桌面技术领域,尤其涉及一种播放响应方法及装置、播放方法、终端设备及服务器。
背景技术
云桌面又称桌面虚拟化、云电脑,是替代传统电脑的一种新模式。区别于传统的桌面,云桌面的操作系统是安装在远端的宿主机(如服务器)上,数据处理和存储也在远端完成,本地的终端设备与远端的宿主机进行网络通信以获取云桌面并显示,以及将本地用户对云桌面的控制发送至远端的宿主机中进行响应。比如,本地用户需要在云桌面中播放视频时,终端设备将本地用户需要播放视频的指示发送给远端的宿主机,宿主机接收到该指示后,解码出视频的画面帧,并将画面帧和云桌面当前的界面(用于播放视频的界面)重新编码成特定格式的数据流,并反馈至终端设备。终端设备解码数据流后更新本地显示的云桌面的界面,以使本地用户观看到云桌面播放的视频。
一些技术中,由宿主机中的中央处理器(central processing unit,CPU)或图形处理器(graphics processing unit,GPU)承担视频的解码和编码工作,当宿主机中虚拟出多个云桌面时,若多个云桌面同时播放视频,则需要CPU或GPU频繁地进行解码和编码工作,进而导致宿主机的负载很高。
发明内容
本申请实施例提供了一种播放响应方法及装置、播放方法、终端设备及服务器,以解决一些技术中,云桌面的宿主机在云桌面中播放视频时设备负载高的技术问题。
第一方面,本申请一个实施例提供了一种播放响应方法,应用于云桌面服务器,所述云桌面服务器的虚拟机中运行云桌面的虚拟操作系统并在运行过程中将所述云桌面的运行界面发送至终端设备进行显示;
所述播放响应方法包括:
接收所述终端设备发送的视频播放操作,所述视频播放操作用于在所述云桌面中进行视频播放;
响应于所述视频播放操作,获取对应的视频数据;
将所述视频数据写入所述虚拟机的半虚拟化视频编解码设备,所述半虚拟化视频编解码设备通过半虚拟化前端程序注册到所述云桌面服务器的模拟视频编解码设备中;
由半虚拟化后端程序通过所述模拟视频编解码设备,获取所述半虚拟化视频编解码设备中写入的所述视频数据;
由所述半虚拟化后端程序将所述视频数据发送至所述终端设备,以使所述终端设备解码并播放所述视频数据。
第二方面,本申请一个实施例提供了一种播放方法,应用于终端设备,所述终端设备安装有云桌面客户端,所述云桌面客户端运行时显示云桌面的运行界面,所述运行界面由云桌面服务器确定;
所述播放方法包括:
接收到所述云桌面的视频播放操作时,将所述视频播放操作发送至所述云桌面服务器;
接收所述云桌面服务器根据所述视频播放操作反馈的视频数据;
对所述视频数据进行解码,并播放解码后的视频数据。
第三方面,本申请一个实施例还提供了一种播放响应装置,应用于云桌面服务器,所述云桌面服务器的虚拟机中运行云桌面的虚拟操作系统并在运行过程中将所述云桌面的运行界面发送至终端设备进行显示;
所述播放响应装置包括:
第一接收单元,用于接收所述终端设备发送的视频播放操作,所述视频播放操作用于在所述云桌面中进行视频播放;
第一获取单元,用于响应于所述视频播放操作,获取对应的视频数据;
第一写入单元,用于将所述视频数据写入所述虚拟机的半虚拟化视频编解码设备,所述半虚拟化视频编解码设备通过半虚拟化前端程序注册到所述云桌面服务器的模拟视频编解码设备中;
第二获取单元,用于由半虚拟化后端程序通过所述模拟视频编解码设备,获取所述半虚拟化视频编解码设备中写入的所述视频数据;
第一发送单元,用于由所述半虚拟化后端程序将所述视频数据发送至所述终端设备,以使所述终端设备解码并播放所述视频数据。
第四方面,本申请一个实施例还提供了一种终端设备,所述终端设备包括:一个或多个处理器以及显示屏,所述处理器运行所述终端设备安装的云桌面客户端,所述显示屏在所述云桌面客户端运行时显示云桌面的运行界面,所述运行界面由云桌面服务器确定,其中,
所述处理器接收到所述云桌面的视频播放操作时,将所述视频播放操作发送至所述云桌面服务器,接收所述云桌面服务器根据所述视频播放操作反馈的视频数据,并对所述视频数据进行解码;
所述显示屏播放解码后的视频数据。
第五方面,本申请一个实施例还提供了一种服务器,所述服务器为云桌面服务器,所述服务器包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的播放响应方法。
第六方面,本申请一个实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的播放响应方法或如第二方面所述的播放方法。
本申请一个实施例中,云桌面服务器运行云桌面的虚拟操作系统并将云桌面的运行界面发送至终端设备进行显示,在此过程中,通过接收终端设备发送的视频播放操作,获取对应的视频数据,将视频数据写入虚拟机的半虚拟化视频编解码设备,该半虚拟化视频编解码设备通过半虚拟化前端程序注册到云桌面服务器的模拟视频编解码设备中,之后,半虚拟化后端程序通过模拟视频编解码设备,获取半虚拟化视频编解码设备中写入的视频数据,并将视频数据发送至终端设备进行解码及播放的技术手段,解决了一些技术中,云桌面服务器在云桌面中播放视频时设备负载高的技术问题,通过半虚拟化技术,可以将虚拟操作系统获取的视频数据直接传输到终端设备进行解码和播放,即实现了视频播放的重定向,无需云桌面服务器再解码和播放视频数据,降低了云桌面服务器的负载。并且,通过半虚拟化视频编解码设备和模拟视频编解码设备相互配合,无需使用云桌面服务器的物理视频编解码设备,也降低了对云桌面服务器的硬件要求,尤其适用于未配置GPU的云桌面服务器。并且,通过半虚拟化前端程序和半虚拟化后端程序将视频数据由虚拟操作系统传输至物理操作系统,不需要经过虚拟机的上下文切换,使得I/O效率更高。并且,视频数据从获取到传输至终端设备的过程中,无需进行格式转换,使得本方案可以支持更多格式的视频数据的播放,且避免了视频格式转换的过程,简化了云桌面下视频播放的处理过程。
附图说明
图1为相关技术中视频播放方法的流程图;
图2为本申请一个实施例提供的一种播放响应方法的流程图;
图3为本申请一个实施例提供的一种播放响应方法的流程图;
图4为本申请一个实施例提供的一种播放方法的流程图;
图5为本申请一个实施例提供的一种终端设备界面示意图;
图6为本申请一个实施例提供的一种播放系统的系统框图;
图7为本申请一个实施例提供的一种播放系统的数据流程图;
图8为本申请一个实施例提供的一种播放响应装置的结构示意图;
图9为本申请一个实施例提供的一种终端设备的结构示意图;
图10为本申请一个实施例提供的一种云桌面服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
云桌面常见的架构包括虚拟桌面基础架构(Virtual Desktop Infrastructure,VDI)、智能桌面虚拟化(Intelligent Desktop Virtualization,IDV)以及虚拟操作系统基础架构(Virtual Operatingsystem Infrastructure,VOI)等。当前,以云桌面采用的VDI技术架构为例进行描述。
其中,VDI为集中存储、集中运算的架构。VDI技术架构是把所有的用户桌面(即云桌面)的数据运算都集中在服务器(相当于宿主机)中,用户桌面(即云桌面)接收的只是操作系统环境的画面。
VDI云桌面(即采用VDI技术架构的云桌面)场景下,通过虚拟化技术可以在服务器上运行多个操作系统,比如,通过虚拟化技术在服务器中运行Windows系统、Ubuntu系统等操作系统,以实现Windows系统的云桌面、Ubuntu系统的云桌面等。其中,Ubuntu是一个以桌面应用为主的Linux系统。用户使用的终端设备通过内部安装的客户端连接到服务器上的虚拟操作系统,之后,终端设备显示虚拟操作系统的画面,即在终端设备中显示云桌面的运行画面,以供用户操作。之后,用户操作时产生的数据都由终端设备发送至服务器,以使服务器的虚拟操作系统进行响应,并将响应画面反馈至终端设备进行显示。
其中,虚拟化技术是指计算元件在虚拟的基础上而不是真实的基础上运行,虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。服务器的物理机上安装的操作系统可记为Host OS,该操作系统为服务器所使用的操作系统,其可以认为是服务器中真实安装且存在的物理操作系统,该操作系统可以是Linux系统或其他的操作系统。在物理操作系统上安装虚拟化软件,这样就可以在物理机器上虚拟化出若干分区,以分别安装不同的操作系统,此时,虚拟化分区中安装的操作系统可认为是虚拟操作系统,一个实施例中,虚拟化分区中的虚拟操作系统便是云桌面所使用的虚拟操作系统,每个虚拟操作系统均通过对应的虚拟机实现,虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。当前,虚拟操作系统可记为Guest OS。
在服务器中,通过模拟处理器软件(qemu)虚拟出多个虚拟机。其中,qemu也可以记为虚拟操作系统模拟器,其可以理解为纯软件实现的虚拟化模拟器以及虚拟机管理器。通过qemu可以启动虚拟机以及设置虚拟机的虚拟硬件和外设设备等。
每个虚拟机可以运行一个虚拟操作系统,该虚拟操作系统运行过程中,将云桌面当前的运行界面发送至与虚拟操作系统连接的客户端中。
虚拟操作系统可安装多个应用程序,应用程序的安装来源当前不作限定。例如,虚拟操作系统安装可播放视频的应用程序(如视频播放器)、可进行书写的应用程序(如电子白板应用)等。
终端设备通过自身安装的云桌面的客户端连接到服务器上的虚拟操作系统时,客户端可使用spice或RDP等VDI协议。其中,spice协议是开源虚拟化桌面传输协议,RDP协议是远程显示协议。当前,终端设备和服务器采用spice协议为例进行描述。客户端通过spice接收到云桌面的运行界面后,显示运行界面,以供用户观看。当用户存在操作需求时,客户端可以将用户的操作发送给虚拟操作系统,由虚拟操作系统进行响应。
视频播放是用户使用终端设备时常用的功能之一。图1为相关技术中视频播放方法的流程图。参考图1,当终端设备的用户使用云桌面播放视频数据时,先在终端设备的云桌面运行界面中打开视频文件。即终端设备显示云桌面的运行界面(与播放视频相关的界面)后,用户可以在运行界面中进行操作,选择需要播放的视频文件,之后,终端设备收集用户的操作信息(如坐标等),并发送至服务器,服务器的虚拟操作系统接收该操作信息后,确定终端设备选择的视频文件,并获取对应的视频数据。之后,服务器对视频数据进行解码,以得到可以在云桌面运行界面中播放的视频画面。服务器将包含视频画面和虚拟操作系统的显示画面(在显示画面中播放视频画面)的运行界面重新编码成设定格式的数据流。其中,设定格式为设定的图片格式或设定的视频格式。可选的,图片格式采用MJPEG格式,此时,服务器将运行界面编码成MJPEG格式的图片。视频格式使用H264标准,此时,服务器将运行界面编码成H264标准的视频流。之后,服务器将设定格式的数据流发送至终端设备。可理解,发送图片所需的带宽大于发送视频流所需的带宽,因此,在带宽足的情况,服务器可以向终端设备发送图片,此时,绘制画面的清晰度好,在带宽不足的情况,服务器可以向终端设备发送视频流。终端设备接收数据流后进行解码,并更新所显示的云桌面的运行界面,当前显示的运行界面中包含视频画面,以使终端设备的用户观看到所需的视频。
上述过程中,当服务器存在物理实体的GPU(属于服务器的硬件)时,由GPU承担视频数据的解码以及运行界面的编码工作。当服务器不存在物理实体的GPU时,由服务器中物理实体的CPU(属于服务器的硬件)承担视频数据的解码以及运行界面的编码工作。由于视频播放具有实时性,因此,需要服务器频繁地进行编码和解码工作,这样使得服务器的负载非常高。并且,服务器只能将设定格式的数据流发送至终端设备,而现有的视频文件的格式非常多,这样导致服务器在播放视频数据时,需要进行格式的转换(即将视频文件的格式转换成设定格式),也增加了视频播放的处理过程。
通过视频播放重定向,可以将视频数据的解码过程重定向到终端设备中实现,即由终端设备进行视频数据的播放,有效减小了服务器(即宿主机)的负载。
一些技术中,可以通过在服务器中截取视频流的方式进行视频播放重定向。举例来说,云桌面服务器通过超文本传输协议(Hyper Text Transfer Protocol,HTTP)服务器,将虚拟机中需要播放的视频文件实现为流媒体服务器,其中,流媒体服务器可实现对流媒体内容进行采集、缓存、调度和传输播放。之后,截取视频播放器(也可理解为视频编解码设备)在解码过程中得到的视频帧,截取的视频帧可以组成视频流。之后,拦截终端设备发送的打开视频文件的动作,以在打开视频文件时获得截取的视频流,并将视频流发送至终端设备进行播放。然而,截获解码得到的视频帧时,由于不同的视频播放器解码流程不同,进而使得视频帧需要使用不同的截取方式,并且,使用流媒体播放器也会为云桌面服务器带来额外的负载开销。由于视频文件的编码格式很多,拦截打开视频文件的动作时,需要先解析编码格式,再判断该编码格式的视频文件是否能打开,在能打开时,才会拦截到打开视频文件的动作,这样易出现拦截不成功的情况。
基于此,本申请一个实施例提供一种播放响应方法及装置、播放方法、终端设备及服务器,以解决云桌面的宿主机在云桌面中播放视频时负载高的技术问题。本申请利用半虚拟化技术,将虚拟机获取的视频数据直接传输到虚拟机外(即宿主机中),再发送至终端设备进行解码和播放,无需在宿主机中对视频数据进行额外的编码和解码,减小了宿主机的负载,并且,无需使用流媒体播放器也无需考虑拦截打开视频文件的动作。视频播放重定向时,无需将视频数据编码成设定格式的数据流,也避免了视频格式转换的过程,简化了云桌面下视频播放的处理过程。
本申请一个实施例提供了一种播放响应方法,该播放响应方法可以由播放响应设备执行。播放响应设备可以通过软件和/或硬件的方式实现,播放响应设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。
当前,以播放响应设备为云桌面服务器为例,示例性描述播放响应方法。其中,云桌面服务器是指为终端设备提供云桌面服务的服务器。云桌面服务器也可理解为云桌面的宿主机,即云桌面服务器等同于前述内容中的服务器、宿主机。
本申请一个实施例中,云桌面服务器的虚拟机中运行云桌面的虚拟操作系统并在运行过程中将云桌面的运行界面发送至终端设备进行显示。
示例性的,云桌面服务器包含Host OS和多个Guest OS。Guest OS是指虚拟操作系统。每个虚拟操作系统在对应的虚拟机中运行,每个虚拟机由对应的qemu创建。每个虚拟操作系统对应一个云桌面,即作为云桌面使用的操作系统。
一个实施例中,虚拟操作系统至少安装有可播放视频的应用程序,当前将可播放视频的应用程序记为视频播放应用程序。
虚拟操作系统运行过程中,生成云桌面的运行界面。该运行界面可以是云桌面的桌面界面,也可以是云桌面所在的虚拟操作系统安装的某个应用程序运行过程中当前的应用界面。通过运行界面可以体现云桌面当前的运行内容。当前,虚拟操作系统显示的是视频播放应用程序运行过程中的某个应用界面。
云桌面服务器与终端设备相配合。其中,终端设备为云桌面的用户使用的设备,终端设备可以是交互平板、手机、笔记本电脑以及平板电脑等用户使用的设备。终端设备安装有云桌面客户端(即云桌面的应用程序)。当终端设备和云桌面服务器通过spice协议进行通信时,云桌面客户端也可记为spice APP。示例性的,云桌面客户端运行后,连接云桌面服务器中运行的虚拟操作系统。之后,虚拟操作系统将云桌面当前的运行界面编码成设定格式(MJPEG或H264)的信息流,并发送至云桌面客户端,之后,云桌面客户端显示该运行界面,以使终端设备的用户明确云桌面当前的运行情况。
云桌面服务器与终端设备配合后,实现本申请实施例中的播放响应方法。
图2为本申请一个实施例提供的一种播放响应方法的流程图。参考图2,该播放响应方法包括:
步骤110、接收终端设备发送的视频播放操作,视频播放操作用于在云桌面中进行视频播放。
一个实施例中,云桌面的运行界面当前为云桌面中视频播放应用程序运行过程中的某个应用界面,该运行界面可供用户选择待播放的视频。其中,用户选择待播放的视频的方式当前不作限定,例如,运行界面显示有可被播放的视频列表。用户在运行界面中通过发出双击操作的方式来选择待播放的视频。需说明,可被播放的视频可以是云桌面服务器本地的视频,也可以是网络视频,还可以是其他设备(可供云桌面访问并读取的设备)中存储的视频,实施例对于视频的来源不作限定。
示例性的,当用户在运行界面中选择待播放的视频后,终端设备将用户的操作发送至云桌面服务器,云桌面服务器基于该操作确定接收到终端设备发送的视频播放操作。当前,将用户选择待播放的视频的操作记为视频播放操作。终端设备可以采集用户对终端设备发出的操作,当终端设备确定用户的操作针对于云桌面时,向云桌面服务器发送该操作。
可理解,由于云桌面由云桌面服务器进行响应,终端设备只负责显示云桌面的运行界面。因此,终端设备检测到视频播放操作后,只能确定用户针对云桌面进行了操作,但是无法确定该操作就是视频播放操作,此时,终端设备只需将采集的操作发送给云桌面服务器,由云桌面服务器识别该操作为视频播放操作。可选的,终端设备向云桌面服务器上报用户的操作时,可通过操作信息的方式进行上报。相应的,云桌面服务器通过操作信息可以确定操作的操作形式(如单击、双击或长按等)以及操作在运行界面中的操作位置(可通过坐标体现),之后,云桌面服务器根据操作形式和操作位置便可确定操作所针对的内容。当前,云桌面服务器识别操作用于选择待播放的视频时,确定接收到视频播放操作,并根据视频播放操作确定用户所选择的待播放的视频。举例而言,云桌面服务器通过操作信息确定运行界面中某个可播放的视频接收到双击操作后确定接收到视频播放操作,并且,确定接收到双击操作的视频为终端设备的用户选择的视频。
一个实施例中,由云桌面服务器的虚拟操作系统接收终端设备的云桌面客户端上报的操作,之后,虚拟操作系统将接收的操作分发给虚拟操作系统中正在运行的应用程序(当前,正在运行的应用程序为视频播放应用程序),视频播放应用程序根据该操作确定接收到视频播放操作并确定用户选择播放的视频。
需要说明,视频播放应用程序并非是对应用程序的名称进行的限定,实际应用中,任何可实现视频播放应用程序的功能的应用程序,均等同于本申请中的视频播放应用程序。
步骤120、响应于视频播放操作,获取对应的视频数据。
云桌面服务器对视频播放操作进行响应时,获取用户选择的待播放的视频,该过程由视频播放应用程序执行。示例性的,视频播放应用程序确定用户选择播放的视频后,获取对应的视频数据。当前,视频数据也可记为视频流,其是视频源(也可记为视频来源)对视频画面编码后生成的数据,即视频数据可以认为是视频源输出的原始的数据,视频播放应用程序从视频源中获取到视频数据后未对视频数据进行编码或解码,视频数据保持视频源输出时的编码格式。
步骤130、将视频数据写入虚拟机中的半虚拟化视频编解码设备,半虚拟化视频编解码设备通过半虚拟化前端程序注册到云桌面服务器的模拟视频编解码设备中。
视频编解码设备也可认为是视频播放器,其用于对视频数据进行编码及解码。一些情况下,视频编解码设备也具备音频数据的编码及解码功能,实施例对此不作限定。视频编解码设备可以是硬件设备(即实体设备),也可以是模拟出的虚拟设备。例如,GPU可认为是实体的视频编解码设备。再如,在CPU中模拟出虚拟的视频编解码设备(非实体)。
一个实施例中,云桌面服务器的Host OS和Guest OS均有对应的视频编解码设备。
其中,Host OS的视频编解码设备,是由Host OS的内核模拟出的视频编解码设备,该视频编解码设备为虚拟设备,这样设置的好处是,无需为云桌面服务器配置物理的视频编解码设备(如GPU),减小了云桌面服务器的硬件成本。当前,将Host OS的视频编解码设备记为模拟视频编解码设备。可选的,模拟视频编解码设备为V4L2编解码设备。即模拟视频编解码设备进行解码时,使用V42L进行解码。其中,V4L2(Video for linux2)是Linux中关于视频设备的内核驱动。实施例中使用模拟视频编解码设备的解码功能。
Guest OS的视频编解码设备,是qemu为虚拟机虚拟出的视频编解码设备,其在qemu创建虚拟机时设置。可理解,云桌面服务器通过多个qemu可虚拟出多个运行Guest OS的虚拟机,如通过qemu-1、qemu-2……qemu-n虚拟出虚拟机VM-1、虚拟机VM-2……虚拟机VM-n。此时,每个虚拟机中的Guest OS均有对应的视频编解码设备。当前,Guest OS的视频编解码设备为采用半虚拟化技术virtio虚拟出的视频编解码设备,即通过virtio半虚拟化协议的方式驱动视频编解码设备。其中,virtio是半虚拟化hypervisor(即虚拟机监视器)中位于设备之上的抽象层,其提供了一种I/O半虚拟化解决方案,是一套通用I/O设备虚拟化的程序。一个实施例中,将Guest OS的视频编解码设备记为半虚拟化视频编解码设备。
qemu启动虚拟机时,以参数配置的方式可以设置虚拟机的虚拟硬件和外设等,而半虚拟化视频编解码设备可以认为是虚拟硬件的一种,因此,一个实施例中,通过在qemu程序的启动参数中增加半虚拟化视频编解码设备的设备参数的方式,实现在qemu启动虚拟机时为虚拟机设置半虚拟化视频编解码设备,进而在虚拟机启动Guest OS时,在Guest OS的设备列表中出现半虚拟化视频编解码设备。
一般而言,virtio分为前端和后端。即,virtio驱动半虚拟化视频编解码设备时分为前端驱动程序和后端驱动程序,当前,将virtio的前端驱动程序记为半虚拟化前端程序,将后端驱动程序记为半虚拟化后端程序。对于virtio而言,Guest OS中必须安装特定的virtio驱动程序,以将virtio作为媒介实现视频数据的传输(实施例中是将视频数据从Guest OS中传输到Host OS中),因此,一个实施例中,半虚拟化前端程序安装在虚拟操作系统(即Guest OS)中并在虚拟操作系统中运行,以便Guest OS处理I/O操作请求时可以调用半虚拟化前端程序。可选的,Guest OS启动时,启动半虚拟化前端程序。
半虚拟化后端程序安装在虚拟操作系统模拟器(即qemu)中并在云桌面服务器的物理操作系统(即Host OS)中运行。由于Host OS的内核(即kernel)支持virtio的驱动,因此,实施例中,将半虚拟化后端程序作为Host OS的用户服务进程,在Host OS的后台运行。可选的,Host OS启动时,半虚拟化后端程序跟随Host OS自启动。
一个实施例中,半虚拟化前端程序在Guest OS中运行,半虚拟化后端程序在HostOS的运行,通过半虚拟化前端程序和半虚拟化后端程序实现Guest OS和Host OS的通信。示例性的,通过virtio将半虚拟化视频编解码设备注册到模拟视频编解码设备中,该注册过程由半虚拟化前端程序实现,即半虚拟化前端程序启动后,将半虚拟化视频编解码设备注册到模拟设备中,以建立Guest OS和Host OS之间视频编解码联系,进而实现Guest OS和Host OS的通信。其中,注册过程的具体实现方式当前不作限定,注册后,当Guest OS播放视频时,Host OS可以得到对应的视频数据。
需要说明,对于单个虚拟机的视角而言,注册过程可理解为将半虚拟化视频编解码设备注册到模拟视频编解码设备,对于云桌面服务器的整体框架视角而言,注册过程也可理解为将模拟视频编解码设备注册到每个半虚拟化视频编解码设备,无论怎么描述,其实现的功能均相同。
可理解,播放视频数据时,需要先将视频数据写入视频编解码设备,由视频编解码设备进行解码,以得到可以播放的视频画面。因此,当Guest OS的视频播放应用程序根据视频播放操作确定需要播放视频后,先将视频数据写入自身的半虚拟化视频编解码设备。一个实施例中,半虚拟化前端程序驱动Guest OS的半虚拟化视频编解码设备的过程中,可以将视频播放应用程序获取的视频数据写入半虚拟化视频编解码设备。区别与现有技术中的解码操作,实施例中,半虚拟化视频编解码设备仅接收视频数据,不进行解码工作。
示例性的,由于半虚拟化视频编解码设备注册到模拟视频编解码设备,因此,当半虚拟化视频编解码设备中写入视频数据后,模拟视频编解码设备便可被动接收到该视频数据,以此实现将Guest OS中播放的视频数据传输至Host OS的模拟视频编解码设备。
步骤140、由半虚拟化后端程序通过模拟视频编解码设备,获取半虚拟化视频编解码设备中写入的视频数据。
示例性的,半虚拟化后端程序运行在Host OS时,属于Host OS的后台服务进程。
需要说明,半虚拟化视频编解码设备中写入的视频数据由模拟视频编解码设备被动接收后,可以认为是由模拟视频编解码设备解码视频数据,但是,实施例中,Host OS的模拟视频编解码设备被动接收到视频数据后不进行解码工作,而是由属于Host OS后台服务进程的半虚拟化后端程序获取该视频数据,以此,实现将虚拟机中需要播放的视频数据由Guest OS传输到Host OS中。
可理解,将视频数据由Guest OS传输到Host OS的过程中,半虚拟化前端程序可以认为是实现写(write)的程序,即将视频数据写入视频编解码设备。半虚拟化后端程序可以认为是实现读(read)的程序,即从视频编解码设备中读取视频数据。
步骤150、由半虚拟化后端程序将视频数据发送至终端设备,以使终端设备解码并播放视频数据。
示例性的,半虚拟化后端程序获取到视频数据后,转发给spice协议,由spice协议将视频数据发送至终端设备。此时,终端设备接收到的是从视频源中获取的原始的数据。
一个实施例中,由于终端设备和云桌面客户端通过spice协议进行通信,因此,半虚拟化后端程序获取到视频数据后,先将视频数据发送给对应的qemu,之后,由qemu通过spice协议将视频数据发送给终端设备。此时,步骤150可包括步骤151-步骤152:
步骤151、由半虚拟化后端程序将视频数据共享给虚拟机的虚拟操作系统模拟器。
示例性的,利用共享内存技术,半虚拟化后端程序可以将获取的视频数据共享给虚拟操作系统模拟器(即qemu)。可理解,半虚拟化后端程序属于Host OS的一个进程,通过qemu启动的虚拟机也属于Host OS的一个进程。进程和进程之间可以通过共享内存技术进行数据共享。当前,共享内存技术可理解为两个不相关的进程可共同访问同一内存的技术。
步骤152、由虚拟操作系统模拟器将视频数据发送至终端设备。
示例性的,qemu获取到视频数据后,利用spice的数据流传输通道,将视频数据发送给终端设备,即视频数据和云桌面的运行界面可采用同一传输通道。具体来说,qemu将视频数据发送至spice server(即spice服务),之后,spice server将视频数据封装成spice协议,并加入传输的channel,之后,通过socket将视频数据发送至终端设备。可理解,运行界面也采用该流程进行传输。
一个实施例中,终端设备的云桌面客户端通过spice协议接收到视频数据后,终端设备指示gstreamer播放该视频数据。其中,gstreamer是一个支持Windows、Linux、Android以及iOS的跨平台的多媒体框架。gstreamer可以简化处理视频的应用程序的开发过程。使用gstreamer构建的视频的播放器可以支持多种视频的格式,并且,基于gstreamer还可以得到提供各种编解码及其他功能的插件。实施例中,gstreamer播放视频数据时,先确定视频数据所采用的编码格式。其中,编码格式是指视频源输出视频数据时对视频画面进行编码的格式。之后,gstreamer在终端设备中找到与编码格式对应的视频解码设备,可选的,视频解码设备是终端设备中用于对视频数据进行解码的物理实体设备。终端设备的操作系统可对视频解码设备进行控制,以指示视频解码设备进行解码工作。当前,gstreamer将视频数据写入视频解码设备后,由视频解码设备对视频数据进行解码,解码后的视频数据便可理解为待播放的视频画面。之后,终端设备显示解码后的视频数据(即视频画面)。
可理解,云桌面当前的运行界面由云桌面服务器生成,所以,终端设备无法直接在云桌面的运行界面中播放视频数据,此时,为了实现终端设备本地播放视频数据,可以是终端设备生成一个透明的显示层,当前记为透明层。透明层覆盖在当前显示的云桌面的运行界面之上,之后,在透明层中显示解码后的视频数据。
可选的,终端设备在透明层中显示视频数据时,先确定云桌面的运行界面中应显示视频数据的区域,之后,在该区域对应的位置处显示视频数据。该区域对应的位置可由云桌面服务器告知终端设备。
可选的,终端设备播放视频数据,当用户存在控制视频数据的播放的需求时,终端设备可以将用户执行的操作发送至云桌面服务器,由云桌面服务器进行响应。举例而言,用户停止播放时,Guest OS的视频播放应用程序接收到终端设备发送的操作后确定停止播放视频数据,此时,视频播放应用程序指示Guest OS停止向半虚拟化视频编解码设备写入视频数据,以使终端设备接收不到视频数据,进而实现停止播放视频数据。
上述,云桌面服务器运行云桌面的虚拟操作系统并将云桌面的运行界面发送至终端设备进行显示,在此过程中,通过接收终端设备发送的视频播放操作,获取对应的视频数据,将视频数据写入虚拟机的半虚拟化视频编解码设备,该半虚拟化视频编解码设备通过半虚拟化前端程序注册到云桌面服务器的模拟视频编解码设备中,之后,半虚拟化后端程序通过模拟视频编解码设备,获取半虚拟化视频编解码设备中写入的视频数据,并将视频数据发送至终端设备进行解码及播放的技术手段,解决了一些技术中,云桌面服务器在云桌面中播放视频时设备负载高的技术问题,通过半虚拟化技术,可以将虚拟操作系统获取的视频数据直接传输到终端设备进行解码和播放,即实现了视频播放的重定向,无需云桌面服务器再解码和播放视频数据,降低了云桌面服务器的负载。并且,通过半虚拟化视频编解码设备和模拟视频编解码设备相互配合,无需使用云桌面服务器的物理视频编解码设备,也降低了对云桌面服务器的硬件要求,尤其适用于未配置GPU的云桌面服务器。并且,通过半虚拟化前端程序和半虚拟化后端程序将视频数据由虚拟操作系统传输至物理操作系统,不需要经过虚拟机的上下文切换,使得I/O效率更高。并且,视频数据从获取到传输至终端设备的过程中,无需进行格式转换,使得本方案可以支持更多格式的视频数据的播放,且避免了视频格式转换的过程,简化了云桌面下视频播放的处理过程。
本申请一个实施例中,原本需要在云桌面中播放的视频数据重定向到终端设备中播放,这时,云桌面的运行界面无需再播放视频数据。此时,步骤150中,由半虚拟化后端程序将视频数据发送至终端设备时,还可包括:更新云桌面的运行界面,更新后的运行界面为视频数据的播放界面,播放界面中的视频显示区域被设置为预设的静态背景;将更新后的运行界面发送至终端设备,以使终端设备显示更新后的运行界面且终端设备播放的视频数据覆盖在运行界面之上。
示例性的,Guest OS将视频数据发送至终端设备进行播放时,视频播放应用程序还更新运行界面,即将当前可供用户选择待播放视频的运行界面更新为用于播放视频数据的运行界面。当前,将用于播放视频数据的运行界面记为播放界面。播放界面至少包括视频播放区域。视频播放区域也可记为视频播放窗口,其是视频播放应用程序播放视频数据时所使用的窗口。可选的,播放界面还可包括其他内容,如包括用于控制视频播放区域(如控制最大化、最小化、悬浮显示、关闭或退出等)的控制组件。
一个实施例中,在终端设备中播放视频数据时,云桌面服务器无需播放视频数据,此时,视频播放应用程序可将视频播放区域设置为预设的静态背景。其中,预设的静态背景的样式可根据实际情况设置,例如,预先设定一张静态的图片,该图片一般为一张纯色的图片,视频播放应用程序生成播放界面时,在视频播放区域中显示该图片。再如,预设的静态背景为黑色,视频播放应用程序显示播放界面时,将视频播放区域设置为黑色。可理解,现有的播放界面中的视频播放区域需要显示视频数据,本申请实施例中的播放界面中的视频播放区域无需显示视频数据,只需要显示静态背景。
一个实施例中,由于云桌面的运行界面需要显示在终端设备中,因此,运行界面更新后,云桌面服务器还需要将更新后的运行界面发送至终端设备。细化来说,Guest OS获取视频播放应用程序当前更新的运行界面(即播放界面),并将更新的运行界面编码成设定格式(如图片格式或视频格式)的数据流,之后,将数据流发送至qemu,qemu将数据流发送至spice server,spice server利用spice协议,将数据流发送至终端设备的云桌面客户端,云桌面客户端解码数据流后,获取更新后的运行界面,之后,云桌面客户端显示该运行界面。
需要说明,终端设备播放视频数据时,还显示云桌面的运行界面,且播放的视频数据覆盖在运行界面之上,此时,由于运行界面未播放视频数据,因此,终端设备用户观看的视频数据仅是终端设备播放的视频数据。
可选的,运行界面和视频数据可一同发送至终端终端。
可选的,终端设备播放视频数据时,若运行界面(即播放界面)无需变化,则GuestOS只需在刚生成播放界面时,将播放界面发送至终端设备,在播放界面持续显示的过程中,无需再向终端设备发送播放界面。当Guest OS确定运行界面发生变化时,再将变化后的运行界面发送至终端设备。
上述,由于云桌面的播放界面中视频播放区域设置为静态背景,因此,当终端设备显示播放界面时,静态背景会被终端设备播放的视频数据覆盖,此时,不会影响视频数据的播放效果,并且,云桌面服务器无需再对视频数据进行编码,减轻了云桌面服务器的负载。
本申请一个实施例中,为了保证终端设备播放视频数据时的播放效果,云桌面服务器还可以将视频数据的播放信息发送至终端设备,以使终端设备根据播放信息播放视频数据,此时,步骤150中,由半虚拟化后端程序将视频数据发送至终端设备时,还可包括:将视频数据的播放信息发送至终端设备,以使终端设备根据播放信息播放视频数据,播放信息包括用于播放视频数据的视频播放区域的位置信息。
示例性的,播放信息可理解为视频播放区域的属性信息,一个实施例中,播放信息至少包括视频播放区域的位置信息。位置信息是指视频播放区域在运行界面中的位置信息,位置信息可以包括视频播放区域的大小(即尺寸)和视频播放区域的顶点的坐标。终端设备根据位置信息确定视频播放区域在运行界面中位置和大小,进而根据视频播放区域的大小设置透明层的大小并根据视频播放区域的顶点的坐标确定透明层的顶点的坐标,以使透明层仅覆盖在视频播放区域之上。这样,当透明层显示视频数据时,可以达到在视频播放区域中播放视频数据的视觉效果。
一个实施例中,播放信息可与视频数据和/或运行界面一同发送至终端设备中。举例而言,视频播放应用程序生成运行界面(当前指播放界面)时,还获取播放信息,并发送给Guest OS。之后,Guest OS将播放信息发送至qemu,qemu将播放信息发送至spice server,spice server利用spice协议,将播放信息发送至终端设备的云桌面客户端,云桌面客户端将播放信息发送至终端设备的操作系统,之后,操作系统根据播放信息生成透明层,并将透明层覆盖在运行界面上。此时,终端设备的用户还可以对运行界面中非透明层覆盖的其他区域进行操作。
上述,通过向终端设备发送视频数据的播放信息,可以使得透明层仅覆盖在视频播放区域之上,进一步保证了终端设备播放视频数据时的播放效果。
图3为本申请一个实施例提供的一种播放响应方法的流程图。图3所示的播放响应方法由云桌面服务器执行,该播放响应方法是在前述播放响应方法的基础上,对云桌面服务器中应用的virtio作细化描述,参考图3,该播放响应方法包括:
步骤210、启动半虚拟化后端程序。
示例性的,Host OS启动时,qemu中的半虚拟化后端程序自动启动。半虚拟化后端程序启动后,作为Host OS的后台服务进程持续在Host OS的后台运行。可选的,云桌面服务器中的虚拟机为多个时,每个虚拟机均有对应的半虚拟化视频编解码设备、半虚拟化前端程序和半虚拟化后端程序。每个半虚拟化后端程序均可作为一个后台的服务进程,随HostOS的启动自启动。
步骤220、通过虚拟操作系统模拟器启动虚拟机,并由虚拟机启动半虚拟化前端程序,虚拟机默认的视频编解码设备为半虚拟化视频编解码设备。
示例性的,由云桌面服务器对云桌面进行集中控制,如由云桌面服务器创建虚拟机以及启动虚拟机。其中,云桌面服务器启动虚拟机的指令的获取方式当前不作限定,例如,用户通过终端设备的云桌面客户端进行登录时,云桌面服务器确定启动虚拟机。
一个实施例中,云桌面服务器通过qemu启动虚拟机。qemu启动虚拟机时,为虚拟机添加视频编解码设备,该视频编解码设备可以认为是虚拟机默认的视频编解码设备,以供虚拟机使用。一个实施例中,在qemu程序的启动参数中增加半虚拟化视频编解码设备的设备参数,当qemu启动虚拟机时,虚拟机通过启动参数中的设备参数可虚拟出半虚拟化视频编解码设备并作为默认的视频编解码设备。当虚拟机的Guest OS启动后,Guest OS的设备列表中便会出现半虚拟化视频编解码设备。其中,启动参数是qemu程序启动时使用的参数,设备参数用于描述半虚拟化视频编解码设备,设备列表描述有虚拟机的虚拟硬件和外设设备等。
一个实施例中,虚拟机启动时,虚拟机的内核(即kernel)启动半虚拟化前端程序,半虚拟化前端程序启动后运行在Guest OS中,可选的,Guest OS运行过程中,半虚拟化前端程序持续运行。此时,半虚拟化前端程序和对应的半虚拟化后端程序配合后,便可驱动半虚拟化视频编解码设备。
可选的,虚拟机启动后(也可以是虚拟操作系统启动后),终端设备的云桌面客户端便可连接到虚拟机,即连接到虚拟操作系统。之后,虚拟操作系统将云桌面的运行界面发送至云桌面客户端,以由云桌面客户端显示运行界面。
步骤230、由半虚拟化前端程序将半虚拟化视频编解码设备注册到模拟视频编解码设备,以使半虚拟化后端程序通过模拟视频编解码设备获取到半虚拟化视频编解码设备中写入的视频数据。
示例性的,半虚拟化前端程序启动后,将半虚拟化视频编解码设备注册到模拟视频编解码设备,注册过程可以理解为由模拟视频编解码设备向半虚拟化视频编解码设备提供接口,通过该接口可以使得模拟视频编解码设备被动接收半虚拟化视频编解码设备中写入的视频数据。按照常规的播放流程,半虚拟化视频编解码设备接收到视频数据后,对视频数据进行解码,并得到解码后的视频数据,以在运行界面中播放解码后的视频数据,而本申请一个实施例中,通过注册将模拟视频编解码设备的接口提供给半虚拟化视频编解码设备,此时,半虚拟化视频编解码设备接收视频数据后,在解码视频数据时,不对视频数据进行解码,而是向接口写入视频数据,以使模拟视频编解码设备通过接口被动接收到视频数据。其中,将视频数据写入接口后,可以认为半虚拟化视频编解码设备完成了对视频数据的解码。
需要说明,本申请实施例中半虚拟化视频编码设备注册后主要针对于视频数据的播放重定向,其主要涉及视频数据的解码过程。当半虚拟化视频编解码设备需要进行编码时,其具体的编码过程当前不作限定。
步骤240、接收终端设备发送的视频播放操作,视频播放操作用于在云桌面中进行视频播放。
步骤250、响应于播放请求,获取对应的视频数据。
步骤260、将视频数据写入虚拟机中的半虚拟化视频编解码设备,半虚拟化视频编解码设备通过半虚拟化前端程序注册到云桌面服务器的模拟视频编解码设备中。
步骤270、由半虚拟化后端程序通过模拟视频编解码设备,获取半虚拟化视频编解码设备中写入的视频数据。
步骤280、由半虚拟化后端程序将视频数据发送至终端设备,以使终端设备解码并播放视频数据。
需要说明,启动半虚拟化后端程序,是启动Host OS时,发生的动作。而启动虚拟机是存在虚拟机启动需求(也可以理解为云桌面启动需求)时发生的动作。如果没有虚拟机启动需求,可以不启动虚拟机。但是,启动虚拟机是在Host OS启动完成后才会发生的动作。因此,实施例中,写明了启动半虚拟化后端程序和启动虚拟机的时间顺序,但该时间顺序并不用于限定启动半虚拟化后端程序后必然启动虚拟机。同样的,接收视频播放操作是存在视频播放需求时发生的动作。如果没有视频播放需求,可以不进行视频播放,即不接收视频播放操作。但是,接收视频播放操作是在云桌面运行过程中发生的动作,这时,虚拟机已经启动完毕,且半虚拟化视频编解码设备已经注册到模拟视频编解码设备。因此,实施例中,写明了接收视频播放操作与启动虚拟机以及半虚拟化视频编解码设备注册到模拟视频编解码设备的时间顺序,但该时间顺序并不用于限定半虚拟化视频编解码设备注册到模拟视频编解码设备后必然发生接收视频播放操作。
上述,利用virtio技术,为虚拟机模拟出半虚拟化视频编解码设备,并通过半虚拟化后端程序和半虚拟化前端程序配合,将虚拟机中的半虚拟化视频编解码设备注册到云桌面服务器的模拟视频编解码设备,可以使得虚拟机中需要播放的视频数据传输至云桌面服务器,进而由云桌面服务器将视频数据传输到终端设备,以使终端设备解码并播放视频数据,实现了将视频播放重定向到终端设备,降低了云桌面服务器的负载。并且,无需使用云桌面服务器的物理视频编解码设备,也降低了对云桌面服务器的硬件要求,尤其适用于未配置GPU的云桌面服务器。视频数据的传输过程,不需要经过虚拟机的上下文切换,提高了云桌面服务器的I/O效率。
本申请一个实施例还提供了一种播放方法,该播放方法可以由播放设备执行,播放设备可以通过软件和/或硬件的方式实现,播放设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。
一个实施例中,播放设备为终端设备,该终端设备可以是交互平板、手机、笔记本电脑以及平板电脑等设备。当前,以终端设备为交互平板为例进行描述。其中,交互平板是通过触控技术对显示在显示平板上的内容进行操控和实现人机交互操作的一体化设备,其集成了投影机、电子白板、幕布、音响、电视机以及视频会议终端等一种或多种功能。
终端设备安装有至少一类操作系统,操作系统可以是Android系统、Windows系统或Linux系统等。一个实施例中,以操作系统为Android系统为例进行描述,该操作系统可理解为终端设备中真实安装且存在的操作系统。终端设备在操作系统下安装至少一个应用程序。其中,应用程序可以是操作系统自带的应用程序,也安装是从第三方设备或者服务器中下载的应用程序,当前不作限定。
一个实施例中,终端设备在操作系统下至少安装有云桌面客户端,云桌面客户端运行时显示云桌面的运行界面,该运行界面由云桌面服务器确定。
终端设备在操作系统中安装有作为spice客户端的应用程序(即spice APP),以通过spice客户端连接云桌面的虚拟操作系统,当前,将spice客户端记为云桌面客户端,运行云桌面客户端后,可以使终端设备呈现运行云桌面的效果。
示例性的,终端设备运行云桌面客户端后,由云桌面客户端显示云桌面的运行界面,该运行界面可以是云桌面的桌面界面,也可以是云桌面所在的虚拟操作系统安装的某个应用程序运行过程中当前的应用界面。运行界面由云桌面服务器确定,之后,云桌面服务器指示终端设备显示该运行界面,以使终端设备的用户明确云桌面当前的运行情况。
终端设备还配置有至少一块显示屏。该显示屏可具有触摸功能也可以不具有触摸功能,当显示屏具有触摸功能时,终端设备还配置有用于接收触摸操作的装置,基于触摸操作的检测类型,该装置可以是电容触摸检测装置、电阻触摸检测装置、红外触摸检测装置和/或电磁触摸检测装置。用户可以通过手指或触控笔(也可称为触摸笔、书写笔、智能笔等)触控显示屏的方式实现对终端设备的控制,如在终端设备中进行书写。此外,终端设备还可以连接鼠标、键盘等外置设备,用户还可以通过操作外置设备的方式实现对终端设备的控制,如通过鼠标在终端设备中进行书写。
终端设备还配置有视频解码设备,该视频解码设备为硬件的视频解码设备(hardware decoder device)。终端设备通过视频解码设备解码视频数据,进而播放解码后的视频数据。
终端设备还配置有网络接口,终端设备通过网络接口实现通信功能,例如,终端设备通过网络接口与服务器进行数据通信。
一个实施例中,终端设备和云桌面服务器配合后,实现播放方法。
图4为本申请一个实施例提供的一种播放方法的流程图。参考图4,该播放方法包括:
步骤310、接收到云桌面的视频播放操作时,将视频播放操作发送至云桌面服务器。
终端设备检测到用户的操作后,确定该操作所针对的对象,若该操作针对的对象是云桌面,则将该操作发送给云桌面服务器,由云桌面服务器响应该操作。若该操作针对的对象不是云桌面的运行界面,则由终端设备响应该操作。
一个实施例中,终端设备当前显示云桌面的运行界面,并且,该运行界面是可供用户选择待播放的视频的界面。当终端设备检测到该运行界面接收到操作时,确定检测到针对于云桌面的操作,并将该操作发送至云桌面服务器。需要说明,用户针对云桌面进行操作时,终端设备只能确定该操作针对云桌面,无法确定该操作就是视频播放操作,需要由云桌面服务器进一步判断。本步骤中“接收到云桌面的视频播放操作”仅是为了便于理解本申请的技术方案,从功能上限定了视频播放操作,不是对终端设备识别视频播放操作的限定。
步骤320、接收云桌面服务器根据视频播放操作反馈的视频数据。
示例性的,云桌面服务器响应视频播放操作时,获取视频播放操作所选择的视频数据,并将视频数据发送给终端设备。当前,云桌面服务器所发送的视频数据为视频源输出的视频数据。其中,云桌面服务器将视频数据发送给终端数据的过程可参考前述播放响应方法中的相关描述。
一个实施例中,由终端设备的gstreamer接收云桌面服务器通过spice协议发送的视频数据。
步骤330、对视频数据进行解码,并播放解码后的视频数据。
示例性的,终端设备接收后视频数据后,先对视频数据进行解码,以得到可播放的视频画面,之后,终端设备在本地播放解码后的视频数据,以使终端设备的用户观看到视频数据。
一个实施例中,由终端设备中硬件的视频解码设备解码视频数据,此时,对视频数据进行解码可包括步骤331-步骤332:
步骤331、将视频数据写入终端设备的视频解码设备。
示例性的,gstreamer接收视频数据后,根据视频数据的编码格式,找到可对视频数据进行解码的视频解码设备。之后,gstreamer通过多媒体框架(multimedia framework)将视频数据写入视频解码设备。其中,multimedia framework是Android中用于播放多媒体的常用框架。
需要说明,实施例中,终端设备使用硬件的视频解码设备,实际应用中,终端设备的操作系统也可以模拟出虚拟的视频解码设备。
步骤332、由视频解码设备解码视频数据。
示例性的,视频解码设备中写入视频数据后,根据视频数据的编码格式,对视频数据进行解码,解码后的视频数据可被播放。
一个实施例中,终端设备在本地播放视频数据时,无法直接将视频数据渲染在云桌面的运行界面中,需要在运行界面上覆盖一个透明层并在透明层中播放视频数据,以实现在本地播放视频数据。此时,本步骤中播放解码后的视频数据可包括步骤333-步骤334:
步骤333、生成透明层,将透明层覆盖在云桌面的运行界面上。
透明层可理解为透明的显示层。可理解,终端设备显示的画面可以由至少一个显示层叠加而成,每个显示层可单独被操作。终端设备确定需要播放云桌面的视频数据时,新增一个透明层,并将该透明层覆盖在云桌面的运行界面上。可理解,从用户视角来说,不会观看到覆盖透明层的过程。可选的,透明层与云桌面的运行界面具有相同的大小,或者是,透明层与云桌面的运行界面中的视频播放区域具有相同的大小。
一个实施例中,终端设备生成Overlay层,并将Overlay层作为透明层。其中,终端设备通过管理显示的系统服务(即SurfaceFlinger)管理Overlay层的显示和刷新。
步骤334、在透明层中显示解码后的视频数据。
示例性的,终端设备将解码得到的视频数据显示在透明层中,以实现播放视频数据。
可选的,终端设备不再接收云桌面服务器发送的视频数据时,关闭透明层,并当再次接收到视频数据时,再次生成透明层。
上述,终端设备运行其安装的云桌面客户端时显示云桌面的运行界面,当终端设备接收到云桌面的视频播放操作时,将视频播放操作发送至云桌面服务器,之后,接收云桌面服务器反馈的视频数据,并对视频数据进行解码和播放的技术手段,实现了在终端设备中播放云桌面的视频数据,无需云桌面服务器解码并播放视频数据,降低了云桌面服务器的负载。
本申请一个实施例中,终端设备显示视频数据时,仍需持续显示云桌面的运行界面,并且,在运行界面更新时,显示更新后的运行界面。此时,步骤320中,接收云桌面服务器根据视频播放操作反馈的视频数据时,还包括:接收云桌面服务器发送的更新后的运行界面,更新后的运行界面为视频数据的播放界面,播放界面中的视频播放区域被设置为预设的静态背景;显示更新后的运行界面。
示例性的,终端设备运行云桌面客户端时,无论是否显示视频数据,均持续显示运行界面,仅是在显示视频数据时,在运行界面上覆盖有透明层。一个实施例中,终端设备播放视频数据时,接收的云桌面的运行界面为播放界面,此时,除了视频数据遮挡的部分外,播放界面的其他区域仍可被用户观看到,以达到在播放界面中播放视频数据的视觉效果。为了避免播放界面对视频数据播放效果的影响,设置播放界面中的视频播放区域设置为预设的静态背景,以在播放视频数据时,视频播放区域的静态背景不会影响视频数据的显示效果。
本申请一个实施例中,设置透明层的大小与视频播放区域的大小一致,此时,步骤320中,接收云桌面服务器根据所述播放请求反馈的视频数据时,还包括:接收所述云桌面服务器发送的所述视频数据的播放信息,播放信息包括用于播放视频数据的视频播放区域的位置信息;步骤330中,播放解码后的视频数据,包括:根据播放信息,播放解码后的视频数据。
示例性的,播放信息中的位置信息包括视频播放区域的大小和顶点坐标,之后,终端设备根据视频播放区域的大小,生成与视频播放区域的大小一致的透明层,并根据视频播放区域的顶点坐标,在对应位置处显示透明层,以使透明层仅覆盖在视频播放区域之上。举例而言,图5为本申请一个实施例提供的一种终端设备界面示意图。参考图5,从用户视角来说,可以达在运行界面的视频播放区域中播放视频数据的效果。终端设备显示播放界面11时,播放界面之上覆盖有overlay层(图5中为了便于理解,对overlay层进行了文字说明),结合图5可知,overlay层刚好覆盖在视频播放区域12上,此时,视频播放区域12周边的视频标题栏和播放器窗口13仍可见,且未被覆盖。其中,视频标题栏和播放器窗口可理解为视频播放时使用的窗口的边框,该边框可显示视频的名称。窗口中的区域便是视频播放区域。从用户视角来说,可以达在运行界面的视频播放区域中播放视频数据的效果。
可理解,终端终端根据视频播放区域的顶点坐标,在对应位置处显示透明层时,可能涉及到坐标转换,如将视频播放区域的顶点坐标转换为显示屏中像素的坐标,坐标转换的具体过程当前不作限定。
本申请一个实施例中,终端设备播放视频数据后,当用户存在对视频数据的控制需求时,由云桌面服务器响应用户的控制需求。此时,步骤330之后,还可包括步骤340-步骤350:
步骤340、接收针对于视频数据的控制操作。
示例性的,控制操作是指控制视频数据播放的控制,控制操作包括但不限定于:暂定播放操作、恢复播放操作、快进操作、快退操作以及调整播放时间操作等。控制操作的触发方式当前不作限定。例如,云桌面的运行界面(当前为播放界面)中除了视频播放区域被透明层覆盖,其他区域可接收用户的操作,并且,其他区域中显示有用于触发控制操作的虚拟按键。当用户对其他区域进行操作时,终端设备可将该操作上报至云桌面服务器,参考云桌面服务器识别视频播放操作的方式,当云桌面服务器确定接收的操作作用于虚拟按键时,确定接收到控制操作。再如,云桌面的运行界面(当前为播放界面)被透明层完全覆盖,当用户对透明层中除播放视频数据外的其他区域进行操作时,终端设备将该操作上报至云桌面服务器,云桌面服务器确定该操作在运行界面中针对的对象,进而确定该操作为控制操作。又如,当用户对透明层进行操作时,终端设备可认为该操作针对于云桌面,并上报至云桌面服务器。
需要说明,对于终端设备而言,其无法识别控制操作,仅能识别到该操作针对于云桌面。由云桌面服务器识别该操作是否控制操作。
步骤350、将控制操作发送至云桌面服务器,由云桌面服务器响应控制操作。
示例性的,由云桌面服务器的虚拟操作程序将终端设备上报的操作转发至当前运行的视频播放应用程序,视频播放应用程序识别控制操作。之后,由视频播放应用程序响应控制操作。
视频播放应用程序响应控制操作时,具体是,根据控制操作对半虚拟化编解码设备进行操作。举例而言,控制操作为暂停播放操作时,视频播放应用程序指示半虚拟化编解码设备停止写入视频数据。此时,半虚拟化后端程序无法获取到视频数据,进而无法向终端设备发送视频数据。终端设备接收不到视频数据,便不会播放视频数据。
可理解,视频播放应用程序响应控制操作时,如果需要保留透明层中的视频数据,如暂停播放时透明层中的视频数据仍需被显示,则视频播放应用程序可以向终端设备发送一个截图指令,之后,终端设备响应该截图指令,对透明层中的视频数据进行截图,并显示截图,以达到暂停播放的效果,当终端设备再次接收到云桌面服务器反馈的视频数据时,取消显示该截图,并继续播放视频数据。
上述过程中,终端设备播放视频数据时,用户仍然可以通过云桌面服务器对视频数据进行控制,提高了终端设备的播放灵活度。
需要说明,播放方法中未详细描述的技术细节可参考播放响应方法中的相关描述,具备相应的功能和有益效果。
本申请一个实施例还提供了一种播放系统,图6为本申请一个实施例提供的一种播放系统的系统框图。参考图6,该播放系统包括云桌面服务器和至少一个终端设备,图6以一个终端设备为例进行描述。
云桌面服务器安装有Host OS,Host OS设置有虚拟的模拟视频编解码设备。云桌面服务器通过多个qemu(图6中分别记为qemu-1、qemu-2……qemu-n,n的数量可以根据实际情况设置)虚拟出多个虚拟机(图6中分别记为VM-1、VM-2……VM-n),每个qemu对应一个虚拟机。每个虚拟机均有对应的半虚拟化视频编解码设备。每个半虚拟化视频编解码设备均注册到模拟视频编解码设备。
云桌面服务器通过spice协议与终端设备进行通信。终端设备安装的操作系统记为Client OS。Client OS安装有硬件的视频解码设备(hardware decoder device)。
图7为本申请一个实施例提供的一种播放系统的数据流程图,参考图7,云桌面服务器的Host OS启动时,qemu中的半虚拟化后端程序随Host OS自启动,并作为Host OS的进程。云桌面服务器确定启动云桌面时,先通过对应的qemu启动云桌面的虚拟机。qemu的启动参数中增加半虚拟化视频编解码设备的设备参数,以在虚拟机启动Guest OS后,Guest OS系统的设备列表中显示有半虚拟化视频编解码设备。当前,将Guest OS中使用的半虚拟化视频编解码设备记为/dev/video0。虚拟机启动时,虚拟机的内核启动半虚拟化前端程序,半虚拟化前端程序将Guest OS的/dev/video0注册到Host OS的模拟视频编解码设备,当前,将Host OS的模拟视频编解码设备可以记为/dev/video0。可理解,/dev/video0仅是对应操作系统中的视频编解码设备的名称,Guest OS和Host OS的/dev/video0为两个独立的设备。
之后,终端设备的云桌面客户端连接到Guest OS(还过程可以认为是建立云桌面客户端与虚拟机的通信连接),接收Guest OS发送的运行界面,并显示运行界面。之后,终端设备将接收的针对云桌面的操作上报至云桌面服务器的Guest OS。Guest OS将操作发送给当前运行的视频播放应用程序,视频播放应用程序识别该操作为视频播放操作时,确定接收到终端设备发送的视频播放操作。之后,视频播放应用程序根据视频播放操作获取待播放的视频数据。之后,视频数据由半虚拟化前端程序写入Guest OS的/dev/video0,此时,Host OS的/dev/video0可被动接收Guest OS的/dev/video0中写入的视频数据。之后,半虚拟化后端程序读取Host OS的/dev/video0中接收的视频数据,并将视频数据利用共享内容技术,共享给对应的qemu,qemu将视频数据发送给spice sever,由spice sever将视频数据发送给终端设备。
终端设备的Client OS的gstreamer可以接收云桌面服务器发送的视频数据,并通过multimedia framework将视频数据写入hardware decoder device,由hardwaredecoder device进行解码。解码后,终端设备将解码得到的视频数据(其为可以显示的画面)作为overlay层的显示内容进行显示,并将overlay层覆盖在云桌面的运行界面上,以实现将云桌面中播放的视频数据重定向到终端设备中。
终端设备播放视频数据时,云桌面服务器还将运行界面中用于播放视频数据的视频播放区域设置为静态背景(如黑色),以在终端设备播放视频数据时,降低运行界面对播放效果的影响。
上述过程,将云桌面中播放的视频数据重定向到终端设备中播放,无需云桌面服务器再解码和播放视频数据,降低了云桌面服务器的负载。并且,通过半虚拟化视频编解码设备和模拟视频编解码设备相互配合,无需使用云桌面服务器的物理视频编解码设备,也降低了对云桌面服务器的硬件要求,尤其适用于未配置GPU的云桌面服务器。并且,通过半虚拟化前端程序和半虚拟化后端程序将视频数据由虚拟操作系统传输至物理操作系统,不需要经过虚拟机的上下文切换,使得I/O效率更高。并且,视频数据从获取到传输至终端设备的过程中,无需进行格式转换,使得本方案可以支持更多格式的视频数据的播放,且避免了视频格式转换的过程,简化了云桌面下视频播放的处理过程。
可理解,上述播放系统还用于执行前述任意实施例提供的播放响应方向以及播放方法,且具体相应的功能和有益效果。
下面对本申请实施例提供的播放系统进行应用场景举例:
当前,应用场景为教学场景。教学场景下,学校机房中的服务器作为云桌面服务器,可以运行多个虚拟机,每个虚拟机对应一个云桌面的虚拟操作系统。学校各教室中安装有交互平板,教室中安装的交互平板、老师配备的办公用的电脑以及教学使用的电脑等均可作为与云桌面服务器配合的终端设备。终端设备运行云桌面客户端后连接云桌面服务器对应的虚拟机,当终端设备需要在云桌面中播放视频数据时,利用virtio技术,实现将视频数据重定向到终端设备中进行解码播放,以减轻云桌面服务器的负载。
本申请一个实施例还提供了一种播放响应装置。图8为本申请一个实施例提供的一种播放响应装置的结构示意图。该播放响应装置应用于云桌面服务器,云桌面服务器的虚拟机中运行云桌面的虚拟操作系统并在运行过程中将所述云桌面的运行界面发送至终端设备进行显示。参考图8,该播放响应装置包括:第一接收单元401、第一获取单元402、第一写入单元403、第二获取单元404以及第一发送单元405。
其中,第一接收单元401,用于接收所述终端设备发送的视频播放操作,所述视频播放操作用于在所述云桌面中进行视频播放;第一获取单元402,用于响应于所述视频播放操作,获取对应的视频数据;第一写入单元403,用于将所述视频数据写入所述虚拟机的半虚拟化视频编解码设备,所述半虚拟化视频编解码设备通过半虚拟化前端程序注册到所述云桌面服务器的模拟视频编解码设备中;第二获取单元404,用于由半虚拟化后端程序通过所述模拟视频编解码设备,获取所述半虚拟化视频编解码设备中写入的所述视频数据;第一发送单元405,用于由所述半虚拟化后端程序将所述视频数据发送至所述终端设备,以使所述终端设备解码并播放所述视频数据。
本申请一个实施例中,播放响应装置还包括:第一启动单元,用于接收所述终端设备发送的视频播放操作之前,启动半虚拟化后端程序;第二启动单元,用于通过虚拟操作系统模拟器启动所述虚拟机,并由所述虚拟机启动所述半虚拟化前端程序,所述虚拟机默认的视频编解码设备为所述半虚拟化视频编解码设备;设备注册单元,用于由所述半虚拟化前端程序将所述半虚拟化视频编解码设备注册到所述模拟视频编解码设备,以使所述半虚拟化后端程序通过所述模拟视频编解码设备获取到所述半虚拟化视频编解码设备中写入的视频数据。
本申请一个实施例中,第一发送单元包括:数据共享子单元,用于由所述半虚拟化后端程序将所述视频数据共享给所述虚拟机的虚拟操作系统模拟器;第二发送子单元,用于由所述虚拟操作系统模拟器将所述视频数据发送至所述终端设备。
本申请一个实施例中,所述播放响应装置还包括:界面更新单元,用于由所述半虚拟化后端程序将所述视频数据发送至所述终端设备时,更新所述云桌面的运行界面,更新后的所述运行界面为所述视频数据的播放界面,所述播放界面中的视频播放区域被设置为预设的静态背景;第三发送单元,用于将更新后的所述运行界面发送至所述终端设备,以使所述终端设备显示更新后的所述运行界面且所述终端设备播放的视频数据覆盖在所述运行界面之上。
本申请一个实施例中,所述播放响应装置还包括:第四发送单元,用于由所述半虚拟化后端程序将所述视频数据发送至所述终端设备时,将所述视频数据的播放信息发送至所述终端设备,以使所述终端设备根据所述播放信息播放所述视频数据,所述播放信息包括用于播放视频数据的视频播放区域的位置信息。
本申请一个实施例中,所述半虚拟化后端程序安装在所述虚拟操作系统模拟器中并在所述云桌面服务器的物理操作系统中运行,所述半虚拟化前端程序安装在所述虚拟操作系统中并在所述虚拟操作系统中运行。
本申请一个实施例提供的播放响应装置包含在云桌面服务器中,且可用于执行上述任意实施例中云桌面服务器提供的播放响应方法,具备相应的功能和有益效果。
值得注意的是,上述播放响应装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
图9为本申请一个实施例提供的一种终端设备的结构示意图。该终端设备包括处理器50和显示屏51。终端设备中处理器50的数量可以为一个或多个,图9中以一个处理器50为例。
示例性的,处理器50包括中央处理器(central processing unit,CPU),CPU主要承担终端设备的运算和控制核心。一个实施例中,终端设备还包括存储器,存储器可用于存储软件程序、计算机可执行程序以及模块,处理器50通过运行存储在存储器中的软件程序、指令以及模块,可以执行终端设备的各种功能应用以及数据处理。可选的,存储器包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。一个实施例中,所述终端设备还包括:视频解码设备,该视频解码设备为硬件的视频解码设备,可根据终端设备处理器50的指示,进行视频数据的解码。一个实施例中,终端设备还包括网络接口,网络接口与外部终端(如云桌面服务器)通过网络连接通信。一个实施例中,终端设备还包括至少一个显示屏51。显示屏51可以是液晶显示屏、LED显示屏或OLED显示屏等,当前不作限定。可选的,显示屏51具有触摸功能,且触摸方式可以是电容、电阻、红外和/或电磁等方式,并通过对应的触摸检测装置接收触摸操作。当前,显示屏51的成像内容由处理器50确定。此外,终端设备还可以包括扬声器、麦克风等音频输出、输入设备,还可以包括与终端设备的用户设备以及控制有关的输入装置(如物理按键等)。可理解,终端设备的处理器、存储器、显示屏以及网络接口等装置可以通过总线或其他方式连接。
一个实施例中,处理器50运行终端设备安装的云桌面客户端,显示屏在云桌面客户端运行时显示云桌面的运行界面,运行界面由云桌面服务器确定。
处理器50接收到所述云桌面的视频播放操作时,将所述视频播放操作发送至所述云桌面服务器,接收所述云桌面服务器根据所述视频播放操作反馈的视频数据,并对所述视频数据进行解码;显示屏51播放解码后的视频数据。
本申请一个实施例中,处理器对所述视频数据进行解码时,具体包括:处理器将所述视频数据写入所述视频解码设备;由所述视频解码数据解码所述视频数据。
示例性的,处理器中的gstreamer接收视频数据后,根据视频数据的编码格式,找到可对视频数据进行解码的视频解码设备。之后,通过多媒体框架(multimediaframework)将视频数据写入视频解码设备。视频解码设备中写入视频数据后,根据视频数据的编码格式,对视频数据进行解码,解码后的视频数据可在显示屏中播放
本申请一个实施例中,显示屏播放解码后的视频数据时,具体包括:显示屏显示透明层,所述透明层覆盖在所述云桌面的运行界面上;显示屏在所述透明层中显示解码后的所述视频数据。
示例性的,处理器生成透明层,并指示显示屏显示透明层,并指示在透明层中显示解码后的视频数据。
本申请一个实施例中,处理器对所述视频数据进行解码,并播放解码后的视频数据之后,还包括:处理器接收针对于所述视频数据的控制操作,将所述控制操作发送至所述云桌面服务器,由所述云桌面服务器响应所述控制操作。
本申请一个实施例中,处理器接收所述云桌面服务器根据所述视频播放操作反馈的视频数据时,还接收所述云桌面服务器发送的更新后的运行界面,更新后的所述运行界面为所述视频数据的播放界面,所述播放界面中的视频播放区域被设置为预设的静态背景。相应的,显示屏播放解码后的视频数据时,还显示更新后的运行界面。
本申请一个实施例中,处理器接收所述云桌面服务器根据所述视频播放操作反馈的视频数据时,还接收云桌面服务器发送的所述视频数据的播放信息,所述播放信息包括用于播放视频数据的视频播放区域的位置信息,并根据播放信息指示显示屏播放视频数据。
本申请一个实施例提供的终端设备可用于执行上述任意实施例中提供的播放方法,具备相应的功能和有益效果,终端设备执行播放方法时的相关技术细节可参考前述实施例中的相关技术细节。
图10为本申请一个实施例提供的一种云桌面服务器的结构示意图。如图10所示,该云桌面服务器包括处理器60、存储器61以及通信装置62;云桌面服务器中处理器60的数量可以是一个或多个,图10中以一个处理器60为例;云桌面服务器中的处理器60、存储器61以及通信装置62可以通过总线或其他方式连接,图10中以通过总线连接为例。其中,云桌面服务器也可以记为服务器。
存储器61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的云桌面服务器执行播放响应方法时对应的程序指令/模块(例如,播放响应装置中的第一接收单元401、第一获取单元402和第一写入单元403、第二获取单元404以及第一发送单元405)。处理器60通过运行存储在存储器61中的软件程序、指令以及模块,从而执行云桌面服务器的各种功能应用以及数据处理,即实现上述云桌面服务器执行的播放响应方法。
存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据云桌面服务器的使用所创建的数据等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至云桌面服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
云桌面服务器还可包括输入装置,输入装置可用于接收输入的数字或字符信息,以及产生与云桌面服务器的用户设置以及功能控制有关的键信号输入。云桌面服务器还可包括输出装置,输出装置可包括音频播放装置等设备。云桌面服务器还可包括显示屏,该显示屏可以是具有触摸功能的显示屏,显示屏根据处理器60的指示进行显示。通信装置62也可理解为网络接口,用于实现通信功能,如与终端设备进行数据传输。
可理解,云桌面服务器的虚拟机中运行的操作系统为云桌面对应的虚拟操作系统,且云桌面服务器确定云桌面的运行界面,并在终端设备的云桌面客户端运行时,由终端设备显示运行界面。
上述云桌面服务器包含播放响应装置,可以用于执行云桌面服务器执行的播放响应方法,具备相应的功能和有益效果。
本申请一个实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本申请任意实施例中提供的播放响应方法中的相关操作,且具备相应的功能和有益效果。
本申请一个实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本申请任意实施例中提供的播放方法中的相关操作,且具备相应的功能和有益效果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。
因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

Claims (19)

1.一种播放响应方法,应用于云桌面服务器,其特征在于,所述云桌面服务器的虚拟机中运行云桌面的虚拟操作系统并在运行过程中将所述云桌面的运行界面发送至终端设备进行显示;
所述播放响应方法包括:
接收所述终端设备发送的视频播放操作,所述视频播放操作用于在所述云桌面中进行视频播放;
响应于所述视频播放操作,获取对应的视频数据;
将所述视频数据写入所述虚拟机的半虚拟化视频编解码设备,所述半虚拟化视频编解码设备通过半虚拟化前端程序注册到所述云桌面服务器的模拟视频编解码设备中;
由半虚拟化后端程序通过所述模拟视频编解码设备,获取所述半虚拟化视频编解码设备中写入的所述视频数据;
由所述半虚拟化后端程序将所述视频数据发送至所述终端设备,以使所述终端设备解码并播放所述视频数据。
2.根据权利要求1所述的播放响应方法,其特征在于,所述接收所述终端设备发送的视频播放操作之前,包括:
启动半虚拟化后端程序;
通过虚拟操作系统模拟器启动所述虚拟机,并由所述虚拟机启动所述半虚拟化前端程序,所述虚拟机默认的视频编解码设备为所述半虚拟化视频编解码设备;
由所述半虚拟化前端程序将所述半虚拟化视频编解码设备注册到所述模拟视频编解码设备,以使所述半虚拟化后端程序通过所述模拟视频编解码设备获取到所述半虚拟化视频编解码设备中写入的视频数据。
3.根据权利要求1所述的播放响应方法,其特征在于,所述由所述半虚拟化后端程序将所述视频数据发送至所述终端设备,包括:
由所述半虚拟化后端程序将所述视频数据共享给所述虚拟机的虚拟操作系统模拟器;
由所述虚拟操作系统模拟器将所述视频数据发送至所述终端设备。
4.根据权利要求1所述的播放响应方法,其特征在于,所述由所述半虚拟化后端程序将所述视频数据发送至所述终端设备时,还包括:
更新所述云桌面的运行界面,更新后的所述运行界面为所述视频数据的播放界面,所述播放界面中的视频播放区域被设置为预设的静态背景;
将更新后的所述运行界面发送至所述终端设备,以使所述终端设备显示更新后的所述运行界面且所述终端设备播放的视频数据覆盖在所述运行界面之上。
5.根据权利要求1或4所述的播放响应方法,其特征在于,所述由所述半虚拟化后端程序将所述视频数据发送至所述终端设备时,还包括:
将所述视频数据的播放信息发送至所述终端设备,以使所述终端设备根据所述播放信息播放所述视频数据,所述播放信息包括用于播放视频数据的视频播放区域的位置信息。
6.根据权利要求1所述的播放响应方法,其特征在于,所述半虚拟化后端程序安装在所述虚拟操作系统模拟器中并在所述云桌面服务器的物理操作系统中运行,所述半虚拟化前端程序安装在所述虚拟操作系统中并在所述虚拟操作系统中运行。
7.一种播放方法,应用于终端设备,其特征在于,所述终端设备安装有云桌面客户端,所述云桌面客户端运行时显示云桌面的运行界面,所述运行界面由云桌面服务器确定;
所述播放方法包括:
接收到所述云桌面的视频播放操作时,将所述视频播放操作发送至所述云桌面服务器;
接收所述云桌面服务器根据所述视频播放操作反馈的视频数据;
对所述视频数据进行解码,并播放解码后的视频数据。
8.根据权利要求7所述的播放方法,其特征在于,所述对所述视频数据进行解码,包括:
将所述视频数据写入所述终端设备的视频解码设备;
由所述视频解码设备解码所述视频数据。
9.根据权利要求7所述的播放方法,其特征在于,所述播放解码后的视频数据,包括:
生成透明层,将所述透明层覆盖在所述云桌面的运行界面上;
在所述透明层中显示解码后的所述视频数据。
10.根据权利要求7所述的播放方法,其特征在于,所述对所述视频数据进行解码,并播放解码后的视频数据之后,还包括:
接收针对于所述视频数据的控制操作;
将所述控制操作发送至所述云桌面服务器,由所述云桌面服务器响应所述控制操作。
11.根据权利要求7所述的播放方法,其特征在于,所述接收所述云桌面服务器根据所述视频播放操作反馈的视频数据时,还包括:
接收所述云桌面服务器发送的更新后的运行界面,更新后的所述运行界面为所述视频数据的播放界面,所述播放界面中的视频播放区域被设置为预设的静态背景;
显示所述更新后的运行界面。
12.根据权利要求7或11所述的播放方法,其特征在于,所述接收所述云桌面服务器根据所述视频播放操作反馈的视频数据时,还包括:
接收所述云桌面服务器发送的所述视频数据的播放信息,所述播放信息包括用于播放视频数据的视频播放区域的位置信息;
所述播放解码后的视频数据,包括:
根据所述播放信息,播放解码后的视频数据。
13.一种播放响应装置,应用于云桌面服务器,其特征在于,所述云桌面服务器的虚拟机中运行云桌面的虚拟操作系统并在运行过程中将所述云桌面的运行界面发送至终端设备进行显示;
所述播放响应装置包括:
第一接收单元,用于接收所述终端设备发送的视频播放操作,所述视频播放操作用于在所述云桌面中进行视频播放;
第一获取单元,用于响应于所述视频播放操作,获取对应的视频数据;
第一写入单元,用于将所述视频数据写入所述虚拟机的半虚拟化视频编解码设备,所述半虚拟化视频编解码设备通过半虚拟化前端程序注册到所述云桌面服务器的模拟视频编解码设备中;
第二获取单元,用于由半虚拟化后端程序通过所述模拟视频编解码设备,获取所述半虚拟化视频编解码设备中写入的所述视频数据;
第一发送单元,用于由所述半虚拟化后端程序将所述视频数据发送至所述终端设备,以使所述终端设备解码并播放所述视频数据。
14.一种终端设备,其特征在于,包括:一个或多个处理器以及显示屏,所述处理器运行所述终端设备安装的云桌面客户端,所述显示屏在所述云桌面客户端运行时显示云桌面的运行界面,所述运行界面由云桌面服务器确定,其中,
所述处理器接收到所述云桌面的视频播放操作时,将所述视频播放操作发送至所述云桌面服务器,接收所述云桌面服务器根据所述视频播放操作反馈的视频数据,并对所述视频数据进行解码;
所述显示屏播放解码后的视频数据。
15.根据权利要求14所述的终端设备,其特征在于,所述终端设备还包括:视频解码设备;
所述处理器对所述视频数据进行解码时,具体包括:
所述处理器将所述视频数据写入所述视频解码设备;
由所述视频解码数据解码所述视频数据。
16.根据权利要求14的终端设备,其特征在于,所述显示屏播放解码后的视频数据时,具体包括:
所述显示屏显示透明层,所述透明层覆盖在所述云桌面的运行界面上;
所述显示屏在所述透明层中显示解码后的所述视频数据。
17.根据权利要求14的终端设备,其特征在于,所述处理器接收所述云桌面服务器根据所述视频播放操作反馈的视频数据时,还包括:
所述处理器接收所述云桌面服务器发送的更新后的运行界面,更新后的所述运行界面为所述视频数据的播放界面,所述播放界面中的视频播放区域设置为预设的静态背景;
所述显示屏播放解码后的视频数据时,还包括:
所述显示屏显示所述更新后的运行界面。
18.一种服务器,所述服务器为云桌面服务器,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的播放响应方法。
19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的播放响应方法或如权利要求7-12中任一所述的播放方法。
CN202211477495.8A 2022-11-23 2022-11-23 播放响应方法及装置、播放方法、终端设备及服务器 Pending CN118075514A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211477495.8A CN118075514A (zh) 2022-11-23 2022-11-23 播放响应方法及装置、播放方法、终端设备及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211477495.8A CN118075514A (zh) 2022-11-23 2022-11-23 播放响应方法及装置、播放方法、终端设备及服务器

Publications (1)

Publication Number Publication Date
CN118075514A true CN118075514A (zh) 2024-05-24

Family

ID=91094255

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211477495.8A Pending CN118075514A (zh) 2022-11-23 2022-11-23 播放响应方法及装置、播放方法、终端设备及服务器

Country Status (1)

Country Link
CN (1) CN118075514A (zh)

Similar Documents

Publication Publication Date Title
WO2021057830A1 (zh) 一种信息处理方法及电子设备
US8959141B2 (en) System and method for pervasive computing
US10271105B2 (en) Method for playing video, client, and computer storage medium
US20150082239A1 (en) Remote Virtualization of Mobile Apps with Transformed Ad Target Preview
CN111625214B (zh) 音频控制方法、装置、设备及存储介质
CN112073758B (zh) 一种云桌面投屏方法、装置、计算机设备、计算机可读存储介质及云桌面投屏交互系统
WO2017124860A1 (zh) 分布式无线多屏虚拟机服务系统
WO2016197862A1 (zh) 一种数据传输方法、装置和智能电视系统
US20130324099A1 (en) System and Method for Running Mobile Devices in the Cloud
KR101173599B1 (ko) 가상 원격 제어 시스템, 장치 및 그 방법
CN102981894A (zh) 显示方法和电子设备
CN103581754A (zh) 一种数据显示方法及智能设备
US11425466B2 (en) Data transmission method and device
US20240129557A1 (en) Live streaming method and apparatus, and computer device and storage medium
CN112203154A (zh) 一种显示设备
Lee et al. FLUID-XP: Flexible user interface distribution for cross-platform experience
CN107241651B (zh) 一种媒体数据播放方法和装置、智能终端
CN114095778B (zh) 一种应用级播放器的音频硬解码方法及显示设备
WO2021052488A1 (zh) 一种信息处理方法及电子设备
US11936928B2 (en) Method, system and device for sharing contents
CN112073787A (zh) 显示设备及首页显示方法
CN112269668A (zh) 一种应用资源共享及显示设备
CN118075514A (zh) 播放响应方法及装置、播放方法、终端设备及服务器
WO2022121778A1 (zh) 声音信息处理方法及装置、计算机存储介质、电子设备
US10290151B2 (en) AR/VR device virtualisation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination