本發(fā)明屬于計算機領域,涉及一種視頻重定向方法,尤其是涉及一種基于遠程桌面呈現協(xié)議的視頻重定向方法及系統(tǒng)。
背景技術:
現有的遠程呈現協(xié)議如Redhat的SPICE協(xié)議對視頻進行了一些優(yōu)化,通過在SPICE協(xié)議層采用合適的壓縮、解壓縮算法來降低帶寬需求,達到比較好的用戶體驗。目前針對視頻優(yōu)化的技術,也有些公司采用在協(xié)議層進行壓縮、瘦客戶端進行解壓縮(軟件解壓/硬件解壓)。上述方法雖然也有很好的用戶體驗,但先解壓縮再壓縮的算法對服務器的CPU開銷是巨大的。
基于虛擬化的遠程桌面呈現協(xié)議在進行視頻播放時的數據流向如圖1所示,其中的解碼器及顏色空間轉換兩個模塊是虛擬機內播放器的組件,涉及到的視頻解碼算法對CPU的消耗很大,這就限制了能在單臺服務器上同時在線的虛擬機實例的數目。
輸入模塊從介質讀取影片文件,解復用模塊將數據流分解為音頻流和視頻流,有些還有字幕流。解碼器負責對音頻及視頻進行解碼。解碼后的輸出數據可能因顯卡的不同而進行顏色空間的轉換,之后交由虛擬顯卡進行顯示。Hypervisor中對應的后端驅動在截獲顯示指令及數據后,對數據進行壓縮,之后由遠程桌面呈現協(xié)議送至瘦客戶端。瘦客戶端在對數據進行解壓后輸出至本地顯示設備。
縱觀整個過程,視頻碼流的解碼以及遠程桌面協(xié)議中對數據的再壓縮對CPU的消耗都比較大,這極大的影響了單臺服務器上能夠同時運行的實例個數。
現有的遠程桌面呈現協(xié)議針對視頻的優(yōu)化基本都是局限于協(xié)議本身。
技術實現要素:
本發(fā)明的目的就是為了克服上述現有技術存在的缺陷而提供一種有效降低服務器帶寬及計算能力、提高用戶在觀看高清視頻時的體驗的基于遠程桌面呈現協(xié)議的視頻重定向方法及系統(tǒng)。
本發(fā)明的目的可以通過以下技術方案來實現:
一種基于遠程桌面呈現協(xié)議的視頻重定向方法,包括以下步驟:
獲取媒體播放器的視頻文件;
對所述視頻文件進行碼流分離,向瘦客戶端發(fā)送視頻流的解碼請求,所述解碼請求由構造的虛擬解碼器向瘦客戶端發(fā)送,所述虛擬解碼器為瘦客戶端中的本地解碼器的代理;
判斷是否收到瘦客戶端的可解碼反饋,若是,則通過遠程桌面呈現協(xié)議將視頻流和播放參數發(fā)送給瘦客戶端進行解碼后顯示,若否,則通過媒體播放器進行解碼。
對所述視頻文件進行碼流分離具體為:將視頻文件分解成視頻流、音頻流和/或字幕流。
所述解碼請求包括視頻流格式。
所述瘦客戶端的可解碼反饋根據解碼請求產生,當解碼請求中的視頻流格式與瘦客戶端匹配時,則生成可解碼反饋。
所述播放參數包括播放窗口大小、播放窗口位置和片源基本信息。
一種基于遠程桌面呈現協(xié)議的視頻重定向系統(tǒng),包括依次連接的虛擬機服務器、虛擬機監(jiān)控器和瘦客戶端,所述虛擬機服務器包括:
輸入模塊,用于讀取待播放的視頻文件;
解復用模塊,用于將視頻文件分解成視頻流、音頻流和/或字幕流;
虛擬解碼器,構建于媒體播放器中,用于截取待播放的視頻流,并生成解碼請求,在獲取瘦客戶端的可解碼反饋后發(fā)出視頻流和播放參數;
虛擬設備,用于實現虛擬解碼器與虛擬機監(jiān)控器間的通訊;
所述瘦客戶端包括:
本地解碼器,用于對接收到的視頻流和播放參數進行解碼,并輸出顯示;
所述虛擬解碼器為瘦客戶端中的本地解碼器的代理。
所述虛擬機監(jiān)控器通過遠程桌面呈現協(xié)議與瘦客戶端實現通訊。
所述解碼請求包括視頻流格式。
所述瘦客戶端的可解碼反饋根據解碼請求產生,當解碼請求中的視頻流格式與瘦客戶端匹配時,則生成可解碼反饋。
所述播放參數包括播放窗口大小、播放窗口位置和片源基本信息。
所述本地解碼器為硬件解碼器或軟件解碼器。
本發(fā)明的關鍵點在于構造虛擬解碼器,其用于構造虛擬機與宿主機通信的數據通道以及遠程桌面呈現協(xié)議視頻碼流的傳輸通道。在數據傳送過程中,對視頻數據流進行分離處理,即在虛擬機內由虛擬解碼器對所有數據進行分析后,獲得視頻數據流并通過遠程桌面呈現協(xié)議視頻碼流的傳輸通道傳送到瘦客戶端進行解碼,大大減輕對服務器的性能、帶寬的要求,減輕了服務器端的計算消耗。
與現有技術相比,本發(fā)明具有以下優(yōu)點:
1)本發(fā)明通過特定虛擬設備構造一個虛擬解碼器,在虛擬機服務器內由虛擬解碼器對所有數據進行分析后,獲得視頻數據流并通過遠程桌面呈現協(xié)議視頻碼流的傳輸通道傳送到瘦客戶端進行解碼,將耗CPU的解碼運算下放至瘦客戶端,大大減輕對服務器的性能、帶寬的要求,有效得降低了服務器的CPU消耗,降低了數據帶寬,極大地提高了高清視頻播放時的用戶體驗。
2)本發(fā)明充分發(fā)揮客戶端的硬件處理能力,將耗費計算資源的解碼功能下傳至客戶端進行處理,能有效降低服務器的計算及帶寬消耗,也不會大量增加客戶端的計算消耗。
附圖說明
圖1為傳統(tǒng)的視頻播放時的視頻流圖;
圖2為本發(fā)明系統(tǒng)的架構示意圖;
圖3為本發(fā)明視頻播放時的視頻流圖。
具體實施方式
下面結合附圖和具體實施例對本發(fā)明進行詳細說明。本實施例以本發(fā)明技術方案為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
如圖2所示,本實施例提供基于遠程桌面呈現協(xié)議的視頻重定向系統(tǒng),包括依次連接的虛擬機服務器1、虛擬機監(jiān)控器2和瘦客戶端3,虛擬機監(jiān)控器2通過遠程桌面呈現協(xié)議與瘦客戶端3實現通訊。
其中,虛擬機服務器1包括輸入模塊11、解復用模塊12、虛擬解碼器13和虛擬設備14。輸入模塊11用于讀取待播放的視頻文件;解復用模塊12用于將視頻文件分解成視頻流、音頻流和/或字幕流。虛擬解碼器13構建于媒體播放器中,用于截取待播放的視頻流,并生成包括視頻流格式的解碼請求,在獲取瘦客戶端3的可解碼反饋后發(fā)出視頻流和播放參數。瘦客戶端的可解碼反饋根據解碼請求產生,當解碼請求中的視頻流格式與瘦客戶端匹配時,則生成可解碼反饋。播放參數包括播放窗口大小、播放窗口位置和片源基本信息(如長度、寬度等信息)。虛擬設備14用于實現虛擬解碼器13與虛擬機監(jiān)控器2間的通訊。
瘦客戶端3包括本地解碼器31,用于對接收到的視頻流和播放參數進行解碼,并輸出顯示,本地解碼器31可為硬件解碼器或軟件解碼器。
虛擬解碼器13為瘦客戶端3中的本地解碼器31的代理,它本身并不具有解碼功能,只有數據轉發(fā)功能。視頻碼流經由虛擬設備到虛擬機監(jiān)控器(Hypervisor),再由遠程呈現協(xié)議送至瘦客戶端,由客戶端使用合適的解碼器對碼流進行解碼,進而刷到顯示設備上。
如圖3所示,利用上述基于遠程桌面呈現協(xié)議的視頻重定向系統(tǒng)的視頻重定向方法,包括以下步驟:
輸入模塊獲取媒體播放器的視頻文件;
解復用模塊對視頻文件進行碼流分離,向瘦客戶端發(fā)送視頻流的解碼請求,解碼請求由構造的虛擬解碼器向瘦客戶端發(fā)送;
判斷是否收到瘦客戶端的可解碼反饋,若是,則通過遠程桌面呈現協(xié)議及其驅動將視頻流和播放參數發(fā)送給瘦客戶端進行解碼后輸出刷至顯示設備上,若否,則通過媒體播放器進行解碼。
上述視頻重定向方法是基于虛擬化技術,為播放器提供一組偽解碼器(虛擬解碼器),播放器在播放視頻需要解碼時,由該偽解碼器截獲碼流,再通過遠程桌面呈現協(xié)議將碼流傳送至客戶端,解碼功能由客戶端的硬件模塊或軟件來進行,客戶端負責解碼之后的數據處理(輸出顯示)。