楊 飛,朱志祥,梁小江
(1.西安郵電大學,陜西 西安 710061;2.陜西省信息化工程研究院,陜西 西安 710061)
基于SPICE協議的視頻性能優化與改進
楊 飛1,朱志祥2,梁小江2
(1.西安郵電大學,陜西 西安 710061;2.陜西省信息化工程研究院,陜西 西安 710061)
為了解決基于SPICE協議的虛擬桌面在播放視頻時出現的畫面延遲和跳幀現象,提出了一種將視頻流占用網絡帶寬的比例因子與反饋丟幀算法相結合的策略。該方案能夠根據不同的網絡帶寬比例因子選取不同的視頻反饋丟幀算法,能夠有效地減輕網絡帶寬對基于SPICE協議的虛擬桌面視頻傳輸帶來的延遲和抖動問題,同時也可以有效減少基于SPICE協議的虛擬桌面的視頻流在網絡傳輸過程中的丟幀率。通過對虛擬桌面的視頻流在網絡傳輸過程中的幀、幀數和碼率的采樣和優化,證明優化后視頻流的幀、幀數和碼率波動相對平穩,降低了視頻流跳幀的概率和畫面的延遲。因此,該方案能夠有效地解決基于SPICE協議的虛擬桌面在視頻播放中的畫面延遲和跳幀現象。
虛擬桌面;延遲;跳幀;丟幀
SPICE協議的視頻傳輸采用靜態圖像壓縮技術,對幀內進行壓縮和存儲,未考慮幀間的相關性[1],沒有進行幀間壓縮,所以基于SPICE協議的虛擬桌面在播放視頻時會出現延遲和丟幀現象[2]。
文中將視頻流占用帶寬的比例因子與視頻選擇丟幀算法相結合,根據不同的網絡帶寬來選擇更優的丟幀策略[3],有效減少了網絡帶寬對視頻傳輸帶來的延遲,同時也減少了視頻幀數在網絡傳輸過程中的丟棄率,然后對視頻流壓縮質量進行評估和優化,從而解決虛擬桌面在視頻播放過程中畫面延遲和跳幀的現象[4]。通過對視頻的幀數、幀和碼率的對比測試分析,證明該方案能夠有效降低視頻的幀數、幀、碼率的方差和標準差,提高視頻質量和流暢性[5]。
SPICE協議是專門為桌面虛擬化解決方案設計的傳輸協議,采用了獨特的三層設計架構:
(1)QXL驅動:部署在服務器端、提供虛擬桌面服務的虛擬機中,用于接收操作系統和應用程序的圖形命令,并將其轉換為KVM的QXL圖形設備命令。
(2)SPICE客戶端:部署在用戶終端上的軟件,負責顯示虛擬桌面,同時接收終端外設的輸入。
(3)QXL設備:部署在KVM服務器虛擬化的Hypervisor中,用于處理各虛擬機發來的圖形圖像操作。
傳統的遠程桌面傳輸協議工作在虛擬機Guest OS中,而SPICE協議本身運行在虛擬機服務器中,可以直接使用服務器的硬件資源。SPICE協議能夠自動判斷和調整圖像處理的位置,如果用戶終端能夠處理復雜的圖像操作,就盡可能地傳輸圖像處理命令而不是渲染后的圖像內容[6],這樣可以減少網絡上傳輸的數據量。
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.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可以得出,視頻幀數的優化前后曲線中優化后幀數的方差和標準差急劇下降,幀數的平均值幾乎不變。優化后幀的方差和標準差明顯降低,說明幀波動浮動降低。優化后碼率的平均值、方差和標準差都明顯降低,優化后碼率平穩變化。 虛擬桌面在視頻播放中出現延遲和跳幀現象,嚴重地影響了整個虛擬桌面的性能。經過大量的對比測試,證明采用文中設計方案能夠有效地提高虛擬桌面的視頻播放性能,使視頻更加流暢,能夠有效減少視頻播放時的跳幀和畫面延遲的問題。 [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.0163 測試與分析




4 結束語