楊 亮,鄧春健,宋喜佳
(1.電子科技大學(xué)中山學(xué)院 計算機學(xué)院,廣東 中山 528402;2.廣東工業(yè)大學(xué) 自動化學(xué)院,廣東 廣州 510006)
在近年來隨著科技的快速發(fā)展以及智能設(shè)備的普及,人們工作生活中的多媒體設(shè)備已經(jīng)從傳統(tǒng)的以個人電腦和電視機為主,轉(zhuǎn)變成桌面電腦、智能手機、平板電腦和電視機共同存在[1]。屏與屏之間的內(nèi)容共享不再僅僅局限于計算機與計算機之間,更多會發(fā)生在諸如計算機與智能電視、智能電視與手持式設(shè)備等多種智能設(shè)備之間,然而現(xiàn)有一些成熟的屏幕內(nèi)容共享系統(tǒng),例如X系統(tǒng)[2](the X system)、微軟的遠(yuǎn)程桌面協(xié)議(Microsoft Remote Desktop Protocol,RDP)、虛擬網(wǎng)絡(luò)計算[3](Virtual Network Computing),主要針對計算機與計算機之間的屏幕共享,另一方面,傳統(tǒng)屏幕內(nèi)容分享系統(tǒng)主要用于文字、圖片等內(nèi)容的共享,目前所采用的壓縮編碼方式對帶寬要求過大,并不適合視頻內(nèi)容的共享,而 H.264[4]具有更好的壓縮性能以及面象網(wǎng)絡(luò)傳輸?shù)摹坝押眯浴保?],是目前應(yīng)用最廣泛的視頻編碼標(biāo)準(zhǔn)之一[6]。
針對以上問題,本文介紹了一種基于嵌入式平臺大屏幕分享系統(tǒng)的設(shè)計方法與具體實現(xiàn),該系統(tǒng)基于場景識別的碼率自適應(yīng)調(diào)整算法,能夠根據(jù)網(wǎng)絡(luò)擁塞狀況及當(dāng)前屏幕的應(yīng)用場景對H.264碼率進(jìn)行自適應(yīng)調(diào)整,以達(dá)到節(jié)約帶寬、提高畫質(zhì)的目的,另一方面,為節(jié)約成本并使系統(tǒng)更加小巧與便攜,服務(wù)器端基于嵌入式ARM平臺。
本系統(tǒng)由客戶端與服務(wù)器端兩部分構(gòu)成,客戶端運行于需要進(jìn)行屏幕內(nèi)容分享的機器上,一般是筆記本電腦、平板等個人計算機,主要完成屏幕內(nèi)容的獲取、壓縮編碼及傳輸?shù)裙ぷ鳎环?wù)器端運行于嵌入式平臺,采用的就是一款帶圖形加速功能的嵌入式多媒體應(yīng)用處理器BCM2835作為服務(wù)器端的主控芯片,上面搭載嵌入式Linux操作系統(tǒng),主要完成內(nèi)容的接收、解碼、顯示等功能。
傳統(tǒng)應(yīng)用較廣泛的vnc軟件采用的是RFB協(xié)議實現(xiàn)屏幕內(nèi)容的共享功能,具有良好的跨平臺性,但當(dāng)屏幕內(nèi)容變化大時,例如在播放視頻時,所占有帶寬將成倍增長。其他較流行的屏幕共享軟件,如RDP、X windows,采用平臺相關(guān)的渲染命令來描述屏幕內(nèi)容的變化,平臺依賴性較強,且壓縮編碼的效率不高,因此并不適合視頻等內(nèi)容的共享。針對以上問題,本系統(tǒng)采用h.264作為對內(nèi)容壓縮的編碼格式,并通過RTP協(xié)議傳輸,以節(jié)約帶寬提升畫質(zhì)。
3.1.1 基于QT的跨平臺軟件設(shè)計
Qt是一個跨平臺的C++圖形用戶界面應(yīng)用程序框架[7],能夠支持 Android、iOS、Linux、windows等操作系統(tǒng),本系統(tǒng)選取QT為開發(fā)平臺,其軟件架構(gòu)圖如圖1所示。
圖1 客戶端軟件架構(gòu)圖Fig.1 Client software architecture
整個應(yīng)用程序分6個模塊,其中用戶界面模塊主要完成軟件的配置,包括屏幕分享開始/停止等功能鍵。屏幕內(nèi)容獲取模塊主要完成屏幕的定時截圖功能;屏幕內(nèi)容壓縮模塊主要是采用開源x264合適的編碼算法對屏幕內(nèi)容進(jìn)行編碼;屏幕內(nèi)容發(fā)送模塊負(fù)責(zé)對編碼后的數(shù)據(jù)進(jìn)行RTP打包,并通過網(wǎng)絡(luò)接口發(fā)送出去;屏幕應(yīng)用場景智能識別模塊負(fù)責(zé)確定當(dāng)前屏幕共享的內(nèi)容是以文字為主還是以視頻播放為主,為選擇正確的編碼碼率提供參考;網(wǎng)絡(luò)擁塞狀況偵測模塊負(fù)責(zé)提供一種網(wǎng)絡(luò)機制探測網(wǎng)絡(luò)是否擁塞。
3.1.2 基于場景識別的碼率自適應(yīng)調(diào)整算法
采用H.264協(xié)議作為編碼方式具有占用帶寬小、壓縮效率高的特點,能夠有效解決共享在線視頻占用帶寬過大的問題;另一方面,碼率在一定程度上影響著畫面是否清晰,適當(dāng)調(diào)整碼率可以優(yōu)化畫質(zhì),但當(dāng)屏幕內(nèi)容分享主要為文字、網(wǎng)頁、靜態(tài)圖片時,H.264協(xié)議不能智能識別內(nèi)容并通過提高碼率以提高們圖像質(zhì)量,也不能自動偵測網(wǎng)絡(luò)是否擁塞。
針對以上問題,本文提出了一種基于場景識別的碼率自適應(yīng)調(diào)整算法,該算法能夠自動識別當(dāng)前屏幕應(yīng)用場景,并根據(jù)網(wǎng)絡(luò)擁塞狀況及當(dāng)前屏幕的應(yīng)用場景對H.264碼率進(jìn)行自適應(yīng)調(diào)整,以達(dá)到節(jié)約帶寬、提高畫質(zhì)的目的。算法主體思想如下:定時捕獲屏幕內(nèi)容,采用H.264協(xié)議對屏幕內(nèi)容進(jìn)行編碼,根據(jù)屏幕內(nèi)容智能識別當(dāng)前應(yīng)用場景并自動探測網(wǎng)絡(luò)擁塞程度自適應(yīng)調(diào)節(jié)H.264的碼率,以達(dá)到最大化的利用帶寬及提高清晰度的目的,其算法示意圖如圖2所示。
圖2 碼率自適應(yīng)調(diào)整算法原理圖Fig.2 Block diagram of code rate self-adaption adjustment
其主要算法流程如下:
(1)制定精簡協(xié)議,協(xié)商服務(wù)器端與客戶端可支持的碼率。
(2)通過定期發(fā)送網(wǎng)絡(luò)偵測包,自動檢測網(wǎng)絡(luò)擁塞情況。
(3)遍歷當(dāng)前所有在屏幕上顯示的窗口信息,智能識別當(dāng)前屏幕的應(yīng)用場景,主要分為文字應(yīng)用場景與視頻應(yīng)用場景兩種。
(4)針對文字應(yīng)用場景與視頻應(yīng)用場景,分別制定不同級別的碼率,以實現(xiàn)精細(xì)化碼率控制。
根據(jù)場景決定當(dāng)前H.264編碼的碼率,當(dāng)檢測到網(wǎng)絡(luò)擁塞時,自適應(yīng)調(diào)整當(dāng)前碼率。
為動態(tài)檢測網(wǎng)絡(luò)擁塞狀況,客戶端定時發(fā)送網(wǎng)絡(luò)擁塞請求消息,攜帶時間戳等信息,服務(wù)器端收到后,將比較當(dāng)前時間,并將當(dāng)前時間戳及網(wǎng)絡(luò)延遲等信息通過網(wǎng)絡(luò)擁塞檢測應(yīng)答包發(fā)送給客戶端,通過延時情況,動態(tài)評評網(wǎng)絡(luò)擁塞狀態(tài)。為智能檢測當(dāng)前屏幕的應(yīng)用場景,本文通過獲取當(dāng)前屏幕所有窗口的句柄,并獲取其相應(yīng)的進(jìn)程信息,根據(jù)當(dāng)前屏幕的窗口大小、進(jìn)程號等信息判斷當(dāng)前屏幕的的應(yīng)用是以文字為主還是以視頻為主,并對不同應(yīng)用場景進(jìn)行確定碼率范圍,有助于快速確定適合傳輸?shù)拇a率。
為使碼率調(diào)整算法能夠較好的跟蹤網(wǎng)絡(luò)擁塞情況的變化,達(dá)到充分利用帶寬提高畫質(zhì)的目的,本文采用增量式數(shù)字PD控制器來在線調(diào)整碼率。假設(shè)τ(i)為i時刻的碼率,θref(i)為我們期望網(wǎng)絡(luò)擁塞狀況,通常使用icmp包的返回值來描述,θr(i)為實際的網(wǎng)絡(luò)擁塞狀況。因此,在第i個采樣時刻,網(wǎng)絡(luò)擁塞狀況誤差為:
其中:kp與kd分別為碼率PD控制器的比例和微分系數(shù)。先通過經(jīng)驗給出該系數(shù)的估計值,再通過實驗對該值進(jìn)行調(diào)整,以期達(dá)到較好的跟蹤效果。
這種根據(jù)網(wǎng)絡(luò)擁塞情況、當(dāng)前屏幕應(yīng)用狀況動態(tài)調(diào)整H.264碼率的方法能夠大大加大帶寬的利用屏及屏幕內(nèi)容分享的分辨率與質(zhì)量。
服務(wù)器端主要完成屏幕內(nèi)容接收、解碼、顯示等功能,考慮到編碼速度是目前視頻壓縮應(yīng)用的瓶頸[8],硬件方面采用BCM2835為處理器,移植嵌入式Linux操作系統(tǒng),并提供了HDMI/VGA/DVI多種顯示接口,兼容多種外接顯示設(shè)備。為減小模塊之間的耦合,提高系統(tǒng)的并發(fā)處理能力,本文設(shè)計了4個線程,分別是主線程、數(shù)據(jù)接收線程、數(shù)據(jù)解碼線程、顯示線程,其軟件流程圖如圖3所示。
圖3 服務(wù)器端軟件流程圖Fig.3 Server software flow chart
服務(wù)器端從網(wǎng)絡(luò)上會收到2種類型的數(shù)據(jù)包,一種是H.264編碼后的視頻數(shù)據(jù),另一種是控制信息,包括網(wǎng)絡(luò)擁塞檢測請求、編解碼能力協(xié)商請求等類型的消息。為提高程序的并發(fā)能力,分別設(shè)計了視頻數(shù)據(jù)隊列、控制信息隊列、數(shù)據(jù)發(fā)送隊列,這樣做的好處是,線程之間松耦合,可以并發(fā)處理。
主線程負(fù)責(zé)啟動3個子線程,并監(jiān)控子線程狀態(tài)、處理外部事件,包括讀取控制信息隊列里面的數(shù)據(jù)包,對其進(jìn)行處理,并將要發(fā)送的數(shù)據(jù)放入數(shù)據(jù)發(fā)送隊列。
數(shù)據(jù)接收線程負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)的收發(fā),在從網(wǎng)絡(luò)上接收數(shù)據(jù)后,首先根據(jù)消息頭信息判斷是控制信息還是H.264編碼格式的數(shù)據(jù)包,并分別放入屏幕內(nèi)容數(shù)據(jù)隊列及控制信息隊列。數(shù)據(jù)解碼線程負(fù)責(zé)從視頻數(shù)據(jù)隊列中讀取數(shù)據(jù),并對數(shù)據(jù)包進(jìn)行H.264的解碼,解碼器則選取了 FFmpeg[9-11]開源項目作為底層實現(xiàn),解碼后的數(shù)據(jù)放入視頻數(shù)據(jù)隊列,由視頻顯示線程負(fù)責(zé)讀取及顯示。
本文所設(shè)計的系統(tǒng)與著名屏幕共享軟件(VNC、RDP)進(jìn)行對比測試。具體測試環(huán)境如下:傳統(tǒng)屏幕共享軟件測試平臺為兩臺筆記本通過WiFi組成局域網(wǎng),均采用windows平臺、1280×800的屏幕分辨率;本文設(shè)計的屏幕內(nèi)容共享系統(tǒng)采用的測試環(huán)境則是筆記本與嵌入式平臺組成通過 WiFi組成的無線局域網(wǎng),同樣采用1280×800的屏幕分辨率。
為有效評估在各個應(yīng)用場景下各軟件帶寬占用率的不同,測試內(nèi)容分為文字為主和以視頻播放為主的屏幕內(nèi)容共享,為保證測試結(jié)果的可比性,測試時采用同一個路由器,具體測試用例描述如下:
(1)以文字為主的應(yīng)用場景測試
選擇以文字描述為主的ppt文檔一份,共計60頁,設(shè)置每4s變換一頁的速度進(jìn)行全屏播放。
(2)以圖片為主的應(yīng)用場景測試
選取以圖片為主的ppt文檔一份,共計60頁,設(shè)置每4s變換一頁的速度進(jìn)行全屏播放。
(3)以視頻播放為主的應(yīng)用場景測試
選擇avi格式的視頻進(jìn)行播放,播放碼率為610kbps,分辨率為1280×526。
以上測試用例分別測試兩組,每組5次,取平均值。詳細(xì)的屏幕內(nèi)容共享系統(tǒng)的網(wǎng)絡(luò)流量速率統(tǒng)計的測試結(jié)果如表1所示。
表1 不同屏幕內(nèi)容共享系統(tǒng)網(wǎng)絡(luò)流量速率測試結(jié)果Tab.1 Test result of network traffic for different screen sharing systems
從以上結(jié)果可以看出,VNC與RDS軟件主要適用于文字為主的屏幕內(nèi)容共享場景,切換到視頻播放場景時,所需帶寬激增。與傳統(tǒng)算法相比,本文所設(shè)計的系統(tǒng)對不同應(yīng)用場景所需的帶寬變化不大,相對平穩(wěn),當(dāng)切換到視頻播放場景時,帶寬占用率低,優(yōu)勢明顯。
詳細(xì)介紹了一種基于嵌入式平臺大屏幕內(nèi)容分享系統(tǒng)的設(shè)計與實現(xiàn)。針對傳統(tǒng)屏幕內(nèi)容分享軟件占用帶寬大、畫質(zhì)差、不適合視頻內(nèi)容分享的問題,提出了一種基于場景識別的碼率自適應(yīng)算法。該算法能夠根據(jù)當(dāng)前活躍的窗口句柄、進(jìn)程信息智能識別屏幕當(dāng)前的應(yīng)用場景,并根據(jù)網(wǎng)絡(luò)擁塞狀況選擇適合當(dāng)前應(yīng)用場景及網(wǎng)絡(luò)狀況的碼率。實驗表明,該算法具有占用帶寬小、畫質(zhì)好的優(yōu)點,能夠滿足視頻內(nèi)容的屏幕共享需求。
[1]潘兆泰.交互式屏幕共享的低復(fù)雜度壓縮和低延時傳輸方法[D].合肥:中國科學(xué)技術(shù)大學(xué),2013.Pan Z T.Low-complexity compression and low-latency transmission for interactive screen sharing[D].Hefei:University of Science and Technology of China,2013.(in Chinese)
[2]Scheifler R W,Gettys J.The X Window system [J].ACM Transactions on Graphics,1986,5(2):79-109.
[3]Richardson T,Stafford-Fraser Q,Wood K R,et al.Virtual network computing [J].IEEE Internet Computing,1998,2(1):33-38.
[4]Schwarz H,Marpe D,Wiegand T.Overview of the scalable video coding extension of the H.264/AVC standard[J].IEEE Transactions on Circuits and Systems for Video Technology,2007,17(9):1103-1120.
[5]祝世平,張玲.基于分形和 H.264的視頻編碼系統(tǒng)[J].光學(xué)精密工程,2013,21(3):774-781.Zhu S P,Zhang L.Video coding system based on fractal and H.264[J].Optics and Precision Engineering,2013,21(3):774-781.(in Chinese)
[6]吳銀花,金龍旭,張柯.應(yīng)用Jmode值單調(diào)性的快速P幀模式選擇算法[J].液晶與顯示,2013,28(2):266-272.Wu Y H,Jin L X,Zhang K.Fast P-frame mode decision algorithm using monotonicity of Jmode[J].Chinese Journal of Liquid Crystals and Displays,2013,28(2):266-272.(in Chinese)
[7]劉艷青,蘇桂蓮.基于 Qt4的圖形用戶界面程序的設(shè)計與實現(xiàn)[J].現(xiàn)代計算機:下半月版,2009(3):170-172.Liu Y Q,Su G L.Design and implementation of graphical user interface program based on Qt4[J].Modern Computer,2009(3):170-172.(in Chinese)
[8]吳銀花,金龍旭,張寧,等.針對 H.264改進(jìn)的快速整像素運動估計算法[J].光學(xué)精密工程,2013,21(4):1017-1025.Wu Y H,Jin L X,Zhang N,et al.Improvement of fast integer pixel motion estimation algorithm for H.264 [J].Optics and Precision Engineering,2013,21(4):1017-1025.(in Chinese)
[9]李軍杰.基于FFmpeg的 H.264解碼器在Symbian上的移植和優(yōu)化[D].武漢:華中科技大學(xué),2011.Li J J.The implementation and optimization of symbian’s H.264decoder based on the FFmpeg [D].Wuhan:Huazhong University of Science & Technology,2011.(in Chinese)
[10]Liu Y H,Wang S.An embedded multimedia player on S3C6410platform [J].Advanced Materials Research,2012,571:680-686.
[11]Ni H B,Cao S X.Research and implementation of asynchronous video converter based on Linux[J].Applied Mechanics and Materials,2013,241:2596-2600.