一種云桌面環境下的視頻同步渲染的方法
【技術領域】
[0001]本發明涉及圖像處理技術領域,具體涉及一種云桌面環境下的圖像處理方法。
【背景技術】
[0002]基于云計算的應用方式越來越多,云桌面是其中之一,它通過云端建立的虛擬桌面,實現對操作系統的集中分配與管理。視頻應用是云桌面的一種應用之一,但是在視頻播放過程中,由于高碼率和高分辨率的視頻圖像在傳輸過程中,非常占用網絡帶寬,目前的云桌面技術中,虛擬操作系統將桌面圖像劃分為多個矩形區域進行分塊渲染,服務器端通過檢測虛擬操作系統發出的某一矩形區域圖像繪制指令來識別視頻流,若收到圖像繪制指令的頻率高于閾值,則服務器端將其識別為某一繪制區域的視頻圖像,根據預設的每秒最大幀數決定是否發送繪制圖像指令,若超出幀數,則丟棄該幀不發送繪制指令。當客戶端接收到服務器端發送的繪制圖像指令后,根據服務器端的時間戳確認該幀是否有效,有效則顯示該幀圖像,無效則丟棄。但是,當客戶端窗口化播放視頻時,由于存在視頻區域和非視頻區域,因此在丟幀時,導致視頻播放窗口內經常出現畫面不同步的現象;同時,由于視頻分辨率較高,虛擬操作系統通常將視頻圖像分割成多塊區域進行處理,并分別發送繪制指令,這樣也會導致視頻畫面不同步的現象,嚴重影響用戶體驗。
【發明內容】
[0003]鑒于現有技術之不足,本發明提供了一種云桌面環境下的視頻同步渲染的方法,該方法在服務器端檢測到當前圖像繪制指令為視頻流時,能夠保持視頻渲染的同步,提高了用戶體驗。
[0004]解決上述問題的技術方案如下:
[0005]一種云桌面環境下的視頻同步渲染的方法,包括以下步驟:
[0006]I)虛擬操作系統將桌面圖像劃分為多個矩形區域,并逐一向物理服務器發出所述矩形區域的圖像繪制指令;
[0007]2)物理服務器接收虛擬操作系統發出的當前矩形區域的圖像繪制指令后,按以下方法識別該圖像繪制指令對應的矩形區域是否為視頻區域:
[0008]若收到圖像繪制指令的頻率低于或等于設定的圖像接收頻率閾值,則將其識別為一非視頻區域的圖像繪制指令,并以該區域的起始坐標及該區域的長度和寬度對該非視頻區域進行位置標記;
[0009]反之,若高于設定的圖像接收頻率閾值,則將其識別為一視頻區域的圖像繪制指令,并以該區域的起始坐標及該區域的長度和寬度對該視頻區域的進行位置標記,然后將該視頻區域的圖像繪制指令加入至視頻處理隊列中,
[0010]3)對于被識別為視頻區域的圖像繪制指令,根據位置標記判斷該圖像繪制指令所對應的視頻區域與當前桌面中其他非視頻區域之間是否存在位置交疊,若存在位置交疊,則將位置交疊部分從其他非視頻區域中去除;若不存在交疊,則不予處理;
[0011]4)對于被識別為視頻區域的圖像繪制指令,根據位置標記判斷該圖像繪制指令所對應的視頻區域與隊列中其他圖像繪制指令所對應的視頻區域是否存在位置交疊或位置相鄰,若存在,則將當前圖像繪制指令所對應的視頻區域與存在位置交疊或相鄰的視頻區域進行圖像繪制合并;若不存在,則不予處理;
[0012]5)重復步驟2)?4)直至完成一幀整幅視頻圖像的處理,并由服務器重新生成一視頻圖像繪制指令;
[0013]6)服務器根據預設的每秒最大幀率和當前幀率決定是否丟幀,若當前幀率超過最大幀率則不發送重新生成的圖像繪制指令,反之,則將重新生成的視頻圖像繪制指令和其他非視頻區域的圖像繪制指令發送至客戶端;
[0014]7)客戶端接收到繪制指令后立即對圖像進行渲染,完成非視頻區域和視頻區域的同步清染。
[0015]步驟3)中所述的將位置交疊部分從其他非視頻區域中去除的方法如下:
[0016]令被識別為視頻區域的圖像繪制指令所對應的位置標記為Areav(Xl,Y1, W1,比),某一非視頻區域的位置標記Areaw(x2,12, w2, h2),其中X1, Y1為視頻區域的起始坐標,w:和h汾別為視頻區域的寬度和高度,x2, y2為非視頻區域的起始坐標,w 2和h 2分別為非視頻區域的寬度和高度,當視頻區域與非視頻區域的位置標記同時滿足如下條件時,則判斷視頻區域與該非視頻區域存在位置交疊:
[0017]Xfw1^X2
[0018]x2+w2^ X !
[0019]y2+h2^: y !
[0020]y 2
[0021]然后,將位置交疊部分標記為AreaciU3, y3, w3, h3),其中,x3, y3為位置交疊區域的起始坐標,《3和h 3分別為位置交疊區域的寬度和高度
[0022]然后按下式:
[0023]Areaw (x2, y2, w2, h2) -Area0 (x3, y3, w3, h3)
[0024]將該非視頻區域中的位置交疊的部分去除;同理,按上述步驟完成該視頻區域與其他非視頻區域中位置交疊部分的去除。
[0025]其中,步驟4)中所述對隊列中存在位置交疊或相鄰的視頻區域進行圖像繪制合并的方法如下:
[0026]A)令當前被識別為視頻區域的圖像繪制指令所對應的視頻區域的位置標記為Areav (x4, y4, w4, h4),隊列中一視頻區域的位置標記為Areav (x5, y5, w5, h5),當兩塊視頻區域的位置標記同時滿足如下條件時則判定當前視頻區域與隊列中一視頻區域存在重疊或相鄰:
[0027]x4+w4^ X 5
[0028]X5+W5 ^x4
[0029]y5+h5^: y 4
[0030]y4+h4> y 5
[0031]然后,將兩塊視頻區域合并成新的視頻區域Areav (x6, y6, w6, h6),合并的計算公式如下:
[0032]若x4> x5,則 X6= x5,否則 X6= X4
[0033]若y4> y5,則 y6= y5,否則 y6= χ4
[0034]若x4+w4> X 5+W5,則 W6= X 4+W4-Xg,否則 W6= X 5+W5-X6,
[0035]若y4+h4> y 5+h5,則 h6= y 4+h4_y6,否則 h6= y 5+h5-y6
[0036]同理,按步驟A)所述方法完成當前視頻區域與隊列中所有其他視頻區域的合并處理。
[0037]相較于現有技術,本發明的有益效果如下:
[0038]由于服務器端在視頻播放時,對桌面區域進行視頻區域和非視頻區域劃分,并且對視頻區域進行合并,使得視頻圖像被合并成一整塊圖像進行處理,有效保證了視頻播放時的畫面同步渲染;同時,由于客戶端在渲染視頻時,不再根據服務器的時間戳控制視頻圖像的顯示,大大降低了丟幀的可能,提高了用戶體驗;另外,對桌面區域進行視頻區域和非視頻區域劃分,也避免客戶端對同一區塊的二次圖像渲染,降低了客戶端的硬件需求和網絡帶寬的需求。
【附圖說明】
[0039]圖1為本發明所述視頻同步渲染方法的流程圖。
[0040]圖2為本發明所述一種云桌面環境下的視頻同步渲染的方法的一個具體實施例的視頻播放渲染示意圖。
【具體實施方式】
[0041]下面以云桌面環境下窗口化播放視頻為例,結合附圖詳述本發明的視頻同步渲染方法:
[0042]參見圖2,虛擬操作系統在接收到客戶端的窗口化播放某視頻的控制指令時即開始播放視頻圖像,將當前一幀桌面圖像劃分為9個區塊,按圖2所示I?9的數字順序逐一發送至服務器,服務器端則按順序對區塊I?9進行處理,參見圖1,處理流程如下:
[0043]I)虛擬操作系統將桌面圖像劃分為多個矩形區域,并逐一向物理服務器發出所述矩形區域的圖像繪制指令;
[0044]2)物理服務器接收虛擬操作系統發出的當前矩形區域的圖像繪制指令后,按以下方法識別該圖像繪制指令對應的矩形區域是否為視頻區域:
[0045]若收到圖像繪制指令的頻率低于或等于設定的圖像接收頻率閾值,則將其識別為一非視頻區域的圖像繪制指令,并以該區域的起始坐標及該區域的長度和寬度對該非視頻區域進行位置標記;
[0046]反之,若高于設定的圖像接收頻率閾值,則將其識別為一視頻區域的圖像繪制指令,并以該區域的起始坐標及該區域的長度和寬度對該視頻區域的進行位置標記,然后將該視頻區域的圖像繪制指令加入至視頻處理隊列中,
[0047]由于一般視頻播放高于14幀時,人眼就會感覺比較視頻比較流暢,因此本例中圖像接收頻率閾值設為14Hz ;
[0048]3)對于被識別為視頻區域的圖像繪制指令,根據位置標記判斷該圖像繪制指令所對應的視頻區域與當前桌面中其他非視頻區域之間是否存在位置交疊,若存在位置交疊,則將位置交疊部分從其他非視頻區域中去除;若不存在交疊,則不予處理,去除交疊部分的具體步驟如下:
[0049]令被識別為視頻區域的圖像繪制指令所對應的