云桌面3D视频处理技术研究与优化

2020-02-03 02:39彭高贤
电子技术与软件工程 2020年19期
关键词:视频文件解码桌面

彭高贤

(湖南工程学院 湖南省湘潭市 411101)

1 云桌面概述

云桌面也称桌面虚拟化,它是一种将访问桌面系统的物理客户端与桌面环境和相关的应用软件相分离的软件技术。云桌面是一系列技术的集合,其架构是Client/Server 结构。云端服务器通过虚拟化技术生成一定数量的独立桌面操作系统(虚拟桌面),然后通过远程桌面协议将虚拟的面操作系统发送给终端,用户在终端上通过网络访问自己的桌面系统。在云桌面系统中,应用程序和相关数据信息全部保存在云端服务器中,应用程序在云端服务器上执行,执行结果通过远程桌面协议发送到终端,终端仅用于显示桌面图像,并接收键盘、鼠标等外设的输入,这些输入通过远程桌面协议回传到远端服务器进行处理。

云桌面是一项涉及虚拟化技术、存储技术、网络技术、音视频处理技术等多种技术的信息系统解决方案。云桌面和个人PC 对比有以下几个优点:

(1)成本低。云桌面终端只需要一般配置便可使用云桌面系统提供的计算资源。

(2)资源利用率高。可以将多台服务器资源虚拟成资源池分配给用户按需取用。

(3)使用方便。云桌面的操作系统由管理员统一管理,将安装好的系统发布成系统模板,用户只需选用这个模板就能使用标准化的系统和软件。

(4)便于管理。管理员可以在管理系统中监控各台终端的在线状态,可以通过负载均衡添加或替换硬件资源,再池化分享[1]。

云桌面在CPU、内存、网卡等资源的虚拟化做得相当稳定,但是在显卡虚拟化方面却显得技术不够完善,从而导致云桌面播放3D 视频效果不佳。因此云桌面仅限于浏览网页和编辑文档等对显卡需求不高的任务,如果有3D 视频需求的用户,云桌面显然不是最好的选择。

2 云桌面3D处理技术研究

2.1 通过VDI架构的显卡虚拟化支持3D视频播放。

VDI 架构是基于Linux 底层采用KVM 虚拟化技术,通过在服务器上运行操作系统,根据不同用户需求对桌面进行虚拟化配置,是目前主流的云桌面虚拟化架构。所有用户的桌面数据都存储在服务器上,具有“集中计算,集中管理”的特点。云桌面VDI 架构如图1所示。

服务器端是多台服务器组成集群,具有强扩展性,通过虚拟化技术将服务器的各种物理资源,如处理器、内存、显卡、存储等虚拟化成各种虚拟的物理资源池,实现按需取用,通过网络映射到终端设备,供终端设备使用[2]。终端可以是笔记本、PC 机、手机等,安装好客户端软件,远程连接到服务器,即可运行自己的逻辑计算机,所有资源和数据都由服务器提供,移动性强。

基于VDI 架构,实现3D 视频播放的原理很容易理解,系统将播放3D 视频需要的硬件设备虚拟化后,由终端控制播放3D 视频,服务器将3D 视频资源解码后的数据传输到终端设备,终端接收到数据之后即可直接播放。由于3D 视频资源解码后数据量非常大,常常受限于网络,导致3D 视频播放卡顿。

图1:VDI 架构

2.2 通过IDV架构的终端支持云桌面3D视频播放。

IDV 架构是强调充分利用云终端的资源来进行计算和存储,各桌面运行系统分布在各个云终端,服务器只是对各个桌面进行托管来加强管理,服务器只管理IDV 的云桌面的模式,而存储和运行则在云终端进行,具有“分布式计算,集中管理”的特点[3]。采取分布式计算,并集中和简化管理、部署功能。虚拟桌面充分利用终端的硬件资源,每个终端都是虚拟桌面节点,云桌面在断网时也可运行,重新连上服务器后会同步管理数据到服务器。相对于VDI架构而言,体验更佳,更接近真实物理设备,IDV 架构是目前实现3D 视频功能的主流云桌面架构。

由于IDV 架构的云桌面是分布式计算,所以终端如果要播放3D 视频,终端必须具有支持3D 视频播放的硬件设备。其播放原理与一台普通的计算机无异,由终端设备本地对3D 视频资源进行解码播放。

3 云桌面3D视频处理技术优化

由于VDI 架构对3D 视频播放效果不佳,根据企业对VDI 架构云桌面的实际应用需求,提出基于VDI 架构的3D 视频处理的优化方案。企业在使用云桌面的过程中,考虑设备成本的同时,也有部分对用户体验要求高的需求。为此,针对用户体验要求不高的,可以采用瘦客户机节约成本;针对用户体验要求高的,可以采用胖客户机来提升性能。胖客户机本地自带显卡可以对3D 视频进行计算解码,而瘦客户机本地没有显卡,不具备对3D 视频进行本地解码的功能。

基于SPICE 协议的视频重定向是一个建立在云桌面技术基础上的一个高清视频播放方案[4]。在实现的过程中需要针对SPICE 协议代码做相应的改进,加入相应的功能模块:视频劫持模块(FFMPEG HOOK)、文件传送模块(FILE Share)、视频播放模块(FFMPEG Player),此三个模块分别在基于SPICE 协议的Guest OS、Client OS、QEMU 模块下实现。如图2所示。

图2:SPICE 协议的视频重定向架构

图3:视频播放流程

从图2 可以看出Guest OS 的File Share 模块和Client OS 的FFMPEG Player 模块之间增加文件传输通道,虚拟机的视频文件可以绕过QEMU 进行数据传送,直接把视频数据传送给Client 端[5]。标准SPICE 协议在进行视频传输时主要通过QEMU 的QXL 虚拟设备来进行视频的解码,然后把解码后的数据传送到Client 端进行视频播放。经过视频重定向的SPICE 协议减少了在QEMU 端的视频解码,减轻服务器的运行,把视频解码放在了客户端上完成。

服务器端和客户端分别实现一个播放器,在服务器端分析视频文件的组织方式,分析视频播放区域,截获未解码的视频流。服务器端捕获播放器播放的3D 视频编码流,直接将视频编码流发送到客户端进行解码播放显示,使用客户端的CPU/GPU 进行解码,实现视频文件的高清、高性能播放。这样就解决了服务器端视频播放耗费的服务器性能、同时解决了网络流量大导致视频播放不流畅的问题。视频播放流程如图3所示。

在客户端打开视频文件,播放视频文件时会调用相应的FFMPEG 库函数,FFMPEG 库函数中可以实现劫持播放器,分析本地视频类型和判断客户端类型的功能,重新编译成新的动态库替换原有的FFMPEG 动态库[6]。FFMPEG 相应库函数中增加判断视频类型和判断客户端类型的功能代码,如果视频类型为3D 视频,客户端是瘦客户机,则按照原有的传输路径把视频数据和视频控制信息通过SPICE 协议的QXL 设备,解码后传送到客户端。如果视频类型为3D 视频,且客户端是胖客户机,则把视频数据和视频控制信息转给FFMPEG 底层库,底层库会通知文件传送模块把视频文件加入到文件共享池,等待客户端对此视频文件的数据请求。播放模块随时准备响应客户端的视频请求,一旦接收到客户端的播放请求信息后,会和文件传送模块通信请求视频文件,然后通过视频流的方式将视频传送给客户端,由客户端上的设备进行解码播放。

4 结束语

由于现在显卡虚拟化技术还不够完善,虚拟显卡对3D 视频的处理往往不如物理显卡性能好,且受限于网络带宽,导致VDI 架构的客户端3D 视频播放体验不佳。通过视频重定向的方案能解决企业使用云桌面的大部分难题,相比传统3D 视频解决方案的IDV架构而言,既可以降低设备成本提高资源利用率,也能根据特定需求实现3D 视频播放的良好用户体验。

猜你喜欢
视频文件解码桌面
桌面舞龙
流媒体视频文件相似性识别的方法
《解码万吨站》
随心定制视频文件的缩略图
基于APP在线控制双挤出头FDM桌面3D打印机的研制
桌面云技术在铁路行业中的应用
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
当灰尘厚厚地落满了桌面