总18期
Focus    焦点
Focus    焦点
VDI应用中音视频质量的优化
文/雷昭燕
分享

VDI(Virtual Desktop Infrastructure,虚拟桌面基础架构)也称云桌面,是一种强大的桌面虚拟化技术,应用该技术,用户桌面应用实际运行在数据中心服务器上,用户终端只是承担桌面的呈现和与外设的联系。

VDI的核心价值在于移动性和安全性。对于终端用户而言,VDI在为每个用户提供完全个性化的桌面的同时,允许用户随时随地在任何设备上访问虚拟桌面;而对管理者而言,能够通过整合和集中桌面来简化管理和成本,有具有集中管理的安全性和简单性。

图1 VDI架构示意图

由于VDI的桌面应用程序实际运行在服务器侧,要提供与应用程序在本地运行同样的体验,除了确保网络的通畅外,还要尽可能提高网络传输的效率。实际上,为了给用户提供清晰的显示、流畅的视频、优质真实的声音效果,给用户提供如同本地般的体验,桌面协议、传输协议及显示、音视频技术在其中扮演着重要角色。各大VDI技术供应商都有自己的桌面协议,比如Citrix的ICA、VMware的PCoIP等,它们也是这些VDI厂商保持市场领先的关键竞争力。

图2 桌面协议架构示意图

一、 常见的桌面协议

VDI应用中客户端和服务器上的远程桌面之间是通过桌面协议进行通信的。常见的桌面协议有:ICA/HDX、SPICE、PCoIP、RDP/RemoteFX、VDP。它们来自不同的厂商,有各自不同的特点。其中,Citrix ICA/HDX 进入VDI领域最早,需要的传输带宽低,安全稳定;SPICE是开源的VDI协议,开放性好;VDP在音频、视频播放、传输安全性、外设支持等各方面支持都比较好,缺点是需要的带宽稍高。RDP在Windows中默认支持,其他环境下使用较少;PCoIP综合起来优势不多,使用这个协议的较少。

1. ICA/HDX

ICA(Independent Computing Architecture)协议属于Citrix公司。从1992年ICA 1.0发布,到今天ICA仍是使用最多的桌面协议之一。

ICA最大的优点是带宽占用低,在低带宽的网络环境下仍能稳定地运行。这是因为ICA远程图像传输采用了矢量数据处理方式,即把图形数据分为位图、文字、图形命令,再通过压缩算法传输至终端,再渲染显示。同时,ICA具有网络协议无关性(可以支持TCP/IP、NetBIOS和IPX/SPX)和平台无关性(支持XenServer、vSphere、Hyper-V等虚拟化平台)。

HDX(High-definition Experience)是ICA的增强功能模块,和ICA的融合版本称为ICA/HDX,旨在为用户提供理想的音视频(包括音视频,多媒体和3D)体验,无论是本地网络、移动网络,还是高延迟广域网,用户都能保持良好互动。

2. PCoIP

PCoIP(PC-over-IP)协议是VMware与Teradici共同开发的。PCoIP的带宽占用相对较高,其最大的特点是:PCoIP和硬件结合紧密,数据的编码/解码、图形处理可以通过专门的硬件来完成,使得CPU可以空出来做其它工作。其传输层使用了UDP协议,UDP协议传输是不可靠的,但是UDP协议比TCP协议传输速度快,适合流媒体传输。

3. RDP

RDP(Remote Desktop Protocol)协议是微软开发的桌面协议。RDP传输层使用TCP协议,主要应用在Windows环境中,现在已支持Mac下的RDP客户端和Linux下的RDP客户端;RDP协议支持的功能比较少,现在RDP最新版也支持了打印机重定向、音频重定向、剪贴板共享等功能。

RemoteFX是微软在RDP中增加的一项桌面虚拟化技术,支持用户使用远程桌面进行游戏、专业的2D、3D制图,还提供了GPU/vGPU、视频、多点触摸、USB重定向等功能。

4. SPICE

SPICE(Simple Protocol for Independent Computing Environments),最初是由Qumranet开发,后来被红帽公司收购并开源。

SPICE是一款开源虚拟桌面协议,传输层使用TCP协议,支持多种平台(Windows/Linux/Mac OS平台全兼容)。SPICE对视频、音频、图像等媒体支持良好:由于SPICE的显示信息由KVM压缩处理完成,避免了Guest OS内由于视频压缩对于CPU的过量消耗,因此对视频处理比较有优势;支持外接设备:除常用USB设备外,打印机和扫描仪等设备也能在远程使用;具有安全的数据传输特性:SPICE可以使用OpenSSL加密传输数据。

5. VDP

VDP(Virtual Desktop Protocol)是H3C的虚拟桌面协议。VDP传输层使用TCP协议,支持多种平台(Windows/Linux/Mac OS平台全兼容);对视频、音频、图像等媒体支持良好,图像压缩算法支持H.264;支持外接设备:除常用USB设备外,打印机和扫描仪等设备也能在远程使用;具有安全的数据传输特性。

VDP增强了图形处理,支持GPU,支持3D渲染实现硬件加速(服务器侧),以支持2D、3D等专业制图、设计的业务需求。

二、 传输协议和虚通道

桌面协议的传输层使用的是TCP或UDP。TCP是面向连接、可靠、基于字节流控制的传输,就像一个管道一样将应用层和 IP 层连接起来。TCP适合用在可靠性要求高的应用。TCP的缺点是TCP的3次握手4次挥手,使得TCP建立连接比较慢。近年来,对TCP拥塞控制算法有持续的改进,涌现出很多新的算法,如Reno、CUBIC、BBR等。UDP提供无连接通信,但不对传送的数据包提供可靠性保证,它只管把数据发送出去,并不保证数据能到达目的地。UDP对应的是可靠性要求低、传输快速的应用。

Google在2016年提出了QUIC(Quick UDP Internet Connection)协议。QUIC使用 UDP 来传输数据以加快网络速度,降低延迟,由 QUIC 来保证数据的顺序、完整性和正确性,即使发生了丢包,也由 QUIC 来负责数据的纠错。QUIC俨然成为了传输协议界的新星。

在TCP/UDP传输层之上,VDI要为不同的应用分配不同的虚通道。

图3 虚通道示意图

客户端和服务端是通过虚通道通信的,每一个通道可以分配给某种类型的数据通信。虚通道可以选择被加密以保证通信的安全性;每个通道可以分配不同的QoS优先级,使得高优先级通道的数据得优先处理,以保证用户的基础体验(比如定义键盘鼠标的虚拟通道为最高优先级)。

一般虚通道的划分有以下几类:一是主通道,用于控制;二是显示虚通道,处理图形、图像、视频流;三是音频播放虚通道,处理音频的播放和录音;四是鼠标虚通道,处理鼠标的位置、形状等。

为提升保证用户体验,可以细分不同的应用进行区分处理。如细分视频虚通道为:Flash通道、多媒体通道、4K通道、3D通道等;独立的图形显示虚通道;语音播放虚通道;录音虚通道。可根据实际的情况做进一步的细分。

三、 VDI的音频传输技术

人们使用VDI开网络会议,进行语音通话、听音乐,对音频有实时和高保真的需求。

图4 VDI中的音频处理

通常桌面协议服务器端可以在虚拟机里面实现一个音频驱动。如图4所示,在放音时,Windows音频子系统将音频数据送给音频驱动,音频数据经过一系列处理和编码压缩后传输到客户端,客户端进行解码并进行放音。在录音时,类似放音时的处理,只是客户端和服务器端所做的处理流程是放音时的反过程。

参考主观语音质量评价标准PESQ(Perceptual evaluation of speech quality),对于正规的主观测试,得分在1.0和4.5之间。在失真情况严重时,得分可能会低于1.0。一般VDI的桌面协议的PESQ约为3.2。

图4中音频处理的每一个环节都可以优化,以得到高保真的语音。常用的音频优化技术手段有:

1. 为音频分配专用的虚拟通道,并设置该虚拟通道的优先级为最高优先级;确保音频数据可以得到优先的处理,以减少语音时延,使得用户可以得到实时的语音效果;

2. 提升语音采样率,还原真实的声音,将语音采样率提升到44.1kHz。根据Nyquist采样定理,当信号带宽不超过临界频率,即采样率的一半时,信号可通过采样值完全重建。人耳能听到最高频率约为20kHz,根据采样定理,44.1kHz(cd标准)已经能完全还原人耳能听到的声音。

3. 采用专业的高保真的压缩算法,在相同压缩率的情况下得到更好的音质。现在常用的算法有AAC、CELT等。随着技术的发展,已有更好的压缩算法出现,如: xHE-AAC、Opus等,采用更好的压缩算法将得到更高的音质。

4. 目前,语音前处理一般都还不支持。增加语音前处理,可以提升音效和用户的听觉感受,包括:

1) 自动进行回声消除,解决回声问题。由于扬声器放出来的声音经过衰减和延时后又被麦克风收录,便产生了回声。通话时的回声非常影响通话体验,自动进行回声消除,可以解决此问题。

2) 自动进行降噪处理。在嘈杂的环境中,通话可能被背景声掩盖,导致对方听不清。将属于背景噪音的部分识别出来,并从音频帧中过滤掉,使得即使在嘈杂的环境中也能通话自如。

3) 自动静音检测,没有语音输入就不产生流量,有效减少带宽。

5. 自动调整缓冲区抖动。目前一般实现缓冲区是固定不变的,缓冲区设置过大会导致时延增大,缓冲区过小可能引起语音中断。根据网络抖动的情况自动调整缓冲区的大小,当网络抖动变小时减少缓冲区,降低语音时延,得到实时连贯的语音效果。

四、 VDI的图形显示技术

VDI的显示原理:服务器端会安装虚拟显示驱动,从虚拟显示驱动中获取到图形指令数据,将图形指令数据发送给客户端,由客户端进行显示。

人们都希望用较低的带宽获得更高清的显示,如果直接将图形指令数据发送到协议客户端数据量非常大,因此在发送之前要进行优化处理,以降低带宽占用。

常用的优化的技术有:

1. 指令合并。在非常短的时间区间内,同一区域内即将被覆盖的指令就不再发送。通过合并技术可以显著降低指令数量与总体数据量。

2. 数据压缩。采用有损或无损的图像压缩算法,对图像进行压缩,降低带宽。

1) 选择更高效的图像压缩算法,可以提升图像质量,降低带宽。采用H.265比采用H.264要好。

2) 动态选择编码策略,提升视觉效果,降低带宽:区分自然图像与非自然图像。

3) 采用不同的压缩算法。人眼对文字最敏感, 自动识别整幅图像中的文字、Windows图框、线条等非自然图像。采用无损压缩(如SPICE提供的LZ、GLZ编码),或者采用AI技术对文字等非自然图像优化处理;相片、图片等自然图像采用合适的压缩率进行有损压缩(如H.264)。

3. 数据去重。重复数据不发送,只发送图像中变化的部分,不变的部分不发送。

五、 VDI的视频处理技术

在VDI中支持视频,通常有两种方式:

一种是视频在服务端进行解码播放。服务端检测桌面中的视频区域,对视频区域(通常是根据图像的刷新频率超过一定的帧率来判断是否为视频区域)重新编码,然后将重新编码后的视频数据传输到客户端,客户端解码后显示。这种方式因为需要对视频区域重新编码,增加了CPU的负担;环节较多,增加了视频传输的延迟。

另一种为视频重定向方式。即在服务端捕获播放器需要播放的视频流,直接将视频流发送到客户端进行解码播放显示。这种方式简单,减少了服务器CPU的压力,是较优的方案。但是这种方式需要播放器的支持,并非所有的播放器都能支持视频重定向。

为用户提供高清画质,提高画面流畅的视频,用较少的带宽,得到高清的用户体验,优化的技术有:

1. 视频重定向。充分利用客户端的解码能力,降低视频的传输延时。

2. 选择适合的视频压缩算法。编码时选择压缩比、压缩性能高的视频压缩算法。业界常用的压缩算法是H.264,采用H.265可达到更优的压缩比,得到更高的视频质量和视频流畅性。

3. 在媒体行业场景,对视频有专业处理要求,应当选择有GPU的VDI环境。因为GPU能提供非常好的算力,使用GPU进行压缩渲染,可以得到更好的视频效果。

为了降低带宽,在拥塞的情况下仍能得到高清体验,还可以做以下优化:

1. 支持自适应码率、自适应帧率。根据网络拥塞的情况对码率、帧率做调整,以提升视频的流畅度。

2. 自适应窗口和分辨率。根据显示器的分辨率和播放视频窗口的大小,自动调整视频数据流的码率及数据流的大小,当播放窗口最小化时不发送视频,这样可以降低CPU消耗,减少带宽占用。

六、 结束语

未来在移动和BYOD办公的趋势下,越来越多的企业将采用VDI虚拟桌面。为用户提供如同在本地操作般感受:无延时、不卡顿、不花屏、高保真、流畅、高清…… 优化VDI中的图形显示、音频、视频也变得越来越重要了。

分享到
关闭