楊 飛,朱志祥,梁小江
(1.西安郵電大學(xué),陜西 西安 710061;2.陜西省信息化工程研究院,陜西 西安 710061)
基于SPICE協(xié)議的視頻性能優(yōu)化與改進(jìn)
楊 飛1,朱志祥2,梁小江2
(1.西安郵電大學(xué),陜西 西安 710061;2.陜西省信息化工程研究院,陜西 西安 710061)
為了解決基于SPICE協(xié)議的虛擬桌面在播放視頻時出現(xiàn)的畫面延遲和跳幀現(xiàn)象,提出了一種將視頻流占用網(wǎng)絡(luò)帶寬的比例因子與反饋丟幀算法相結(jié)合的策略。該方案能夠根據(jù)不同的網(wǎng)絡(luò)帶寬比例因子選取不同的視頻反饋丟幀算法,能夠有效地減輕網(wǎng)絡(luò)帶寬對基于SPICE協(xié)議的虛擬桌面視頻傳輸帶來的延遲和抖動問題,同時也可以有效減少基于SPICE協(xié)議的虛擬桌面的視頻流在網(wǎng)絡(luò)傳輸過程中的丟幀率。通過對虛擬桌面的視頻流在網(wǎng)絡(luò)傳輸過程中的幀、幀數(shù)和碼率的采樣和優(yōu)化,證明優(yōu)化后視頻流的幀、幀數(shù)和碼率波動相對平穩(wěn),降低了視頻流跳幀的概率和畫面的延遲。因此,該方案能夠有效地解決基于SPICE協(xié)議的虛擬桌面在視頻播放中的畫面延遲和跳幀現(xiàn)象。
虛擬桌面;延遲;跳幀;丟幀
SPICE協(xié)議的視頻傳輸采用靜態(tài)圖像壓縮技術(shù),對幀內(nèi)進(jìn)行壓縮和存儲,未考慮幀間的相關(guān)性[1],沒有進(jìn)行幀間壓縮,所以基于SPICE協(xié)議的虛擬桌面在播放視頻時會出現(xiàn)延遲和丟幀現(xiàn)象[2]。
文中將視頻流占用帶寬的比例因子與視頻選擇丟幀算法相結(jié)合,根據(jù)不同的網(wǎng)絡(luò)帶寬來選擇更優(yōu)的丟幀策略[3],有效減少了網(wǎng)絡(luò)帶寬對視頻傳輸帶來的延遲,同時也減少了視頻幀數(shù)在網(wǎng)絡(luò)傳輸過程中的丟棄率,然后對視頻流壓縮質(zhì)量進(jìn)行評估和優(yōu)化,從而解決虛擬桌面在視頻播放過程中畫面延遲和跳幀的現(xiàn)象[4]。通過對視頻的幀數(shù)、幀和碼率的對比測試分析,證明該方案能夠有效降低視頻的幀數(shù)、幀、碼率的方差和標(biāo)準(zhǔn)差,提高視頻質(zhì)量和流暢性[5]。
SPICE協(xié)議是專門為桌面虛擬化解決方案設(shè)計的傳輸協(xié)議,采用了獨特的三層設(shè)計架構(gòu):
(1)QXL驅(qū)動:部署在服務(wù)器端、提供虛擬桌面服務(wù)的虛擬機(jī)中,用于接收操作系統(tǒng)和應(yīng)用程序的圖形命令,并將其轉(zhuǎn)換為KVM的QXL圖形設(shè)備命令。
(2)SPICE客戶端:部署在用戶終端上的軟件,負(fù)責(zé)顯示虛擬桌面,同時接收終端外設(shè)的輸入。
(3)QXL設(shè)備:部署在KVM服務(wù)器虛擬化的Hypervisor中,用于處理各虛擬機(jī)發(fā)來的圖形圖像操作。
傳統(tǒng)的遠(yuǎn)程桌面?zhèn)鬏攨f(xié)議工作在虛擬機(jī)Guest OS中,而SPICE協(xié)議本身運行在虛擬機(jī)服務(wù)器中,可以直接使用服務(wù)器的硬件資源。SPICE協(xié)議能夠自動判斷和調(diào)整圖像處理的位置,如果用戶終端能夠處理復(fù)雜的圖像操作,就盡可能地傳輸圖像處理命令而不是渲染后的圖像內(nèi)容[6],這樣可以減少網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量。
2.1 視頻處理框架
優(yōu)化后的視頻顯示處理原理如圖1所示。
圖1 優(yōu)化后視頻顯示處理原理圖
當(dāng)Guest端顯示內(nèi)容發(fā)生更新時,QXL驅(qū)動將系統(tǒng)繪圖命令轉(zhuǎn)換為QXL命令發(fā)送至QXL設(shè)備。QEMU端在監(jiān)聽到QXL設(shè)備更新時,則Red調(diào)度向RedWorker發(fā)送消息[7]。
QXL設(shè)備通過QXL Worker發(fā)送同步命令,如區(qū)域更新命令,RedWorker通過QXL Interface獲取異步QXL命令,如繪圖命令等[1]。
Red服務(wù)通過Red調(diào)度發(fā)送的命令,如創(chuàng)建和關(guān)閉顯示信道、光標(biāo)通道等。
RedWorker調(diào)用QXL/VDI接口讀取QXL命令,QXL命令經(jīng)RedWorker處理后轉(zhuǎn)換為SPICE協(xié)議消息,通過對應(yīng)的Channel發(fā)送到客戶端,客戶端調(diào)用平臺相關(guān)的RedDrawable做圖像渲染[1]。
在RedWorker中增加了RED_STRAM_CHANNEL_CAPACITY和反饋丟幀算法[8],RED_STRAM_CHANNEL_CAPACITY表示當(dāng)前視頻流占用網(wǎng)絡(luò)帶寬的比例,將它與優(yōu)化后丟幀算法相結(jié)合,能夠提升視頻流在網(wǎng)絡(luò)中傳輸?shù)男阅堋?/p>
2.2 QXL圖像處理
QXL設(shè)備是QEMU虛擬機(jī)仿真的一個圖形處理設(shè)備,它兼容于VGA圖形設(shè)備,同時可以提高遠(yuǎn)程桌面?zhèn)鬏數(shù)男阅?,增?qiáng)圖形處理能力[9]。
當(dāng)應(yīng)用程序發(fā)生圖形更新時,操作系統(tǒng)圖形引擎(GDI/X engine)會調(diào)用QXL設(shè)備驅(qū)動程序,將操作系統(tǒng)繪圖命令轉(zhuǎn)換為QXL設(shè)備繪圖命令,并放入QXL設(shè)備的命令環(huán)。命令環(huán)位于QXL設(shè)備的內(nèi)存中,它被直接映射到物理內(nèi)存區(qū)域。圖2為QXL工作原理圖。
圖2 QXL工作原理圖
SPICE程序通過QXL設(shè)備提供VDI接口,從QXL的命令環(huán)境獲取圖形更新命令,并將其加入到SPICE服務(wù)端構(gòu)造的圖形命令樹中。圖形命令樹也被用于視頻流的偵測。
SPICE服務(wù)端維護(hù)一個圖形命令發(fā)送隊列,向客戶端發(fā)送圖形更新命令。當(dāng)一個圖形命令被覆蓋從圖形樹中移除時,它同時也被從發(fā)送隊列中移除。被移除的圖形命令將放入QXL設(shè)備的釋放環(huán)中,最終由QXL驅(qū)動程序進(jìn)行釋放。
QXL圖形命令在送往客戶端時,首先被轉(zhuǎn)換為SPICE協(xié)議消息。QXL圖形命令是平臺無關(guān)的,可以在不同的操作系統(tǒng)平臺進(jìn)行渲染顯示。QXL設(shè)備需要Guest端設(shè)備驅(qū)動的支持,才能提供增強(qiáng)的圖形性能。Guest端驅(qū)動除提供驅(qū)動外還提供一個微端口驅(qū)動,用于處理內(nèi)存映射、端口操作和中斷。
2.3 優(yōu)化后的算法
視頻流占用網(wǎng)絡(luò)帶寬比是當(dāng)前正在傳輸?shù)囊曨l流占用總的網(wǎng)絡(luò)帶寬的比值,該值的變化范圍為[0,1]。在SPICE視頻傳輸協(xié)議中是一個固定值,所以不能根據(jù)網(wǎng)絡(luò)的帶寬情況進(jìn)行帶寬的動態(tài)分配[10]。
當(dāng)正在傳輸?shù)囊曨l流沒有丟幀率,增加客戶端的幀數(shù)以達(dá)到更好的視頻效果,同時可以適當(dāng)減少該值,讓其他的信息占用較多的網(wǎng)絡(luò)帶寬,有利于網(wǎng)絡(luò)帶寬的優(yōu)化分布。
視頻丟幀率[11]:
drop_factor=(agent->frames-agent->drops)/agent->frames
首先計算客戶端幀數(shù)減去客戶端丟幀數(shù)的值,然后除以客戶端幀數(shù)[12]。
當(dāng)客戶端幀數(shù)一定的情況下,只有減少客戶端的丟幀數(shù)才能減少視頻的丟幀率。將視頻流占用網(wǎng)絡(luò)帶寬的比例值與視頻丟幀率相結(jié)合。
當(dāng)視頻丟幀率增加時,動態(tài)增加網(wǎng)絡(luò)帶寬比例值,將更多的網(wǎng)絡(luò)帶寬分配給當(dāng)前的視頻流,能有效地降低視頻的丟幀率。同理,當(dāng)前視頻丟幀率減小到設(shè)定值,降低視頻流占用網(wǎng)絡(luò)帶寬的比例值,能有效地節(jié)約網(wǎng)絡(luò)帶寬[13]。優(yōu)化后的視頻丟幀算法既減輕了網(wǎng)絡(luò)帶寬壓力,也能降低視頻丟幀率。優(yōu)化后的視頻丟幀算法的關(guān)鍵代碼如下所示。
#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.1 對比測試 測試視頻基本信息:視頻名稱為wildlife,測試時間長30 s,視頻分辨率大小為1 280*720,編碼格式為wvc1,標(biāo)準(zhǔn)幀率29.970 Mbps。測試方法為選取六個不同的時間點,每個時間點間隔5 s,測試基于SPICE協(xié)議的虛擬桌面在播放視頻時的幀數(shù)、幀、碼率的參數(shù)的動態(tài)數(shù)據(jù)。表1為優(yōu)化前和優(yōu)化后的測試結(jié)果。 表1 優(yōu)化前和優(yōu)化后的測試結(jié)果 從表1的數(shù)據(jù)中可以看出,在優(yōu)化前播放基于SPICE協(xié)議的虛擬桌面的視頻時,視頻的幀數(shù)、幀和碼率的變化浮動較大,直接影響了視頻的流暢度和清晰度。將優(yōu)化后的測試數(shù)據(jù)與優(yōu)化前的測試數(shù)據(jù)進(jìn)行比較,可以清楚地看出優(yōu)化后視頻的幀數(shù)、幀、碼率變化相對平穩(wěn)且視頻更加流暢,有效地減輕了視頻播放過程中的視頻跳幀和視頻畫面延遲等問題。 3.2 數(shù)據(jù)分析 根據(jù)上述的測試對比結(jié)果數(shù)據(jù),分別畫出幀數(shù)、幀和碼率的動態(tài)變化圖,見圖3。 圖3 優(yōu)化前后幀數(shù)、幀、碼率的對比圖 圖3中,由優(yōu)化前后的幀數(shù)對比圖可以看出優(yōu)化后的幀數(shù)的波動相對平穩(wěn),而優(yōu)化前的視頻幀數(shù)波動浮動比較大。從碼率對比指標(biāo)圖中得知優(yōu)化后的碼率幾乎是穩(wěn)定不變的,優(yōu)化前碼率在開始時較高,隨著時間增長快速下降,優(yōu)化前的碼率變化率較大。而優(yōu)化前的幀隨著時間的增長不斷增加,幾乎是一條呈上升趨勢的直線,變化幅度很大,視頻播放過程中易產(chǎn)生視頻跳幀的現(xiàn)象,影響視頻播放性能。而優(yōu)化后的幀變化較為穩(wěn)定,說明優(yōu)化后視頻的幀比較穩(wěn)定。 3.3 計算分析 通過上述測試數(shù)據(jù)準(zhǔn)確地分析和計算出基于SPICE協(xié)議的虛擬桌面在播放視頻時的幀數(shù)、幀、碼率的平均值、方差、標(biāo)準(zhǔn)差,然后精確地畫出優(yōu)化前后的對比圖,進(jìn)而能直觀衡量虛擬桌面在播放視頻時的優(yōu)化程度。表2為對比測試的分析結(jié)果。 表2 對比測試的分析結(jié)果 從上述的分析計算結(jié)果中,畫出優(yōu)化前后的幀數(shù)、幀、碼率的指標(biāo)圖,如圖4所示。 圖4 優(yōu)化前后的幀數(shù)、幀、碼率的指標(biāo)圖 從圖4可以得出,視頻幀數(shù)的優(yōu)化前后曲線中優(yōu)化后幀數(shù)的方差和標(biāo)準(zhǔn)差急劇下降,幀數(shù)的平均值幾乎不變。優(yōu)化后幀的方差和標(biāo)準(zhǔn)差明顯降低,說明幀波動浮動降低。優(yōu)化后碼率的平均值、方差和標(biāo)準(zhǔn)差都明顯降低,優(yōu)化后碼率平穩(wěn)變化。 虛擬桌面在視頻播放中出現(xiàn)延遲和跳幀現(xiàn)象,嚴(yán)重地影響了整個虛擬桌面的性能。經(jīng)過大量的對比測試,證明采用文中設(shè)計方案能夠有效地提高虛擬桌面的視頻播放性能,使視頻更加流暢,能夠有效減少視頻播放時的跳幀和畫面延遲的問題。 [1] 李 博.基于SPICE協(xié)議的桌面虛擬化客戶端的設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2012. [2] 喬 詠.SPICE協(xié)議的視頻傳輸分析與改進(jìn)[D].濟(jì)南:山東大學(xué),2013. [3] 陳勇斌.網(wǎng)絡(luò)視頻自適應(yīng)傳輸技術(shù)研究與應(yīng)用[D].成都:西南交通大學(xué),2011. [4] 楊傳棟,余鎮(zhèn)危,王行剛,等.端到端的流媒體傳輸控制技術(shù)研究綜述[J].計算機(jī)工程與應(yīng)用,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協(xié)議流媒體關(guān)鍵技術(shù)研究[D].南京:南京郵電大學(xué),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剖析及其客戶端的設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2012. [10] 郭 軍.基于可伸縮視頻編碼技術(shù)的網(wǎng)絡(luò)流媒體系統(tǒng)的研究[D].北京:北京郵電大學(xué),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] 尹 誠,黃小仙,尹達(dá)一.千兆級視頻流實時處理關(guān)鍵技術(shù)研究[J].科學(xué)技術(shù)與工程,2012,20(9):2053-2057. [13] 陳丹偉,張 增.一種提高SPICE虛擬視頻性能的反饋丟幀策略[J].計算機(jī)技術(shù)與發(fā)展,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 陜西省信息化技術(shù)研究項目(2015-002);西安郵電大學(xué)青年教師基金項目(401-1201) 楊 飛(1989-),男,碩士研究生,研究方向為計算機(jī)系統(tǒng)結(jié)構(gòu);朱志祥,博士,教授,研究方向為信息安全。 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.0163 測試與分析
4 結(jié)束語