基于SPICE协议的视频处理改进方案
2018-04-24侯文慧
侯文慧
(四川大学计算机学院,成都 610065)
0 引言
随着计算机技术的快速发展,计算机系统和应用越来越复杂,有效地管理各种资源变得越来越困难,虚拟化技术为此提供了有效的解决方案。虚拟化技术将各种计算机资源进行抽象和转换,以更加高效的方式应用这些资源,同时脱离现有资源的架设限制,以实现资源的灵活高效的使用。其中桌面虚拟化技术是虚拟化的一项关键技术。用户可使用任何设备、在任何地点、任何时间通过云桌面协议,访问服务器端存放的完整的个人桌面环境,从而获得与操作本地操作系统类似的PC使用体验[1]。其中,云桌面协议将极大的影响虚拟桌面用户体验。
目前主流的有云桌面协议有RDP、ICA、PCoIP以及SPICE这四种。其中,RDP是有微软开发的多通道协议,支持不同类型的网络拓扑,与其兼容的客户端可在多种操作系统上运行;ICA是由Citrix自己独立研发的,致力于云计算虚拟化、虚拟桌面和远程接入技术,具有很好的稳定性;PCoIP是由VMware与Teradici共同开发,将用户的回话以图像的方式压缩传输,只传输有变化部分,保障了低带宽条件下的高效使用。SPICE是Redhat公司开发的完全开源的云桌面协议,它吸收很多传统解决方案的优点,采用多层架构方式,提供图像、视频、音频等多种的多媒体体验,在广域网和局域网内均可很好的使用,具有很大的市场潜力[2]。
1 相关工作
1.1 SPICE协议框架
独立计算环境的简单协议(Simple Protocol for In⁃dependent Computing Environment,SPICE)是由红帽公司开发的专门为桌面虚拟化解决方案而设计的远程显示传输协议。用户可不受时间、地点的限制,通过客户端来访问远程桌面系统,从而获得与本地机器交互类似的用户体验,而把一些CPU、GPU密集的工作移交给远程高性能的处理机器。SPICE主要包括三个构件,SPICE服务端、SPICE协议、SPICE客户端,除此之外,还有些相关组件,如QXL设备与驱动、Agent代理等[3]。虚拟机运行在虚拟平台QEMU-KVM上,QEMU获取虚拟机的信息,并把信息传递给SPICE服务端,服务端把信息处理后,使用SPICE协议将信息封装后传递给SPICE客户端,客户端收到信息后,发送反馈报文给SPICE服务端。SPICE基本架构如图1所示。
图1 SPICE框架结构图
1.2 SPICE 的视频处理算法
QUME获取虚拟机的显示画面后,将其中图像帧信息传递给SPICE服务端,SPICE虚拟机的图像信息构建渲染树,渲染树记录着图像帧的区域、大小、帧率等信息,同时SPICE维持着流链表记录着SPICE中的视频流信息,视频流指一个稳定的、连续的视频数据传输的流。若是图像块的帧率达到了20帧每秒,则识别该区域的为视频区域并将其加入流链表,该帧为视频帧。若帧所在的区域已经存在于流链表之中,则判断当前帧与前一帧是否小于阈值。若是,则该帧为视频帧;若否,则将所在区域从流链表中移除。若识别帧为视频帧,则使用MJPEG压缩算法压缩视频帧;否则该帧为图像帧,使用图像算法压缩图像帧,SPICE主要提供了三种图像压缩算法——Quic、LZ、GLZ(Global LZ)。SPICE协议将压缩后的帧传输到客户端,使用相应的算法对其解压,并显示到客户端屏幕上。
MJPEG(运动静止图像压缩技术)最初是为多媒体PC应用而开发的,现在被诸如数码相机、IP摄像机、网络摄像机等视频捕捉设备以及非线性视频编辑系统所使用。MJPEG将连续的视频帧序列作为一帧一帧的连续的静止图像帧来进行处理,每一帧使用JPEG压缩算法进行压缩处理。其优点在于可得到比较好的压缩质量,能够容忍视频流中快速变化的运动,对硬件要求较低,同时有广泛的客户端支持[4]。但MJPEG的缺点也很明显,它未考虑视频流中帧与帧之间的关联性,缺乏帧间预测,帧彼此独立压缩,压缩后的相邻帧之间的有大量重复的冗余信息,压缩效率非常低,极大消耗了SPICE的存储和传输资源,不大适合视频资源的网络传输。
2 改进方案
SPICE原开发团队选择MJPEG作为视频压缩算法的原因在于MJPEG比较简单,对CPU消耗少,对瘦客户端的处理能力要求较低。但由于没有帧间编码,MJPEG压缩效率十分有限,对带宽要求非常高,即使在局域网范围内,要播放高清视频也需要提供优良网络条件。于此,本文使用MPEG4视频压缩算法替换原有的MJPEG算法压缩视频帧,SPICE协议将压缩后的视频帧信息传递到客户端,并在客户端使用MPEG4解压算法解压视频帧。
2.1 MPEG4视频压缩算法
MPEG4是一种定义音频和视频数字数据压缩方法,是国际标准化组织(ISO)成立的专责制定有关运动图像压缩编码标准的工作组所制定的国际通用标准。MPEG-4仍然是一个不断发展的标准,分为若干部分,主要包括:系统层、视频、音频、DMIF、一致性测试和参考软件等。MPEG-4主要针对低比特率的视频通信,能够编码混合媒体数据(视频、音频、语音),支持健壮传输的错误恢复,可利用很窄的带宽获得优质的画面质量[5]。
MPEG4视频压缩算法的主要特征是提供基于内容的编码,实现高效的压缩。以前的压缩算法只是去掉帧内和帧间的冗余,MPEG-4则要求对图像和视频作更多的分析。MPEG4视频压缩算法不再将视频数据只是单纯地看出一帧帧的图像,基于像素进行编码,而是将一幅景物分成若干在时间和空间上相互联系的视频音频对象,例如一帧图像中的一个人、一个物体或是背景、音乐等看成一个对象,对每个对象灵活分配码率,并为每个对象的编码形成一个对象码流层,包含对象的形状、位置、纹理等属性[6]。
MPEG4的主要步骤为:(1)在视频对象进行分割,从原始视频流中,采用全自动、半自动等方式分割得到视频对象;(2)对不同的视频对象进行独立编码,对于各个对象的运动、形状和纹理进行编码,分配不同的码字;(3)复合各个对象的码流为MPEG4位流。
2.2 MPEG4相比与MJPEG优势
(1)MPEG4提供帧内和帧间压缩,去除了帧间冗余,具有更高的压缩效率;
(2)MPEG4采用基于内容的编码,从纹理和轮廓出发,大大增加了交互性;
(3)MJPEG压缩比为20:1-50:1,MPEG-4最高达200:1,比MJPEG算法提供更好压缩比;
(4)MPEG4在提供高压缩比的同时保证较小的数据损失;
(5)具有很好的兼容性,提供了易出错环境的鲁棒性。
2.3 MPEG4视频压缩算法替换MJPEG算法
SPICE通过帧率判定为图像块为视频帧后,需在发送给客户端前需进行压缩以减小传输量,本文使用MPEG4压缩视频帧。MPEG4编码主要通过调用XviD的库函数实现。XviD是一个开放源代码的MPEG-4视频编解码器,它是基于OpenDivX而编写的。XviD视频编解码器作为第二代MPEG4编码具有多方面的优点:(1)支持多种编码模式;(2)除了提供了标准MPEG量化方式,提供了更适合低码流压缩的h。263量化方式;(3)提供了多极运动侦测精度;(4)提供如心理视觉亮度修正等不少附加功能;(5)画面优化译码。鉴于XviD以上种种优点,我们采用XVID实现视频的编解码。其中在SPICE服务端、协议、客户端的编解码视频帧步骤为:
SPICE服务端:(1)若图像块区域被识别为新的视频区域加入了流链表,则为该流初始化一个XviD编码器。编码器获取视频帧的高宽以设定编码器大小,以及当前网络状况以设定初始码率,同时设定其他参数;(2)对于编码器第一帧,直接使用当前编码器对帧进行压缩。其后到达的帧若与当前编码器的高宽,则使用当前编码器进行编码。若否,则销毁当前编码器并为创建一个新的编码器,再进行编码压缩。
SPICE协议:SPICE协议将压缩后的视频信息发送至SPICE客户端。
SPICE客户端:(1)SPICE客户端接收到流的第一帧信息后,为流初始化XviD解码器,并设定编码器大小;(2)对于解码器的第一帧使用当前解码器,对于对帧进行解压。其后到达的帧若与当前解码器的高宽,则使用当前解码器进行解压。若否,则销毁当前解码器并为创建一个新的解码器,再进行视频帧解压;(3)将视频帧显示到屏幕。
3 实验评估
实验环境为:SPICE服务端配置:Intel Pentium Du⁃al-Core CPU E6700@3.20GHz;内存 6G;操作系统Centos 7;SPICE客户端配置:Intel(R)Pentium(R)CPU B950@2.10GHz;内存 6G;操作系统:Ubuntu-4.4.0。本文实验在服务器端和客户端电脑上之间组建独立的局域网,并使用流量控制工具tc调节局域网带宽。
实验目的:对比改进后的协议和未改进的协议在不同带宽条件下的流量,以验证改进后协议的网络带宽占用方面的优良性能。
图 2 是在 50ms时延、10-6丢包率和 2Mb/s、5Mb/s、10Mb/s、20Mb/s、50Mb/s及无带宽限制条件下的带宽占用的测试结果。从图2中可以看出,在各个带宽条件下,改进后的SPICE比改进前协议的性能有着明显的提升。在低带宽条件下,改进后的SPICE占用带宽与原SPICE相比减小30-40%,其带宽变化更稳定。随着可用带宽的不断增加,改进后的协议比原SPICE的带宽占用差距愈加增大,在不限带宽的网络条件下,改进后协议的带宽占用比改进前协议减少了50%以上。
4 结语
本文针对云桌面协议SPICE存在的问题——视频播放时带宽占用率高,提出了使用MPEG4视频压缩算法替换SPICE原有的压缩效率不高的MJPEG算法的改进方案,并在不同带宽条件下对改进后的算法的性能进行了测试,实验表明改进后的SPICE协议在进行视频传输极大降低了传输带宽,从而提高了SPICE的性能。
图2 改进前与改进后协议在不同带宽下流量结果对比
参考文献:
[1]张建勋,古志民,郑超.云计算研究进展综述[J].
[2]徐浩,兰雨晴.基于SPICE协议的桌面虚拟化技术研究与改进方案[J].计算机工程与科学,2013,35(12):20-25.
[3]Red Hat,Inc.(2009).Spice for Newbies.[Accessed 2017-06-21].Available from http://spice-space.org/docs/spice_for_newbies.pdf.
[4]李鹏.MJPEG视频编解码的SOC设计[D].山东大学,2007.LI P.SOC Design of MJPEG Video Codec[D].Shandong University,2007.
[5]T SIKORA,L CHIARIGLIONE.L.MPEG-4 video and Its Potential for Future Multimedia Services[D].IEEE International Symposium on Circuits&Systems,1997,2:1468-1471.
[6]郑晓燕,董猛,郭健.MPEG-4视频编码及其关键算法[EB/OL].中国科技论文在线,[2006-06-06].