基于SPICE协议的视频性能优化与改进

2016-02-23 12:12朱志祥梁小江
计算机技术与发展 2016年12期
关键词:网络带宽视频流码率

杨 飞,朱志祥,梁小江

(1.西安邮电大学,陕西 西安 710061;2.陕西省信息化工程研究院,陕西 西安 710061)

基于SPICE协议的视频性能优化与改进

杨 飞1,朱志祥2,梁小江2

(1.西安邮电大学,陕西 西安 710061;2.陕西省信息化工程研究院,陕西 西安 710061)

为了解决基于SPICE协议的虚拟桌面在播放视频时出现的画面延迟和跳帧现象,提出了一种将视频流占用网络带宽的比例因子与反馈丢帧算法相结合的策略。该方案能够根据不同的网络带宽比例因子选取不同的视频反馈丢帧算法,能够有效地减轻网络带宽对基于SPICE协议的虚拟桌面视频传输带来的延迟和抖动问题,同时也可以有效减少基于SPICE协议的虚拟桌面的视频流在网络传输过程中的丢帧率。通过对虚拟桌面的视频流在网络传输过程中的帧、帧数和码率的采样和优化,证明优化后视频流的帧、帧数和码率波动相对平稳,降低了视频流跳帧的概率和画面的延迟。因此,该方案能够有效地解决基于SPICE协议的虚拟桌面在视频播放中的画面延迟和跳帧现象。

虚拟桌面;延迟;跳帧;丢帧

0 引 言

SPICE协议的视频传输采用静态图像压缩技术,对帧内进行压缩和存储,未考虑帧间的相关性[1],没有进行帧间压缩,所以基于SPICE协议的虚拟桌面在播放视频时会出现延迟和丢帧现象[2]。

文中将视频流占用带宽的比例因子与视频选择丢帧算法相结合,根据不同的网络带宽来选择更优的丢帧策略[3],有效减少了网络带宽对视频传输带来的延迟,同时也减少了视频帧数在网络传输过程中的丢弃率,然后对视频流压缩质量进行评估和优化,从而解决虚拟桌面在视频播放过程中画面延迟和跳帧的现象[4]。通过对视频的帧数、帧和码率的对比测试分析,证明该方案能够有效降低视频的帧数、帧、码率的方差和标准差,提高视频质量和流畅性[5]。

1 SPICE协议特性

SPICE协议是专门为桌面虚拟化解决方案设计的传输协议,采用了独特的三层设计架构:

(1)QXL驱动:部署在服务器端、提供虚拟桌面服务的虚拟机中,用于接收操作系统和应用程序的图形命令,并将其转换为KVM的QXL图形设备命令。

(2)SPICE客户端:部署在用户终端上的软件,负责显示虚拟桌面,同时接收终端外设的输入。

(3)QXL设备:部署在KVM服务器虚拟化的Hypervisor中,用于处理各虚拟机发来的图形图像操作。

传统的远程桌面传输协议工作在虚拟机Guest OS中,而SPICE协议本身运行在虚拟机服务器中,可以直接使用服务器的硬件资源。SPICE协议能够自动判断和调整图像处理的位置,如果用户终端能够处理复杂的图像操作,就尽可能地传输图像处理命令而不是渲染后的图像内容[6],这样可以减少网络上传输的数据量。

2 优化与改进

2.1 视频处理框架

优化后的视频显示处理原理如图1所示。

图1 优化后视频显示处理原理图

当Guest端显示内容发生更新时,QXL驱动将系统绘图命令转换为QXL命令发送至QXL设备。QEMU端在监听到QXL设备更新时,则Red调度向RedWorker发送消息[7]。

QXL设备通过QXL Worker发送同步命令,如区域更新命令,RedWorker通过QXL Interface获取异步QXL命令,如绘图命令等[1]。

Red服务通过Red调度发送的命令,如创建和关闭显示信道、光标通道等。

RedWorker调用QXL/VDI接口读取QXL命令,QXL命令经RedWorker处理后转换为SPICE协议消息,通过对应的Channel发送到客户端,客户端调用平台相关的RedDrawable做图像渲染[1]。

在RedWorker中增加了RED_STRAM_CHANNEL_CAPACITY和反馈丢帧算法[8],RED_STRAM_CHANNEL_CAPACITY表示当前视频流占用网络带宽的比例,将它与优化后丢帧算法相结合,能够提升视频流在网络中传输的性能。

2.2 QXL图像处理

QXL设备是QEMU虚拟机仿真的一个图形处理设备,它兼容于VGA图形设备,同时可以提高远程桌面传输的性能,增强图形处理能力[9]。

当应用程序发生图形更新时,操作系统图形引擎(GDI/X engine)会调用QXL设备驱动程序,将操作系统绘图命令转换为QXL设备绘图命令,并放入QXL设备的命令环。命令环位于QXL设备的内存中,它被直接映射到物理内存区域。图2为QXL工作原理图。

图2 QXL工作原理图

SPICE程序通过QXL设备提供VDI接口,从QXL的命令环境获取图形更新命令,并将其加入到SPICE服务端构造的图形命令树中。图形命令树也被用于视频流的侦测。

SPICE服务端维护一个图形命令发送队列,向客户端发送图形更新命令。当一个图形命令被覆盖从图形树中移除时,它同时也被从发送队列中移除。被移除的图形命令将放入QXL设备的释放环中,最终由QXL驱动程序进行释放。

QXL图形命令在送往客户端时,首先被转换为SPICE协议消息。QXL图形命令是平台无关的,可以在不同的操作系统平台进行渲染显示。QXL设备需要Guest端设备驱动的支持,才能提供增强的图形性能。Guest端驱动除提供驱动外还提供一个微端口驱动,用于处理内存映射、端口操作和中断。

2.3 优化后的算法

视频流占用网络带宽比是当前正在传输的视频流占用总的网络带宽的比值,该值的变化范围为[0,1]。在SPICE视频传输协议中是一个固定值,所以不能根据网络的带宽情况进行带宽的动态分配[10]。

当正在传输的视频流没有丢帧率,增加客户端的帧数以达到更好的视频效果,同时可以适当减少该值,让其他的信息占用较多的网络带宽,有利于网络带宽的优化分布。

视频丢帧率[11]:

drop_factor=(agent->frames-agent->drops)/agent->frames

首先计算客户端帧数减去客户端丢帧数的值,然后除以客户端帧数[12]。

当客户端帧数一定的情况下,只有减少客户端的丢帧数才能减少视频的丢帧率。将视频流占用网络带宽的比例值与视频丢帧率相结合。

当视频丢帧率增加时,动态增加网络带宽比例值,将更多的网络带宽分配给当前的视频流,能有效地降低视频的丢帧率。同理,当前视频丢帧率减小到设定值,降低视频流占用网络带宽的比例值,能有效地节约网络带宽[13]。优化后的视频丢帧算法既减轻了网络带宽压力,也能降低视频丢帧率。优化后的视频丢帧算法的关键代码如下所示。

#define RED_STRAM_CHANNEL_CAPACITY 6

#define Data 1

static constint red_stream_sample[RED_STRAM_C

HANNEL_CAPACITY]={0.65,0.7,0.75,0.8,0.85,0.9};

drop_factor=((double)agent->frames-(double)agent->drops)/(double)agent->frames;

spice_debug("stream %d: #frames %u #drops %u",index,agent->frames,agent->drops);

if(drop_factor==Data){

if(agent->fps

agent->fps+=2;

spice_debug("stream %d: fps++ %u",index,agent->fps);}

}

else if(drop_factor<(Data-0.1)) {

if(agent->fps>1) {

RED_STRAM_CHANNEL_CAPACITY/=2;

agent->fps-=2;

spice_debug("stream %d: fps--%u",index,agent->fps);}}

else if(drop_factor<(Data-0.2)) {

if(agent->fps>1) {

RED_STRAM_CHANNEL_CAPACITY-=2;

agent->fps-=3;

spice_debug("stream %d: fps--%u", index, agent->fps);}}

else if(drop_factor<(Data-0.3)) {

if(agent->fps>1){

RED_STRAM_CHANNEL_CAPACITY-=1;

agent->fps-=4;

spice_debug("stream %d: fps--%u", index, agent->fps);}}

3 测试与分析

3.1 对比测试

测试视频基本信息:视频名称为wildlife,测试时间长30 s,视频分辨率大小为1 280*720,编码格式为wvc1,标准帧率29.970 Mbps。测试方法为选取六个不同的时间点,每个时间点间隔5 s,测试基于SPICE协议的虚拟桌面在播放视频时的帧数、帧、码率的参数的动态数据。表1为优化前和优化后的测试结果。

表1 优化前和优化后的测试结果

从表1的数据中可以看出,在优化前播放基于SPICE协议的虚拟桌面的视频时,视频的帧数、帧和码率的变化浮动较大,直接影响了视频的流畅度和清晰度。将优化后的测试数据与优化前的测试数据进行比较,可以清楚地看出优化后视频的帧数、帧、码率变化相对平稳且视频更加流畅,有效地减轻了视频播放过程中的视频跳帧和视频画面延迟等问题。

3.2 数据分析

根据上述的测试对比结果数据,分别画出帧数、帧和码率的动态变化图,见图3。

图3 优化前后帧数、帧、码率的对比图

图3中,由优化前后的帧数对比图可以看出优化后的帧数的波动相对平稳,而优化前的视频帧数波动浮动比较大。从码率对比指标图中得知优化后的码率几乎是稳定不变的,优化前码率在开始时较高,随着时间增长快速下降,优化前的码率变化率较大。而优化前的帧随着时间的增长不断增加,几乎是一条呈上升趋势的直线,变化幅度很大,视频播放过程中易产生视频跳帧的现象,影响视频播放性能。而优化后的帧变化较为稳定,说明优化后视频的帧比较稳定。

3.3 计算分析

通过上述测试数据准确地分析和计算出基于SPICE协议的虚拟桌面在播放视频时的帧数、帧、码率的平均值、方差、标准差,然后精确地画出优化前后的对比图,进而能直观衡量虚拟桌面在播放视频时的优化程度。表2为对比测试的分析结果。

表2 对比测试的分析结果

从上述的分析计算结果中,画出优化前后的帧数、帧、码率的指标图,如图4所示。

图4 优化前后的帧数、帧、码率的指标图

从图4可以得出,视频帧数的优化前后曲线中优化后帧数的方差和标准差急剧下降,帧数的平均值几乎不变。优化后帧的方差和标准差明显降低,说明帧波动浮动降低。优化后码率的平均值、方差和标准差都明显降低,优化后码率平稳变化。

4 结束语

虚拟桌面在视频播放中出现延迟和跳帧现象,严重地影响了整个虚拟桌面的性能。经过大量的对比测试,证明采用文中设计方案能够有效地提高虚拟桌面的视频播放性能,使视频更加流畅,能够有效减少视频播放时的跳帧和画面延迟的问题。

[1] 李 博.基于SPICE协议的桌面虚拟化客户端的设计与实现[D].广州:华南理工大学,2012.

[2] 乔 咏.SPICE协议的视频传输分析与改进[D].济南:山东大学,2013.

[3] 陈勇斌.网络视频自适应传输技术研究与应用[D].成都:西南交通大学,2011.

[4] 杨传栋,余镇危,王行刚,等.端到端的流媒体传输控制技术研究综述[J].计算机工程与应用,2005,41(8):26-30.

[5] Tao S,Apostolopoulos J,Guérin R.Real-time monitoring of video quality in IP networks[J].IEEE/ACM Transactions on Networking,2008,16(5):1052-1065.

[6] 张 增.基于Spice协议流媒体关键技术研究[D].南京:南京邮电大学,2013.

[7] Doyle M D.Method and apparatus for identifying features of multidimensional image data in hypermedia systems:US,US 6616701 B2[P].2003.

[8] Deboosere L,de Wachter J,Simoens P,et al.Thin client computing solutions in low- and high-motion scenarios[C]//International conference on networking & services.[s.l.]:IEEE Computer Society,2007:38.

[9] 赖孙荣.虚拟桌面框架Spice剖析及其客户端的设计与实现[D].广州:华南理工大学,2012.

[10] 郭 军.基于可伸缩视频编码技术的网络流媒体系统的研究[D].北京:北京邮电大学,2010.

[11] Kimmich K,Mo F,Vanderaar M,et al.Video and data network load balancing with video drop:US,US 8411571 B2[P].2013.

[12] 尹 诚,黄小仙,尹达一.千兆级视频流实时处理关键技术研究[J].科学技术与工程,2012,20(9):2053-2057.

[13] 陈丹伟,张 增.一种提高SPICE虚拟视频性能的反馈丢帧策略[J].计算机技术与发展,2014,24(1):136-139.

Optimization and Improvement of Virtual Video Performance Based on SPICE Protocol

YANG Fei1,ZHU Zhi-xiang2,LIANG Xiao-jiang2

(1.Xi’an University of Posts and Telecommunications,Xi’an 710061,China;2.Shaanxi Institute of Information Engineering Research,Xi’an 710061,China)

In order to solve the phenomena of screen delay and skip frames when playing video on virtual desktop based on SPICE protocol,a scheme is proposed which combines the scale factor of video streams taking up the network bandwidth and the dropping algorithm of video frames.It selects a different dropping strategy of video frames according to the scale factor of network bandwidth,which can effectively reduce the delay and jitter of network bandwidth for transmitting video streams based on SPICE protocol,and also the dropping rate of video frames in the network.Then,through collection and optimization of the video frame,frames and bit rate in video streams based on SPICE protocol,it is shown that the video frame,frames and bit rate are relatively stable after optimizing the video streams,reduction of probability of skip frames for video stream and delay of image.Therefore,it proves that this design can effectively solve the phenomena of screen delay and skip frames when playing vides on virtual desktop.

virtual desktop;delay;skip frame;drop frame

2015-07-17

2015-12-10

时间:2016-11-21

陕西省信息化技术研究项目(2015-002);西安邮电大学青年教师基金项目(401-1201)

杨 飞(1989-),男,硕士研究生,研究方向为计算机系统结构;朱志祥,博士,教授,研究方向为信息安全。

http://www.cnki.net/kcms/detail/61.1450.TP.20161121.1633.004.html

TP302.1

A

1673-629X(2016)12-0073-04

10.3969/j.issn.1673-629X.2016.12.016

猜你喜欢
网络带宽视频流码率
边缘实时视频流分析系统配置动态调整算法研究
一种基于HEVC 和AVC 改进的码率控制算法
基于FPGA的多码率卷积编码器设计与实现
基于视频流传输中的拥塞控制研究
基于状态机的视频码率自适应算法
如何提升高带宽用户的感知度
铁路货场智能大门集装箱全景图像采集方法研究
合理配置QoS改善校园网络环境
浅析泰州电视台超大型高清非编网建设
美国视频流市场首现饱和征兆