摘 要:屏幕共享是視頻會議、遠程教學和遠程監控等多媒體應用中的一項關鍵技術。介紹了幾種常用的屏幕共享技術之后,分析了屏幕圖像的特點,從而設計出一種高效的壓縮算法,并提出TCP/IP網絡環境下相應的屏幕共享解決方案,給出了具體的實現方法。與同類產品的對比測試結果表明,該解決方案在提供高保真圖像質量的前提下具有更高的效率,在多媒體系統中有著廣泛的應用前景。
關鍵詞:屏幕共享;屏幕拷貝;圖像編碼;組播
中圖分類號:TN919.8文獻標志碼:A
文章編號:1001-3695(2007)06-0299-03
屏幕共享是指遠程客戶端在可以容忍的時間延遲內重現主機屏幕的界面顯示內容,提供給遠程用戶一種如坐在主機旁一樣的虛擬界面環境。目前在視頻會議(多媒體會商)、遠程教學、遠程監控和股票分析系統中都存在這樣的應用需求。在這些系統中,客戶需要在一定視覺滿意度(高保真)的條件下,共享主機屏幕的軟件操作界面、PowerPoint講稿、監視圖片等[1]。
最早由蘋果公司提出的圖形用戶界面GUI(Graphic User Interface)為屏幕共享技術的產生和發展奠定了基礎。隨著網絡技術和多媒體技術的發展,屏幕共享逐步成為網絡通信的重要應用之一。目前這一類的產品主要有X Window、Windows 2000的遠程終端服務、NetMeeting、PCAnywhere、VNC等。這些產品所采用的屏幕共享技術大致可以分為下面兩類:
(1)利用操作系統底層的GUI指令。X Window和Windows 2000提供的遠程終端服務都是采用這種原理。在這兩種應用中,用戶通過使用客戶端軟件登錄到服務器;然后服務器會給每個客戶端開辟一個虛擬屏幕(Desktop),并將該用戶的操作結果顯示重定向到他所在的屏幕。所有的這些操作被分解為若干個GDI指令,客戶端通過這些指令進行解碼顯示。
(2)利用屏幕拷貝和圖像壓縮的方法。這種方法不涉及操作系統底層GUI指令,對于很多高層的應用較為簡單和方便。在服務器通過操作系統(如Windows)提供的接口函數獲取屏幕圖像的原始信息后,使用快速高效的壓縮算法進行圖像編碼,然后通過網絡傳輸發送給客戶端;客戶端進行解碼以獲得服務器的屏幕圖像。NetMeeting、PCAnywhere、VNC等都屬于這類系統。
1 屏幕圖像特點及壓縮算法設計
本文所提出的屏幕共享技術是相對獨立的軟件模塊,能夠應用于視頻會議和遠程教育等多種場合,因此采用基于屏幕拷貝和圖像壓縮的方法。這種方法將屏幕圖像作為信息源,對其進行壓縮和傳輸,然后在客戶端解碼重現。為設計出快速高效的圖像壓縮算法,首先對屏幕圖像的特點作如下分析[2]:
(1)屏幕圖像具有序列性。與H.323系統中的全運動的傳統視頻相比,屏幕圖像是一種刷新速度較慢的半運動圖像,但仍然具有序列性,即具有連續運動變化的特點,且幀和幀之間前后相接,具有一定的相關性。
(2)屏幕圖像的色彩分布主要集中在少數幾種顏色上,是一種非連續色調的圖像。該特點決定了此類圖像不適合采用JPEG標準進行壓縮,因為JPEG標準較為適合處理連續色調的靜態圖像,對非連續色調的序列圖像卻不能發揮其優越性。
(3)相同顏色值的像素在空間域上的分布比較集中,且靜態背景信息比較多,因而有利于進行幀間預測差分脈沖編碼(DPCM)。
(4)屏幕拷貝圖像的屬性與顯示器的設置有關。因為顯示器分辯率的大小決定了單幀圖片的大小,而顏色的設置決定了圖片的色彩屬性。
(5)圖像要求有較高的壓縮比和較小的編解碼延時,否則無法滿足實時性和網絡傳輸的要求。
考慮到屏幕圖像的序列性、顏色較為單一和像素顯示分塊的特點,對于屏幕圖像的壓縮編碼采用了一階差分預測編碼,即每次編碼的部分僅僅是針對該幀圖像與上一幀圖像的差分部分。實際上,由于屏幕圖像刷新慢,而且幀與幀之間的相關性較大,采用一階差分預測編碼具有速度快和壓縮比率高的優勢。根據屏幕圖像色彩分布比較集中的特點,在壓縮編碼中添加了游程編碼,這使得大多數屏幕圖像的色彩集中部分都得到了極大的壓縮比。另外,由于人眼對于亮度信號的敏感度大于色差信號,壓縮編碼是在YUV空間進行的,同時對U、V分量進行子采樣,實際編碼的YUV比例為4∶1∶1。子采樣一方面降低了屏幕圖像的數據量,另一方面也使得屏幕圖像的色彩分布更為集中。壓縮算法引入了I/P幀模式,定時發送I幀以保證接收方能夠獲得完整的屏幕圖像信息,這樣即使傳送幀出現錯誤,接收方也能在短時間內重新獲取原圖像。在全屏幕圖像壓縮的情況下,該壓縮算法的壓縮比高于傳統的JPEG算法,同時具有較低的運算復雜度。在大多數的實際情況下,因為屏幕圖像變化前后具有較強的相關性,所傳輸屏幕圖像的編碼數據量更小。
根據屏幕圖像的特點及對應編碼策略的分析,在實驗對比的基礎上給出了下面的快速高效算法,該算法能方便地適應不同的屏幕圖像屬性。整個編解碼的流程如圖1所示。
圖1 屏幕圖像的編解碼流程
總的說來,該屏幕圖像的壓縮算法具有下面幾個主要特點:①采用了YUV空間進行編碼壓縮,YUV比例為4∶1∶1。②采用了一階預測編碼的概念。③采用的基本宏塊進行編碼變換和處理。④綜合應用了DCT變換和游程編碼等技術。
上述壓縮算法對于2 359 296 Bytes大小的真彩圖像(1 024×768×24bit桌面)進行壓縮測試,壓縮結果是106 331 Bytes,壓縮比達到22.2。值得說明的是,在原始圖像沒有變化時(通常計算機屏幕內容變化很慢),后續壓縮結果僅僅是6 Bytes的信息位。
對于不同類型的源圖像壓縮算法的性能也有一定差距。對于顏色變化較多的屏幕圖像,該壓縮算法的性能與JPEG算法相當;對于色彩分布較集中或色彩均一的屏幕圖像,壓縮比很高。但值得注意的是,對于不同類型的屏幕圖像,壓縮算法耗時相差并不多,即算法運算量是基本相同的。在視頻會議和遠程教育的應用背景下,由于屏幕圖像具有色彩較單一、分布較集中、相關性較大的特點,采用屏幕拷貝和該壓縮算法屏幕共享方案將具有較大的優勢。
下面給出該編碼算法在屏幕圖像動態更新情況下的特性。服務器選擇了PowerPoint文檔播放的標準業務作為其測試環境(一個67幀的PPT文檔,播放時間間隔5 s),每次屏幕圖像拷貝和壓縮后的字節數目的變化特性如圖2所示。
圖2 屏幕圖像編碼結果的動態變化結果
從圖2可以看到,大部分時間里屏幕無變化,編碼壓縮的結果為6 Bytes。而在屏幕發生部分變化時,編碼也僅僅是對差分部分進行編碼,所以編碼結果通常較小,這在大多數屏幕共享業務的應用中是相當令人滿意的。
2 屏幕共享系統設計與實現
2.1 系統說明
一般來講,在實際應用中屏幕共享業務的實現方式分為業務發起端、服務器端和業務接收端三個部分。具體過程如下:某一終端發起屏幕共享業務,獲取自身的屏幕和光標信息,采用網絡數據包的形式發送到服務器;服務器轉發接收數據,變成下行傳輸(一般采用組播或廣播方式),接收端為系統的其他終端[3]。由于目前大多數實際系統應用都能直接支持TCP/IP協議族的多播(Multicast),為了節省帶寬,本文所設計的屏幕共享系統直接由業務發起端(下文簡稱“服務器”)將屏幕數據以多播的方式進行下行傳輸,業務接收端(以下簡稱“客戶端”)從對應多播地址接收屏幕數據,即整個系統簡化為具有業務發起端和業務接收端的兩方通信系統[4,5]。
2.2 服務器設計實現
在成功發起屏幕共享業務之后,服務器便開始播發該屏幕圖像的編碼數據信息。綜合考慮屏幕圖像的特點、網絡帶寬資源、本地終端資源方面的限制,在設計過程中進行了如下的幾方面優化:
(1)采用異步的屏幕拷貝模式。屏幕拷貝的一般設計思路是定時抓取當前屏幕的內容并發送。為了不至于丟失屏幕上的更新和變化信息,定時間隔不能太低。而在一些應用場合中(如播放PPT),屏幕圖像可能在相當一段時間內沒有更新,采用上述“同步”的屏幕拷貝機制將對本地資源及網絡帶寬造成浪費。為此在本文描述的系統中采用了異步的工作模式,即僅僅在屏幕圖像有更新時才進行屏幕拷貝并發送相應編碼數據。同時,如果在給定長時間范圍內沒有屏幕更新,則服務器也將發送屏幕圖像的I幀數據,以防止客戶端未能與服務器屏幕數據失步。為了實現這一功能,程序在底層截獲Windows系統的所有消息,通過可能引起屏幕更新的消息來判斷是否更新。光標更新的處理也采用同樣的思路。
(2)采用高效的圖像壓縮算法。需要指出的是,由于采用了I/P幀的預測編碼形式,實際上每次傳輸的編碼圖像信息僅僅是屏幕圖像的更新部分。因此,在數據幀中包含了指示更新區域的具體位置信息。
(3)光標更新單獨處理。由于單個光標數據量比屏幕數據量要小得多,且更新頻率快,該系統沒有將光標信息附加在屏幕圖像信息的數據中,而是以單獨短包的形式進行傳輸。這一方面提高了靈活性,另一方面也提高了傳輸效率。
服務器的具體設計采用了多線程技術。工作進程由五個線程組成,其組織流程如圖3所示。其中主要線程描述如下:①主線程負責界面線程和子線程的交互和調度。②屏幕數據抓取線程。在檢測到屏幕更新消息時進行屏幕拷貝,對圖像更新區域進行壓縮,并將壓縮結果切分成數據幀的格式放入屏幕數據緩沖區(鏈表隊列)中。③屏幕數據發送線程。當屏幕數據緩沖隊列不空時發送緩沖區中的數據包,釋放緩沖區。④鼠標數據獲取線程。當檢測到鼠標更新消息時獲得當前鼠標位置,填入包頭將該數據包放入鼠標數據緩沖區(鏈表隊列)中。⑤鼠標數據發送線程。當鼠標數據緩沖隊列不空時發送緩沖區中的數據包,并釋放緩沖區。
圖3 服務器運行流程圖
2.3 客戶端設計實現
客戶端完成的是從給定多播地址接收服務器發送數據包并進行本地緩存,同時按照幀序號組合成完整的壓縮編碼數據,進而恢復出源圖像。對于接收到的鼠標信息數據包則更新當前的光標位置。
客戶端工作進程由三個線程組成,其組織流程如圖4所示。
其中主要線程描述如下:①主線程負責用戶界面交互(初始化、顯示更新、全屏模式切換)以及子線程的調度。②數據接收緩存線程。為了盡可能減小由于發送方發送速率過快以至漏掉數據包的可能性,緩沖進程將從網絡接口接收來的數據包依次放入接收緩沖區(鏈表隊列)中,不做任何校驗判斷,而把判斷的任務交給上層進程。③幀生成進程。從緩沖隊列中獲得數據包,釋放緩沖區,檢查校驗字。對屏幕數據包按照序列號依次填入幀緩沖區中。當這一幀的所有數據全部收到,進行解壓縮運算,將結果放入圖像緩沖區中,產生屏幕更新消息,并通知主進程更新畫面;對鼠標數據包產生光標更新消息,通知主進程更新光標位置,重繪光標。
圖4 客戶端運行流程圖
3 網絡流量對比測試
將本文所設計的系統與幾種采用屏幕拷貝機制的著名屏幕共享軟件(VNC、PC Anywhere和NetMeeting)進行對比測試。具體的測試環境如下:采用服務器/客戶端雙機局域網通信的模式;服務器和客戶端的操作系統為Windows 2000;為比較重業務負荷下的性能,采用1 024×768的屏幕分辨率,服務器通過按照2 s/Page的高切換速率進行PowerPoint文檔測試。文檔主要由圖片較多的頁面組成;每一種軟件的測試都是在相同的屏幕狀況下進行的,保證了測試結果的可比性。幾種屏幕共享系統的網絡流量速率統計測試結果如圖5所示。
圖5 不同屏幕共享系統網絡流量性能比較
在20 s、40 s、60 s、80 s、100 s幾個時間點對應的速率如表1所示。
上述流量比較的測試環境選取了服務器屏幕圖像變化相對較頻繁的情況,可以看出,本系統所采用的圖像壓縮編碼和通信策略相比于其他同類系統降低了數據流量。對于圖像變化相對緩慢的情況,采用差分編碼的本系統將進一步降低數據流量。整個屏幕共享系統的性能得到有效提高。
4 結束語
本文詳細地介紹了一種新型屏幕共享軟件的設計和實現。針對屏幕圖像的具體特點,本文設計了快速高效的圖像壓縮算法;同時采用高效率的異步通信方式,最大限度地提高了數據傳輸的效率。基于本文設計方案所實現的屏幕共享軟件已在清華大學和許繼昌南通信設備有限公司合作開發的優勢-S衛星視頻會議系統中作為輔助功能得到應用,效果良好。在視頻會議(多媒體會商)、遠程教育、遠程監控等領域,該技術存在廣泛的應用前景。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。