一種視頻重定向的方法、裝置、系統(tǒng)及計(jì)算機(jī)可讀介質(zhì)的制作方法
【專利摘要】本發(fā)明實(shí)施例通過截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令,并且根據(jù)客戶端是否支持視頻數(shù)據(jù)幀解碼,將視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理,或者將解碼后的視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理,從而可以在客戶端實(shí)現(xiàn)視頻數(shù)據(jù)幀后處理,保證用戶視頻體驗(yàn)。同時(shí)只要服務(wù)器側(cè)視頻播放器支持視頻重定向功能即可實(shí)現(xiàn)本發(fā)明,不需要依賴某一種特定的視頻播放器。
【專利說明】一種視頻重定向的方法、裝置、系統(tǒng)及計(jì)算機(jī)可讀介質(zhì)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及信息【技術(shù)領(lǐng)域】,特別涉及一種視頻重定向的方法、裝置、系統(tǒng)及計(jì)算機(jī) 可讀介質(zhì)。
【背景技術(shù)】
[0002] 隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,遠(yuǎn)程桌面成為一種流行技術(shù)。遠(yuǎn)程桌面技術(shù)通過登 陸到遠(yuǎn)程服務(wù)器,將該遠(yuǎn)程服務(wù)器屏幕顯示的內(nèi)容傳遞到本地客戶端進(jìn)行顯示。遠(yuǎn)程桌面 應(yīng)用并不僅指遠(yuǎn)程的屏幕顯示,還可以包含遠(yuǎn)程視頻傳送。
[0003] 現(xiàn)有技術(shù)中,在使用遠(yuǎn)程桌面中的視頻播放器播放視頻文件時(shí),使用基于 Microsoft?公司推出的DirectShow?框架的多媒體播放器,在遠(yuǎn)程服務(wù)器上通過該 視頻播放器加載視頻文件后,可以從DirectShow?中的Filter截獲未解碼的視頻數(shù) 據(jù),在客戶端的DirectShow?框架中也插入Filter,接收遠(yuǎn)程服務(wù)器發(fā)送的視頻數(shù)據(jù) 進(jìn)行解碼顯示,同時(shí)將視頻數(shù)據(jù)顯示信息發(fā)送到客戶端,但是該視頻重定向方案需要依賴 Microsoft?公司的MediaPlayer?視頻播放器,并且不能對視頻數(shù)據(jù)進(jìn)行后處理,從而 影響用戶體驗(yàn)。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明實(shí)施例公開了一種視頻重定向的方法、裝置、系統(tǒng)及計(jì)算機(jī)可讀介質(zhì),以實(shí) 現(xiàn)視頻數(shù)據(jù)幀后處理。
[0005] 第一方面,本發(fā)明實(shí)施例公開了一種視頻重定向的方法,包括:
[0006] 截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理 指令;
[0007] 當(dāng)客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一 視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所述第二視頻 數(shù)據(jù)幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后 處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀或?yàn)樗龅?一視頻數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀;
[0008] 當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第 二視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對所述第二視 頻數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視 頻數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù) 幀為所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù)幀處理指 令;當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為解碼后的第 一視頻數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀 后處理指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
[0009] 結(jié)合本發(fā)明第一方面實(shí)施例,在第一種可能的實(shí)施方式中,還包括:當(dāng)所述客戶 端支持視頻數(shù)據(jù)幀解碼時(shí),并且所述客戶端不支持所述視頻播放器向所述虛擬顯示驅(qū)動發(fā) 送的所述第一視頻數(shù)據(jù)幀的視頻編碼格式時(shí),將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn) 換,獲得所述第二視頻數(shù)據(jù)幀;其中,所述第二視頻數(shù)據(jù)幀的視頻編碼格式為所述客戶端支 持的視頻編碼格式。
[0010] 結(jié)合本發(fā)明第一方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式中,所 述將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀,具體包括:所 述虛擬顯示驅(qū)動將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù) 幀。
[0011] 結(jié)合本發(fā)明第一方面的實(shí)施例,在第三種可能的實(shí)施方式中,還包括當(dāng)所述客戶 端不支持視頻數(shù)據(jù)幀解碼時(shí),并且當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),向所 述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令之前,根據(jù)所述第一視頻數(shù)據(jù)幀 處理指令中的所述視頻數(shù)據(jù)幀解碼指令對所述第一視頻數(shù)據(jù)幀進(jìn)行解碼,以獲得所述第二 視頻數(shù)據(jù)幀。
[0012] 結(jié)合本發(fā)明第一方面實(shí)施例,或第一方面的第三種可能的實(shí)施方式,在第四種可 能的實(shí)施方式中,還包括:當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送所述 第二視頻數(shù)據(jù)幀和所述第二視頻數(shù)據(jù)幀處理指令之前,壓縮所述第二視頻數(shù)據(jù)幀;則向所 述客戶端發(fā)送第二視頻數(shù)據(jù)幀,具體為向所述客戶端發(fā)送壓縮后的第二視頻數(shù)據(jù)幀。
[0013] 結(jié)合本發(fā)明第一方面或第一方面的第一至第四種任一可能的實(shí)施方式,在第五種 可能的實(shí)施方式中,還包括:所述截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀 和第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端的視頻數(shù)據(jù)幀處理能力;所述客戶端的 視頻數(shù)據(jù)幀處理能力包括視頻數(shù)據(jù)幀解碼能力,以根據(jù)所述視頻數(shù)據(jù)幀解碼能力,確定所 述客戶端是否支持視頻數(shù)據(jù)幀解碼。
[0014] 結(jié)合本發(fā)明第一方面的第一種、第二種或第五種可能的實(shí)施方式,在第六種可能 的實(shí)施方式中,還包括:根據(jù)所述客戶端的視頻數(shù)據(jù)幀處理能力,確定所述客戶端支持視頻 數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令之前, 獲取所述客戶端支持的視頻數(shù)據(jù)幀的視頻編碼格式信息,以根據(jù)所述視頻編碼格式信息, 確定所述客戶端是否支持所述第一視頻數(shù)據(jù)幀的視頻編碼格式。
[0015] 結(jié)合本發(fā)明第一方面,或第一至第六種任一可能的實(shí)施方式,在第七種可能的實(shí) 施方式中,所述截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀 處理指令,具體為所述虛擬顯示驅(qū)動截獲所述第一視頻數(shù)據(jù)幀和所述第一視頻處理指令。
[0016] 第二方面,本發(fā)明實(shí)施例公開了一種服務(wù)器,包括:
[0017] 截獲單元,用于截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視 頻數(shù)據(jù)幀處理指令;
[0018] 發(fā)送單元,用于當(dāng)客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù) 據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第一視頻數(shù)據(jù)幀處理指 令對所述第二視頻數(shù)據(jù)幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指 令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻 數(shù)據(jù)幀或?yàn)樗龅谝灰曨l數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀;
[0019] 當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第 二視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對所述第二視 頻數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視 頻數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù) 幀為所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù)幀處理指 令;當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為解碼后的第 一視頻數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀 后處理指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
[0020] 結(jié)合本發(fā)明第二方面,在第一種可能的實(shí)施方式中,還包括轉(zhuǎn)換單元,所述轉(zhuǎn)換單 元用于當(dāng)所述客戶端支持視頻數(shù)據(jù)幀解碼時(shí),并且所述客戶端不支持所述視頻播放器向所 述虛擬顯示驅(qū)動發(fā)送的所述第一視頻數(shù)據(jù)幀的視頻編碼格式時(shí),將所述第一視頻數(shù)據(jù)幀進(jìn) 行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀;其中,所述第二視頻數(shù)據(jù)幀的視頻編碼格 式為所述客戶端支持的視頻編碼格式。
[0021] 結(jié)合本發(fā)明第二方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式中,所 述轉(zhuǎn)換單元具體為所述虛擬顯示驅(qū)動,則所述將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn) 換,獲得所述第二視頻數(shù)據(jù)幀,具體包括:所述虛擬顯示驅(qū)動將所述第一視頻數(shù)據(jù)幀進(jìn)行視 頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀。
[0022] 結(jié)合本發(fā)明第二方面的實(shí)施例,在第三種可能的實(shí)施方式中,還包括解碼單元,用 于當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),并且當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù) 據(jù)幀時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令之前,根據(jù)所述第 一視頻數(shù)據(jù)幀處理指令中的所述視頻數(shù)據(jù)幀解碼指令對所述第一視頻數(shù)據(jù)幀進(jìn)行解碼,以 獲得所述第二視頻數(shù)據(jù)幀。
[0023] 結(jié)合本發(fā)明第二方面或第二方面的第三種可能的實(shí)施方式,在第四種可能的實(shí)施 方式中,還包括壓縮單元,所述壓縮單元用于當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所 述客戶端發(fā)送所述第二視頻數(shù)據(jù)幀和所述第二視頻數(shù)據(jù)幀處理指令之前,壓縮所述第二視 頻數(shù)據(jù)幀;則向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀,具體為向所述客戶端發(fā)送壓縮后的第二 視頻數(shù)據(jù)幀。
[0024] 結(jié)合本發(fā)明第二方面,或者第二方面的第一至第四種任一可能的實(shí)施方式,在第 五種可能的實(shí)施方式中,還包括獲取單元,所述獲取單元用于所述截獲單元截獲所述視頻 播放器向所述虛擬顯示驅(qū)動發(fā)送的所述第一視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令 之前,獲取所述客戶端的視頻數(shù)據(jù)幀處理能力;所述客戶端的視頻數(shù)據(jù)幀處理能力包括視 頻數(shù)據(jù)幀解碼能力,以根據(jù)所述視頻數(shù)據(jù)幀解碼能力,確定所述客戶端是否支持視頻數(shù)據(jù) 幀解碼。
[0025] 結(jié)合本發(fā)明第二方面的第一種、第二種或第五種可能的實(shí)施方式,在第六種可能 的實(shí)施方式中,所述獲取單元還用于根據(jù)所述客戶端的視頻數(shù)據(jù)幀處理能力,確定所述客 戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處 理指令之前,獲取所述客戶端支持的視頻數(shù)據(jù)幀的視頻編碼格式信息,以根據(jù)所述視頻編 碼格式信息,確定所述客戶端是否支持所述第一視頻數(shù)據(jù)幀的視頻編碼格式。
[0026] 結(jié)合本發(fā)明第二方面,或者第二方面的第一至第六種任一可能的實(shí)施方式,在第 七種可能的實(shí)施方式中,所述截獲單元具體為虛擬顯示驅(qū)動,所述虛擬顯示驅(qū)動截獲所述 第一視頻數(shù)據(jù)幀和所述第一視頻處理指令。
[0027] 第三方面,本發(fā)明實(shí)施例公開了一種服務(wù)器,包括存儲器和中央處理器,所述存儲 器和所述中央處理器通過系統(tǒng)總線相連,所述存儲器存儲計(jì)算機(jī)可執(zhí)行指令,當(dāng)所述服務(wù) 器運(yùn)行時(shí),所述中央處理器執(zhí)行所述存儲器存儲的計(jì)算機(jī)可執(zhí)行指令,使所述服務(wù)器執(zhí)行 如下步驟:
[0028] 截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理 指令;
[0029] 當(dāng)客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一 視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所述第二視頻 數(shù)據(jù)幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后 處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀或?yàn)樗龅?一視頻數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀;
[0030] 當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第 二視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對所述第二視 頻數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視 頻數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù) 幀為所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù)幀處理指 令;當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為解碼后的第 一視頻數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀 后處理指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
[0031] 結(jié)合本發(fā)明第三方面的實(shí)施例,在第一種可能的實(shí)施方式中,還包括:當(dāng)所述客戶 端支持視頻數(shù)據(jù)幀解碼時(shí),并且所述客戶端不支持所述視頻播放器向所述虛擬顯示驅(qū)動發(fā) 送的所述第一視頻數(shù)據(jù)幀的視頻編碼格式時(shí),將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn) 換,獲得所述第二視頻數(shù)據(jù)幀;其中,所述第二視頻數(shù)據(jù)幀的視頻編碼格式為所述客戶端支 持的視頻編碼格式。
[0032] 結(jié)合本發(fā)明第三方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式中,所 述將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀,具體包括:所 述虛擬顯示驅(qū)動將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù) 幀。
[0033] 結(jié)合本發(fā)明第三方面的實(shí)施例,在第三種可能的實(shí)施方式中,還包括所述當(dāng)所述 客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),并且當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí), 向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令之前,根據(jù)所述第一視頻數(shù) 據(jù)幀處理指令中的所述視頻數(shù)據(jù)幀解碼指令對所述第一視頻數(shù)據(jù)幀進(jìn)行解碼,以獲得所述 第二視頻數(shù)據(jù)幀。
[0034] 結(jié)合本發(fā)明第三方面或第三方面的第三種可能的實(shí)施方式,在第四種可能的實(shí)施 方式中,還包括:當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送所述第二視頻 數(shù)據(jù)幀和所述第二視頻數(shù)據(jù)幀處理指令之前,壓縮所述第二視頻數(shù)據(jù)幀;則向所述客戶端 發(fā)送所述第二視頻數(shù)據(jù)幀,具體為向所述客戶端發(fā)送壓縮后的第二視頻數(shù)據(jù)幀。
[0035] 結(jié)合本發(fā)明第三方面,或者第三方面的第一至第四種任一可能的實(shí)施方式,在第 五種可能的實(shí)施方式中,還包括:所述截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù) 據(jù)幀和第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端的視頻數(shù)據(jù)幀處理能力;所述客戶 端的視頻數(shù)據(jù)幀處理能力包括視頻數(shù)據(jù)幀解碼能力,以根據(jù)所述視頻數(shù)據(jù)幀解碼能力,確 定所述客戶端是否支持視頻數(shù)據(jù)幀解碼。
[0036] 結(jié)合本發(fā)明第三方面的第一、第二或第五種可能的實(shí)施方式,在第六種可能的實(shí) 施方式中,還包括:根據(jù)所述客戶端的視頻數(shù)據(jù)幀處理能力,確定所述客戶端支持視頻數(shù)據(jù) 幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令之前,獲取 所述客戶端支持的視頻數(shù)據(jù)幀的視頻編碼格式信息,以根據(jù)所述視頻編碼格式信息,確定 所述客戶端是否支持所述第一視頻數(shù)據(jù)幀的視頻編碼格式。
[0037] 結(jié)合本發(fā)明第三方面,或者第三方面的第一至第六種任一可能的實(shí)施方式,在第 七種可能的實(shí)施方式中,所述截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第 一視頻數(shù)據(jù)幀處理指令,具體為所述虛擬顯示驅(qū)動截獲所述第一視頻數(shù)據(jù)幀和所述第一視 頻處理指令。
[0038] 第四方面,本發(fā)明實(shí)施例公開了一種視頻重定向系統(tǒng),包括客戶端和本發(fā)明實(shí)施 例第二方面任一所述的服務(wù)器。
[0039] 第五方面,本發(fā)明實(shí)施例公開了一種視頻重定向系統(tǒng),包括客戶端和本發(fā)明實(shí)施 例第三方面任一所述的服務(wù)器。
[0040] 第六方面,本發(fā)明實(shí)施例公開了一種計(jì)算機(jī)可讀存儲介質(zhì),當(dāng)計(jì)算機(jī)執(zhí)行所述計(jì) 算機(jī)可讀存儲介質(zhì)時(shí),所述計(jì)算機(jī)執(zhí)行如下步驟:截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的 第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令;
[0041] 當(dāng)客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一 視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所述第二視頻 數(shù)據(jù)幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后 處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀或?yàn)樗龅?一視頻數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀;
[0042] 當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第 二視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對所述第二視 頻數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視 頻數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù) 幀為所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù)幀處理指 令;當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為解碼后的第 一視頻數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀 后處理指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
[0043] 結(jié)合本發(fā)明第六方面,在第一種可能的實(shí)施方式中,還包括:當(dāng)所述客戶端支持視 頻數(shù)據(jù)幀解碼時(shí),并且所述客戶端不支持所述視頻播放器向所述虛擬顯示驅(qū)動發(fā)送的所述 第一視頻數(shù)據(jù)幀的視頻編碼格式時(shí),將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得 所述第二視頻數(shù)據(jù)幀;其中,所述第二視頻數(shù)據(jù)幀的視頻編碼格式為所述客戶端支持的視 頻編碼格式。
[0044] 結(jié)合本發(fā)明第六方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式中,所 述將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀,具體包括:所 述虛擬顯示驅(qū)動將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù) 幀。
[0045] 結(jié)合本發(fā)明第六方面,在第三種可能的實(shí)施方式中,還包括當(dāng)所述客戶端不支持 視頻數(shù)據(jù)幀解碼時(shí),并且當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),向所述客戶端 發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令之前,根據(jù)所述第一視頻數(shù)據(jù)幀處理指令 中的所述視頻數(shù)據(jù)幀解碼指令對所述第一視頻數(shù)據(jù)幀進(jìn)行解碼,以獲得所述第二視頻數(shù)據(jù) 幀。
[0046] 結(jié)合本發(fā)明第六方面或第六方面的第三種可能的實(shí)施方式,在第四種可能的實(shí)施 方式中,還包括:當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送所述第二視頻 數(shù)據(jù)幀和所述第二視頻數(shù)據(jù)幀處理指令之前,壓縮所述第二視頻數(shù)據(jù)幀;則向所述客戶端 發(fā)送第二視頻數(shù)據(jù)幀,具體為向所述客戶端發(fā)送壓縮后的第二視頻數(shù)據(jù)幀。
[0047] 結(jié)合本發(fā)明第六方面,或者第六方面的第一至第四種任一可能的實(shí)施方式,在第 五種可能的實(shí)施方式中,還包括:所述截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù) 據(jù)幀和第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端的視頻數(shù)據(jù)幀處理能力;所述客戶 端的視頻數(shù)據(jù)幀處理能力包括視頻數(shù)據(jù)幀解碼能力,以根據(jù)所述視頻數(shù)據(jù)幀解碼能力,確 定所述客戶端是否支持視頻數(shù)據(jù)幀解碼。
[0048] 結(jié)合本發(fā)明第六方面的第一、第二或第五種可能的實(shí)施方式,在第六種可能的實(shí) 施方式中,還包括:根據(jù)所述客戶端的視頻數(shù)據(jù)幀處理能力,確定所述客戶端支持視頻數(shù)據(jù) 幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令之前,獲取 所述客戶端支持的視頻數(shù)據(jù)幀的視頻編碼格式信息,以根據(jù)所述視頻編碼格式信息,確定 所述客戶端是否支持所述第一視頻數(shù)據(jù)幀的視頻編碼格式。
[0049] 結(jié)合本發(fā)明第六方面,或者本發(fā)明第六方面的第一至第六種任一可能的實(shí)施方 式,在第七種可能的實(shí)施方式中,所述截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù) 據(jù)幀和第一視頻數(shù)據(jù)幀處理指令,具體為所述虛擬顯示驅(qū)動截獲所述第一視頻數(shù)據(jù)幀和所 述第一視頻處理指令。
[0050] 本發(fā)明實(shí)施例通過截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù) 據(jù)幀處理指令,并且根據(jù)客戶端是否支持視頻數(shù)據(jù)幀解碼,將視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀解碼 指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理,或者將解碼 后的視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理, 從而可以在客戶端實(shí)現(xiàn)視頻數(shù)據(jù)幀后處理,保證用戶視頻體驗(yàn)。同時(shí)只要服務(wù)器側(cè)視頻播 放器支持視頻重定向功能即可實(shí)現(xiàn)本發(fā)明,不需要依賴某一種特定的視頻播放器。
【專利附圖】
【附圖說明】
[0051] 為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中 所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí) 施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖 獲得其他的附圖。
[0052] 圖1為本發(fā)明實(shí)施例應(yīng)用場景系統(tǒng)示意圖;
[0053] 圖2為本發(fā)明實(shí)施例遠(yuǎn)程桌面服務(wù)器結(jié)構(gòu)示意圖;
[0054] 圖3為本發(fā)明實(shí)施例視頻數(shù)據(jù)幀后處理流程圖;
[0055] 圖4a和圖4b為本發(fā)明實(shí)施例視頻數(shù)據(jù)幀后處理效果圖;
[0056] 圖5為本發(fā)明實(shí)施例視頻數(shù)據(jù)幀呈現(xiàn)效果圖;
[0057] 圖6a、6b、6c、6d為本發(fā)明實(shí)施例虛擬桌面結(jié)構(gòu)示意圖;
[0058] 圖7為本發(fā)明實(shí)施例視頻重定向流程圖;
[0059] 圖8為本發(fā)明實(shí)施例服務(wù)器結(jié)構(gòu)示意圖;
[0060] 圖9為本發(fā)明實(shí)施例系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0061] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā) 明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施 例,都屬于本發(fā)明保護(hù)的范圍。
[0062] 遠(yuǎn)程桌面環(huán)境中,客戶端發(fā)起視頻播放請求,服務(wù)器根據(jù)客戶端的視頻播放請求, 通過視頻播放器加載視頻文件,將視頻文件的視頻流傳輸?shù)娇蛻舳?,這一過程稱為視頻重 定向。本發(fā)明實(shí)施例中的服務(wù)器可以為普通個(gè)人計(jì)算機(jī)或其他終端,也可以為商業(yè)服務(wù)器 等,在這里并不具體限定,本發(fā)明實(shí)施例以向客戶端提供基于Windows?操作系統(tǒng)平臺的 遠(yuǎn)程桌面服務(wù)為例對發(fā)明方案進(jìn)行詳細(xì)描述。但是本發(fā)明方案并不僅限于你 indows?操 作系統(tǒng),根據(jù)本發(fā)明方案,同樣可以擴(kuò)展到其他常見的系統(tǒng)平臺,如Linux?操作系統(tǒng)等。 [0063] 本發(fā)明實(shí)施例公開了視頻重定向的方法,應(yīng)用于遠(yuǎn)程桌面場景。遠(yuǎn)程桌面場景通 常由本地計(jì)算機(jī)和遠(yuǎn)程計(jì)算機(jī)組成。本地計(jì)算機(jī)通過訪問遠(yuǎn)程計(jì)算機(jī),將遠(yuǎn)程計(jì)算機(jī)桌面 傳送到本地計(jì)算機(jī)。本地計(jì)算機(jī),即本發(fā)明實(shí)施例中的客戶端;遠(yuǎn)程計(jì)算機(jī),即本發(fā)明實(shí)施 例中的服務(wù)器。本發(fā)明實(shí)施例中的視頻重定向是指將服務(wù)器上的視頻文件的視頻數(shù)據(jù)流傳 送到客戶端。其中一種遠(yuǎn)程桌面場景為虛擬桌面基礎(chǔ)架構(gòu)場景,但是本發(fā)明并不局限于圖1 所示架構(gòu),本發(fā)明方案可以應(yīng)用于其他用于傳送遠(yuǎn)程視頻數(shù)據(jù)到客戶端的場景。虛擬桌面 基礎(chǔ)架構(gòu)場景如圖1所示,本實(shí)施場景僅是一種示例性說明,只是給出了與本發(fā)明實(shí)施例 相關(guān)的組成部分,但是圖1并不是對本發(fā)明應(yīng)用的具體限定。圖1中左側(cè)是虛擬桌面的客 戶端,客戶端的設(shè)備形式可以是普通計(jì)算機(jī)l〇la、平板電腦101b、智能手機(jī)101c等。它們 通過網(wǎng)絡(luò)102使用遠(yuǎn)程桌面協(xié)議103訪問遠(yuǎn)程桌面服務(wù)。服務(wù)器204a. ... 204η提供了遠(yuǎn) 程桌面的載體,用戶的虛擬桌面(Virtual Desktop)以虛擬機(jī)205a、205b. ... 205η的形式 運(yùn)行于服務(wù)器上。虛擬桌面管理系統(tǒng)106,用于提供用戶的客戶端與虛擬機(jī)的映射等功能。 客戶端首先連接到虛擬桌面管理系統(tǒng)106,獲取用戶的虛擬機(jī)地址,進(jìn)而連接到虛擬機(jī),虛 擬桌面管理系統(tǒng)106可以為服務(wù)器,也可以為普通個(gè)人計(jì)算機(jī)等,本發(fā)明對此不作具體限 定。用戶通過客戶端訪問服務(wù)器上分配給該用戶的虛擬桌面(即虛擬機(jī)),該虛擬桌面將用 戶訪問的內(nèi)容傳輸?shù)接脩舻目蛻舳诉M(jìn)行顯示。
[0064] 以服務(wù)器204a為例,硬件結(jié)構(gòu)和軟件結(jié)構(gòu)是虛擬桌面基礎(chǔ)架構(gòu)中最重要的組件, 它的典型結(jié)構(gòu)如圖2所示。服務(wù)器204a中的典型結(jié)構(gòu)包括3個(gè)部分,分別為硬件平臺 300、虛擬化平臺(也可以稱為Hypervisor)301和虛擬機(jī)執(zhí)行空間302。硬件平臺300中 可以包括服務(wù)器物理結(jié)構(gòu)中的硬盤310、中央處理器311、網(wǎng)絡(luò)接口卡312和存儲器313。 Hypervisor301和虛擬機(jī)執(zhí)行空間302分別提供了虛擬機(jī)的硬件平臺和軟件平臺。
[0065] Hypervisor 包含了虛擬機(jī)監(jiān)視器 320a、320b. ... 320n。Hypervisor 是物理硬件和 虛擬機(jī)之間的中間層,負(fù)責(zé)協(xié)調(diào)各個(gè)虛擬機(jī)對硬件平臺的訪問。虛擬機(jī)監(jiān)視器包括實(shí)現(xiàn)虛 擬機(jī)的虛擬硬件平臺。圖2中,虛擬機(jī)監(jiān)視器320a中包含虛擬硬件平臺321a,虛擬硬件平 臺中包含了虛擬出來的存儲器322,中央處理器323,硬盤324,顯卡325和網(wǎng)絡(luò)接口卡326 等。虛擬機(jī)執(zhí)行空間302中運(yùn)行了多個(gè)虛擬機(jī)205a、205b. ... 205η。虛擬機(jī)205a的軟件 系統(tǒng)運(yùn)行在虛擬機(jī)監(jiān)視器320a提供的虛擬硬件平臺321a上,其他虛擬機(jī)的軟件系統(tǒng)也運(yùn) 行在對應(yīng)的虛擬機(jī)監(jiān)視器的虛擬硬件平臺上??蛻舨僮飨到y(tǒng)330運(yùn)行在虛擬機(jī)205a中,客 戶操作系統(tǒng)330包含了一個(gè)設(shè)備驅(qū)動層331,設(shè)備驅(qū)動層331安裝了虛擬顯示驅(qū)動334、網(wǎng) 絡(luò)接口卡驅(qū)動336等驅(qū)動程序。虛擬機(jī)205a中包括視頻播放器332。其中,客戶操作系統(tǒng) 330可以為微軟?公司提供的Windows?操作系統(tǒng)平臺。
[0066] 如圖2所示,用戶使用客戶端101a登陸到虛擬機(jī)205a觀看視頻時(shí),比如觀看優(yōu)酷 ⑧網(wǎng)絡(luò)視頻,或者虛擬機(jī)205a本地視頻文件時(shí),通過視頻播放器332,加載視頻文件。用戶 使用客戶端l〇la登陸到虛擬機(jī)205a時(shí),向虛擬機(jī)205a提供客戶端101a的視頻數(shù)據(jù)幀處 理能力,其中,視頻數(shù)據(jù)幀處理能力包括視頻數(shù)據(jù)幀解碼能力,還向虛擬機(jī)205a提供客戶 端l〇la支持的視頻數(shù)據(jù)幀的視頻編碼格式信息,比如支持H. 264、AVI和FLV等視頻編碼格 式的視頻文件。本發(fā)明實(shí)施例以觀看本地視頻為例,通過桌面協(xié)議服務(wù)端335接收到來自 客戶端101a的視頻播放請求,視頻播放器332根據(jù)該視頻播放請求,加載視頻文件。視頻 播放器332對加載的視頻文件解復(fù)用獲得視頻數(shù)據(jù)幀。視頻播放器332在初始化時(shí)需要確 定虛擬機(jī)205a是否支持視頻硬件加速功能,視頻播放器332向虛擬顯示驅(qū)動334發(fā)送視頻 硬件加速能力查詢請求。視頻硬件加速是指利用計(jì)算機(jī)硬件代替視頻播放器的軟件算法對 視頻數(shù)據(jù)幀進(jìn)行處理,具體可以包括對視頻數(shù)據(jù)幀進(jìn)行解碼和視頻數(shù)據(jù)幀后處理。
[0067] 其中關(guān)于視頻數(shù)據(jù)幀后處理,本實(shí)施例中以Mircosoft?的視頻硬件加速 (DirectX? Video Acceleration,簡稱為DXVA)為例,對視頻數(shù)據(jù)巾貞后處理及經(jīng)視頻數(shù)據(jù) 幀后處理后的視頻數(shù)據(jù)幀呈現(xiàn)進(jìn)行描述。DXVA不僅僅提供視頻數(shù)據(jù)幀解碼處理,還包括視 頻數(shù)據(jù)幀后處理,比如圖像縮放、色彩空間轉(zhuǎn)換和反交錯(cuò)等。如圖3所示,DXVA為視頻數(shù)據(jù) 幀后處理流程圖。DXVA可以對主數(shù)據(jù)流和15路分?jǐn)?shù)據(jù)流進(jìn)行處理,將主數(shù)據(jù)流進(jìn)行噪聲 過濾、反交錯(cuò)處理、細(xì)節(jié)過濾和色彩空間轉(zhuǎn)換后,與經(jīng)過色彩空間轉(zhuǎn)換后的分?jǐn)?shù)據(jù)流進(jìn)行混 合,將混合后的視頻數(shù)據(jù)流進(jìn)行圖像調(diào)整,其中圖像調(diào)整包括亮度、對比度、飽和度調(diào)整等。 將經(jīng)過圖像調(diào)整后的視頻數(shù)據(jù)流進(jìn)行圖像縮放,從而可以調(diào)整圖像大小。將經(jīng)圖像縮放處 理后的數(shù)據(jù)進(jìn)行色彩空間轉(zhuǎn)換,從而使視頻數(shù)據(jù)流進(jìn)行視頻數(shù)據(jù)幀呈現(xiàn)。其中,顏色空間轉(zhuǎn) 換,包括由RGB色彩空間轉(zhuǎn)換至YUV色彩空間,或者由YUV色彩空間轉(zhuǎn)換至RGB色彩空間, 其中RGB分別表示紅、綠和藍(lán)色,YUV分別表示明亮度、色度和濃度,本發(fā)明實(shí)施例在此不再 贅述。
[0068] 圖3描述了視頻后處理的過程。實(shí)際應(yīng)用中不一定所有的功能都會用到。實(shí)際測 試中發(fā)現(xiàn),多數(shù)播放器如Microsoft? Media Player,暴風(fēng)影音?,QQ?影音播放器等默 認(rèn)只使用了圖像縮放功能,用以將解碼后的視頻數(shù)據(jù)幀從原始大小縮放到播放窗口大小。 本發(fā)明實(shí)施例中進(jìn)行視頻數(shù)據(jù)幀后處理具體以圖像縮放為例,將解碼后的視頻數(shù)據(jù)幀進(jìn)行 圖像縮放,將原始圖像大小調(diào)整以適合在顯示器上呈現(xiàn)。具體效果如圖4a所示。視頻數(shù)據(jù) 幀后處理還可以包括透明度混合,如圖4b所示。本發(fā)明實(shí)施例中視頻數(shù)據(jù)幀后處理還可以 包括亮度、對比度和飽和度調(diào)整。從而使客戶端呈現(xiàn)給用戶更好的視頻體驗(yàn)效果。
[0069] 將解碼后的視頻數(shù)據(jù)幀進(jìn)行視頻數(shù)據(jù)幀后處理,根據(jù)視頻數(shù)據(jù)幀呈現(xiàn)指令,將經(jīng) 視頻數(shù)據(jù)幀后處理的視頻數(shù)據(jù)幀發(fā)送到顯卡,通過顯示器進(jìn)行呈現(xiàn)。其中,視頻數(shù)據(jù)幀呈 現(xiàn)指令攜帶呈現(xiàn)參數(shù),呈現(xiàn)參數(shù)包括要呈現(xiàn)的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀的呈現(xiàn)區(qū)域。如圖 5所示,經(jīng)過視頻數(shù)據(jù)幀后處理之后形成的圖像,包括需要呈現(xiàn)的4個(gè)區(qū)域,分別表示為①、 ②、③和④,以及桌面圖像,在顯示器上呈現(xiàn),其中,桌面圖像有一處區(qū)域用于對用戶呈現(xiàn) "顯示設(shè)定、音頻設(shè)定和字幕設(shè)定"選項(xiàng),在呈現(xiàn)視頻時(shí),同時(shí)需要呈現(xiàn)"顯示設(shè)定、音頻設(shè)定 和字幕設(shè)定"選項(xiàng)區(qū)域,而該"顯示設(shè)定、音頻設(shè)定和字幕設(shè)定"選項(xiàng)區(qū)域與①、②、③和④ 四個(gè)呈現(xiàn)區(qū)域圍成的中間區(qū)域?qū)?yīng)。因此,①、②、③和④四個(gè)呈現(xiàn)區(qū)域圍成的中間區(qū)域?qū)?應(yīng)的視頻數(shù)據(jù)幀不需要呈現(xiàn),構(gòu)成①、②、③和④四個(gè)呈現(xiàn)區(qū)域圍成的中間區(qū)域的視頻數(shù)據(jù) 幀中包含的視頻數(shù)據(jù)幀呈現(xiàn)參數(shù)用于確認(rèn)呈現(xiàn)區(qū)域,呈現(xiàn)參數(shù)用于定義不呈現(xiàn)該視頻數(shù)據(jù) 幀。從而使視頻畫面與桌面融合為一體,為用戶提供更好的視頻觀看體驗(yàn)。本發(fā)明實(shí)施例 中客戶端101a進(jìn)行視頻數(shù)據(jù)幀后處理原理與此相同,不再贅述。
[0070] 在本發(fā)明實(shí)施例中,這里虛擬機(jī)205a的硬件,本領(lǐng)域技術(shù)人員可以理解,并不是 虛擬機(jī)205a的真實(shí)物理硬件,而是通過虛擬機(jī)監(jiān)視器320a提供的虛擬硬件。視頻播放器 332向虛擬顯示驅(qū)動334查詢虛擬機(jī)205a的視頻硬件加速能力,可以通過調(diào)用GetCaps函 數(shù)進(jìn)行查詢,或者,可以通過調(diào)用CreateDevice或CreateDecodeDevice函數(shù)創(chuàng)建硬件加速 設(shè)備,確定虛擬機(jī)205a是否支持視頻硬件加速功能。當(dāng)視頻播放器332啟動向虛擬顯示驅(qū) 動334查詢虛擬機(jī)205a的視頻硬件加速能力時(shí),虛擬顯示驅(qū)動334向視頻播放器332返回 支持視頻硬件加速能力的查詢請求響應(yīng),視頻播放器332根據(jù)該查詢請求響應(yīng)確定虛擬機(jī) 205a支持的視頻硬件加速能力,其中,視頻硬件加速能力包括視頻數(shù)據(jù)幀解碼能力和視頻 數(shù)據(jù)幀后處理能力。
[0071] 視頻播放器332向虛擬顯示驅(qū)動334發(fā)送視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令,如 圖6a所示,一種實(shí)現(xiàn)方式為虛擬顯示驅(qū)動334截獲視頻播放器332發(fā)送的視頻數(shù)據(jù)幀和視 頻數(shù)據(jù)幀處理指令。
[0072] 下面具體描述虛擬顯示驅(qū)動334截獲視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的過程。 具體地,虛擬機(jī)205a中的視頻播放器332根據(jù)對應(yīng)的客戶端101a發(fā)送的視頻播放請求,視 頻播放器332加載視頻文件之后,開啟視頻硬件加速,向虛擬顯示驅(qū)動334發(fā)送視頻數(shù)據(jù)幀 和視頻數(shù)據(jù)幀處理指令。加載視頻文件后,對加載后的視頻文件,即對視頻數(shù)據(jù)流解復(fù)用, 獲得其中的視頻數(shù)據(jù)幀。具體地,就視頻播放而言,在DirectX?運(yùn)行庫333中定義了視頻 硬件加速接口,通過視頻播放器332調(diào)用DirectX?運(yùn)行庫333啟動視頻硬件加速,通知虛 擬顯示驅(qū)動334根據(jù)視頻數(shù)據(jù)幀處理指令對視頻播放器332發(fā)送的視頻數(shù)據(jù)幀進(jìn)行處理。 當(dāng)視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令發(fā)送至虛擬顯示驅(qū)動334時(shí),虛擬顯示驅(qū)動334截獲 視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令。如圖6a所示,在 1Windows?操作系統(tǒng)平臺,虛擬顯示 驅(qū)動為Wlnd〇WS?Display Driver Model (簡稱WDDM顯示驅(qū)動模型)或者為'Windows? XP Display Driver Model (簡稱XPDM顯示驅(qū)動模型)。具體地,WDDM或XPDM顯示驅(qū)動模 型均包括Display Driver和Miniport Driver兩部分模塊。本發(fā)明實(shí)施例中,一種實(shí)現(xiàn)方 案為虛擬顯示驅(qū)動的Display Driver模塊截獲視頻數(shù)據(jù)巾貞和視頻數(shù)據(jù)巾貞處理指令。具體 地,一種實(shí)現(xiàn)方案為WDDM或XPDM顯示驅(qū)動模型在Display Driver模塊中定義視頻硬件加 速接口,當(dāng)視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令通過該接口時(shí),截獲該視頻數(shù)據(jù)幀和視頻數(shù) 據(jù)幀處理指令。
[0073] 本發(fā)明實(shí)施例截獲視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的另一種實(shí)施方式,如圖6b 所示,虛擬機(jī)205a中的視頻播放器332根據(jù)對應(yīng)的客戶端101a發(fā)送的視頻播放請求,視頻 播放器332加載視頻文件之后,開啟視頻硬件加速,向虛擬顯示驅(qū)動334發(fā)送視頻數(shù)據(jù)幀和 視頻數(shù)據(jù)幀處理指令。視頻播放器332加載視頻文件后,對加載后的視頻文件,即對視頻數(shù) 據(jù)流解復(fù)用,獲得其中的視頻數(shù)據(jù)幀。具體地,就視頻播放而言,在DirectX?運(yùn)行庫333中 定義了視頻硬件加速接口,通過視頻播放器332調(diào)用DirectX?運(yùn)行庫333啟動視頻硬件 加速,通知虛擬顯示驅(qū)動334根據(jù)視頻數(shù)據(jù)幀處理指令對視頻播放器332發(fā)送的視頻數(shù)據(jù) 幀進(jìn)行處理。DirectX?運(yùn)行庫333調(diào)用所述虛擬顯示驅(qū)動334對所述視頻數(shù)據(jù)幀進(jìn)行處 理時(shí),即在視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令通過DirectX?運(yùn)行庫333后,到達(dá)虛擬顯示 驅(qū)動334之前,動態(tài)鏈接庫截獲該視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令。具體地,其中一種動 態(tài)鏈接庫實(shí)現(xiàn)方式為采用Hook技術(shù)截獲DirectX?運(yùn)行庫333對虛擬顯示驅(qū)動334的調(diào) 用,需要實(shí)現(xiàn)一個(gè)對虛擬顯示驅(qū)動334H 〇〇k的動態(tài)鏈接庫文件(dll文件),并在注冊表中將 其設(shè)為最先加載,以此攔截DirectX=?運(yùn)行庫333對虛擬顯示驅(qū)動334的調(diào)用,從而實(shí)現(xiàn)視 頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的截獲。
[0074] 本發(fā)明實(shí)施例截獲視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的另一種實(shí)施方式,如圖6c 所示,虛擬機(jī)205a中的視頻播放器332根據(jù)對應(yīng)的客戶端101a發(fā)送的視頻播放請求,視頻 播放器332加載視頻文件之后,開啟視頻硬件加速,向虛擬顯示驅(qū)動334發(fā)送視頻數(shù)據(jù)幀和 視頻數(shù)據(jù)幀處理指令。視頻播放器332加載視頻文件后,對加載后的視頻文件,即對視頻數(shù) 據(jù)流解復(fù)用,獲得其中的視頻數(shù)據(jù)幀。具體地,就視頻播放而言,在DirectX?運(yùn)行庫333中 定義了視頻硬件加速接口,通過視頻播放器332調(diào)用DirectX?運(yùn)行庫333向虛擬顯示驅(qū) 動334發(fā)送視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令,啟動視頻硬件加速,通知虛擬顯示驅(qū)動334 對視頻播放器332發(fā)送的視頻數(shù)據(jù)幀進(jìn)行處理。在視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令通過 DirectX?運(yùn)行庫333時(shí),DirectX?運(yùn)行庫截獲該視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令。
[0075] 本發(fā)明實(shí)施例截獲視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的另一種實(shí)施方式,如圖6d 所示,虛擬機(jī)205a中的視頻播放器332根據(jù)對應(yīng)的客戶端101a發(fā)送的視頻播放請求,視頻 播放器332加載視頻文件之后,開啟視頻硬件加速,向虛擬顯示驅(qū)動334發(fā)送視頻數(shù)據(jù)幀和 視頻數(shù)據(jù)幀處理指令。視頻播放器332加載視頻文件后,對加載后的視頻文件,即對視頻數(shù) 據(jù)流解復(fù)用,獲得其中的視頻數(shù)據(jù)幀。具體地,就視頻播放而言,在DirectX?運(yùn)行庫333 中定義了視頻硬件加速接口,視頻播放器332調(diào)用DirectX?運(yùn)行庫333啟動視頻硬件加 速,發(fā)送視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令時(shí),即視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令到達(dá) DirectX?運(yùn)行庫333之前,動態(tài)鏈接庫截獲視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令。為此,需 要實(shí)現(xiàn)一個(gè)對DirectX?運(yùn)行庫333H 〇〇k的動態(tài)鏈接庫文件(dll文件),并在注冊表中將 其設(shè)為最先加載,以此截獲視頻播放器332對DirectX?運(yùn)行庫333的調(diào)用,從而實(shí)現(xiàn)視頻 數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的截獲。
[0076] 在上述圖6a、圖6b、圖6c和圖6d四種截獲視頻播放器332向虛擬顯示驅(qū)動334 發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的方案中,視頻播放器332向虛擬顯示驅(qū)動334 查詢獲知虛擬機(jī)205a支持視頻數(shù)據(jù)幀解碼和視頻數(shù)據(jù)幀后處理,并且獲取客戶端101a支 持視頻數(shù)據(jù)幀解碼和視頻播放器332向虛擬顯示驅(qū)動334發(fā)送的視頻數(shù)據(jù)幀的視頻編碼格 式時(shí),截獲視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令,將截獲的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀發(fā)送到 桌面協(xié)議服務(wù)端335。桌面協(xié)議服務(wù)端335將截獲的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令發(fā) 送到客戶端l〇la。其中,視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處 理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令。由于服務(wù)器204a中的虛擬機(jī)205a并沒有根據(jù)視頻數(shù)據(jù)幀 處理指令對視頻數(shù)據(jù)幀進(jìn)行處理,因此,節(jié)約了服務(wù)器的計(jì)算資源和網(wǎng)絡(luò)傳輸帶寬,充分利 用了客戶端的計(jì)算資源。本實(shí)施例適用于如下場景:截獲視頻播放器332向虛擬顯示驅(qū)動 334發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令;當(dāng)客戶端101a支持視頻數(shù)據(jù)幀解 碼時(shí),向所述客戶端l〇la發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令,以使所述 客戶端101a根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù)據(jù)幀進(jìn)行處理,所述第 一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈 現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀。
[0077] 在上述圖6a、圖6b、圖6c和圖6d四種截獲視頻播放器332向虛擬顯示驅(qū)動334發(fā) 送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的方案中,視頻播放器332向虛擬顯示驅(qū)動334查 詢獲知虛擬機(jī)205a支持視頻數(shù)據(jù)幀解碼和視頻數(shù)據(jù)幀后處理,并且客戶端101a支持視頻 數(shù)據(jù)幀解碼,但是不支持視頻播放器332向虛擬顯示驅(qū)動334發(fā)送的視頻數(shù)據(jù)幀的視頻編 碼格式時(shí),截獲視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令,其中視頻數(shù)據(jù)幀處理指令包括視頻數(shù) 據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,桌面協(xié)議服務(wù)端335接收 截獲的視頻數(shù)據(jù)幀,桌面協(xié)議服務(wù)端335的視頻編解碼模塊根據(jù)視頻數(shù)據(jù)幀解碼指令對所 述視頻數(shù)據(jù)幀進(jìn)行解碼,根據(jù)客戶端l〇la支持的視頻數(shù)據(jù)幀的視頻編碼格式對所述解碼 的視頻數(shù)據(jù)幀進(jìn)行編碼,生成新的視頻數(shù)據(jù)幀解碼指令,所述新的視頻數(shù)據(jù)幀解碼指令包 含重新編碼后的視頻數(shù)據(jù)幀的視頻編碼格式參數(shù)。發(fā)送重新編碼后的視頻數(shù)據(jù)幀和視頻數(shù) 據(jù)幀處理指令到客戶端l〇la,所述視頻數(shù)據(jù)幀處理指令包括、視頻數(shù)據(jù)幀后處理指令、視頻 數(shù)據(jù)幀呈現(xiàn)指令和視頻數(shù)據(jù)幀解碼指令,其中,視頻數(shù)據(jù)幀解碼指令包含重新編碼后的視 頻數(shù)據(jù)幀的視頻編碼格式參數(shù)。從而使得客戶端能夠根據(jù)自身的視頻編碼格式處理能力對 所述重新編碼后的視頻數(shù)據(jù)幀的進(jìn)行解碼。由于服務(wù)器204a中的虛擬機(jī)205a并沒有根據(jù) 視頻數(shù)據(jù)幀后處理指令對視頻數(shù)據(jù)幀進(jìn)行處理,因此節(jié)約了服務(wù)器的計(jì)算資源和網(wǎng)絡(luò)傳輸 帶寬,充分利用了客戶端的計(jì)算資源。本實(shí)施例適用于如下場景:截獲視頻播放器332向虛 擬顯示驅(qū)動334發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令;當(dāng)客戶端101a支持視 頻數(shù)據(jù)幀解碼時(shí),向所述客戶端l〇la發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指 令,以使所述客戶端l〇la根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù)據(jù)幀進(jìn)行 處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理指令和 視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換 獲得的視頻數(shù)據(jù)幀。
[0078] 在另一種實(shí)施方式中,在如圖6a所示的虛擬顯示驅(qū)動334截獲視頻播放器332向 虛擬顯示驅(qū)動334發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的方案中,視頻播放器332向 虛擬顯示驅(qū)動334查詢獲知虛擬機(jī)205a支持視頻數(shù)據(jù)幀解碼和視頻數(shù)據(jù)幀后處理,并且客 戶端101a支持視頻數(shù)據(jù)幀解碼,但是不支持視頻播放器332向虛擬顯示驅(qū)動334發(fā)送的視 頻數(shù)據(jù)幀的視頻編碼格式時(shí),所述虛擬顯示驅(qū)動334中的視頻編解碼模塊根據(jù)截獲的視頻 數(shù)據(jù)幀解碼指令對所述截獲的視頻數(shù)據(jù)幀進(jìn)行解碼,根據(jù)客戶端l〇la支持的視頻數(shù)據(jù)幀 的視頻編碼格式對所述解碼的視頻數(shù)據(jù)幀進(jìn)行編碼,生成新的視頻數(shù)據(jù)幀解碼指令,所述 新的視頻數(shù)據(jù)幀解碼指令包含重新編碼后的視頻數(shù)據(jù)幀的視頻編碼格式參數(shù),所述視頻數(shù) 據(jù)幀處理指令包括、視頻數(shù)據(jù)幀后處理指令、視頻數(shù)據(jù)幀呈現(xiàn)指令和視頻數(shù)據(jù)幀解碼指令, 其中,視頻數(shù)據(jù)幀解碼指令包含重新編碼后的視頻數(shù)據(jù)幀的視頻編碼格式參數(shù)。從而使得 客戶端能夠根據(jù)自身的視頻編碼格式處理能力對所述重新編碼后的視頻數(shù)據(jù)幀的進(jìn)行解 碼。桌面協(xié)議服務(wù)端335發(fā)送重新編碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令到客戶端 l〇la,所述視頻數(shù)據(jù)幀處理指令包括、視頻數(shù)據(jù)幀后處理指令、視頻數(shù)據(jù)幀呈現(xiàn)指令和視頻 數(shù)據(jù)幀解碼指令,其中,視頻數(shù)據(jù)幀解碼指令包含重新編碼后的視頻數(shù)據(jù)幀的視頻編碼格 式參數(shù)。從而使得客戶端能夠根據(jù)自身的視頻編碼格式處理能力對所述重新編碼后的視頻 數(shù)據(jù)幀的進(jìn)行解碼。同時(shí)服務(wù)器204a上的虛擬機(jī)205a沒有根據(jù)視頻數(shù)據(jù)幀后處理指令對 視頻數(shù)據(jù)幀進(jìn)行處理,而是由客戶端處理,充分利用了客戶端的計(jì)算資源,同時(shí)節(jié)省了服務(wù) 器的計(jì)算資源。本實(shí)施例適用于如下場景:截獲視頻播放器332向虛擬顯示驅(qū)動334發(fā)送 的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令;當(dāng)客戶端l〇la支持視頻數(shù)據(jù)幀解碼時(shí),向 所述客戶端l〇la發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令,以使所述客戶端 l〇la根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù)據(jù)幀進(jìn)行處理,所述第一視頻數(shù) 據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令, 所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀。
[0079] 在上述圖6a、圖6b、圖6c和圖6d四種截獲視頻播放器332向虛擬顯示驅(qū)動334發(fā) 送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的方案中,當(dāng)客戶端l〇la不支持視頻數(shù)據(jù)幀解碼, 并且視頻播放器332向虛擬顯示驅(qū)動334查詢獲知虛擬機(jī)205a支持視頻數(shù)據(jù)幀后處理但 不支持視頻數(shù)據(jù)幀解碼時(shí),視頻播放器332加載視頻文件后,對視頻文件解復(fù)用,獲取視頻 數(shù)據(jù)幀,視頻播放器332對所述視頻數(shù)據(jù)幀進(jìn)行解碼,獲得解碼后的視頻數(shù)據(jù)幀,視頻播放 器332向虛擬顯示驅(qū)動334發(fā)送解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令;其中視頻數(shù) 據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令。截獲視頻播放器332發(fā) 送的解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令,桌面協(xié)議服務(wù)端335發(fā)送解碼后的視頻 數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令至客戶端l〇la。為減少網(wǎng)絡(luò)傳輸帶寬,桌面協(xié)議服務(wù)端335 發(fā)送解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令之前,可以壓縮解碼后的視頻數(shù)據(jù)幀,具 體可以由桌面協(xié)議服務(wù)端335中的壓縮模塊來實(shí)現(xiàn)。由于服務(wù)器204a中的虛擬機(jī)205a并 沒有根據(jù)視頻數(shù)據(jù)幀后處理指令對視頻數(shù)據(jù)幀進(jìn)行處理,因此節(jié)約了服務(wù)器的計(jì)算資源和 網(wǎng)絡(luò)傳輸帶寬,充分利用了客戶端的計(jì)算資源。本實(shí)施例適用如下場景:截獲視頻播放器 332向虛擬顯示驅(qū)動334發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令;當(dāng)所述客戶 端l〇la不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端101a發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù) 據(jù)幀處理指令,以使所述客戶端l〇la根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對所述第二視頻 數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視頻 數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀 為所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù)幀處理指令。
[0080] 在另一種實(shí)施方式中,在如圖6a所示的虛擬顯示驅(qū)動334截獲視頻播放器332向 虛擬顯示驅(qū)動334發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的方案中,當(dāng)客戶端101a不支 持視頻數(shù)據(jù)幀解碼,并且視頻播放器332向虛擬顯示驅(qū)動334查詢獲知虛擬機(jī)205a支持 視頻數(shù)據(jù)幀后處理但不支持視頻數(shù)據(jù)幀解碼時(shí),視頻播放器332加載視頻文件后,對視頻 文件解復(fù)用,獲取視頻數(shù)據(jù)幀,視頻播放器332對所述視頻數(shù)據(jù)幀進(jìn)行解碼,獲得解碼后的 視頻數(shù)據(jù)幀,視頻播放器332向虛擬顯示驅(qū)動334發(fā)送解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀 處理指令;其中視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令。 截獲視頻播放器332發(fā)送的解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令,桌面協(xié)議服務(wù)端 335發(fā)送解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令至客戶端101a。為減少網(wǎng)絡(luò)傳輸帶 寬,虛擬顯示驅(qū)動334截獲解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令,可以壓縮解碼后 的視頻數(shù)據(jù)幀,具體可以由虛擬顯示驅(qū)動334中的壓縮模塊來實(shí)現(xiàn)。由于服務(wù)器204a中的 虛擬機(jī)205a并沒有根據(jù)視頻數(shù)據(jù)幀后處理指令對視頻數(shù)據(jù)幀進(jìn)行處理,因此節(jié)約了服務(wù) 器的計(jì)算資源和網(wǎng)絡(luò)傳輸帶寬,充分利用了客戶端的計(jì)算資源。本實(shí)施例適用如下場景: 截獲視頻播放器332向虛擬顯示驅(qū)動334發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指 令;當(dāng)所述客戶端l〇la不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端101a發(fā)送第二視頻數(shù)據(jù)幀 和第二視頻數(shù)據(jù)幀處理指令,以使所述客戶端l〇la根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對 所述第二視頻數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處 理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第 二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù) 幀處理指令。
[0081] 在上述圖6a圖6b、圖6c和圖6d四種截獲視頻播放器332向虛擬顯示驅(qū)動334 發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令的方案中,當(dāng)客戶端l〇la不支持視頻數(shù)據(jù)幀解 碼,并且視頻播放器332向虛擬顯示驅(qū)動334查詢獲知虛擬機(jī)205a支持視頻數(shù)據(jù)幀解碼和 視頻數(shù)據(jù)幀后處理時(shí),視頻播放器332加載視頻文件后,對視頻文件解復(fù)用,獲取視頻數(shù)據(jù) 幀,視頻播放器332向虛擬顯示驅(qū)動334發(fā)送視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令;其中視 頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指 令。截獲視頻播放器332發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令,桌面協(xié)議服務(wù)端335 根據(jù)視頻數(shù)據(jù)幀處理指令中的視頻數(shù)據(jù)幀解碼指令對視頻數(shù)據(jù)幀進(jìn)行解碼,桌面協(xié)議服務(wù) 端335發(fā)送解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令至客戶端101a,其中視頻數(shù)據(jù)幀處 理指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令。為減少網(wǎng)絡(luò)傳輸帶寬,桌面協(xié) 議服務(wù)端335可以壓縮解碼后的視頻數(shù)據(jù)幀,具體可以由桌面協(xié)議服務(wù)端335中的壓縮模 塊來實(shí)現(xiàn),也可以由虛擬顯示驅(qū)動334中的壓縮模塊來實(shí)現(xiàn),然后由桌面協(xié)議服務(wù)端335發(fā) 送壓縮的解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令至客戶端l〇la。由于服務(wù)器204a中 的虛擬機(jī)205a并沒有根據(jù)視頻數(shù)據(jù)幀后處理指令對視頻數(shù)據(jù)幀進(jìn)行處理,因此節(jié)約了服 務(wù)器的計(jì)算資源和網(wǎng)絡(luò)傳輸帶寬,充分利用了客戶端的計(jì)算資源。本實(shí)施例適用如下場景: 截獲視頻播放器332向虛擬顯示驅(qū)動334發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指 令;當(dāng)所述客戶端l〇la不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端101a發(fā)送第二視頻數(shù)據(jù)幀 和第二視頻數(shù)據(jù)幀處理指令,以使所述客戶端l〇la根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對 所述第二視頻數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處 理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第 二視頻數(shù)據(jù)幀為解碼后的所述第一視頻數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù) 據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀后處理指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
[0082] 在另一種實(shí)施方式中,在如圖6a所示的方案中,當(dāng)客戶端101a不支持視頻數(shù)據(jù)幀 解碼,并且視頻播放器332向虛擬顯示驅(qū)動334查詢獲知虛擬機(jī)205a支持視頻數(shù)據(jù)幀解碼 和視頻數(shù)據(jù)幀后處理時(shí),視頻播放器332加載視頻文件后,對視頻文件解復(fù)用,獲取視頻數(shù) 據(jù)幀,視頻播放器332向虛擬顯示驅(qū)動334發(fā)送視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令;其中 視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn) 指令。虛擬顯示驅(qū)動334截獲視頻播放器332發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令, 根據(jù)視頻數(shù)據(jù)幀處理指令中的視頻數(shù)據(jù)幀解碼指令對視頻數(shù)據(jù)幀進(jìn)行解碼,桌面協(xié)議服務(wù) 端335發(fā)送解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令至客戶端101a,其中視頻數(shù)據(jù)幀處 理指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令。為減少網(wǎng)絡(luò)傳輸帶寬,虛擬顯 示驅(qū)動334將截獲視頻數(shù)據(jù)幀解碼后,可以壓縮解碼后的視頻數(shù)據(jù)幀,具體可以由虛擬顯 示驅(qū)動334中的壓縮模塊來實(shí)現(xiàn),也可以由桌面協(xié)議服務(wù)端335中的壓縮模塊來實(shí)現(xiàn),然后 由桌面協(xié)議服務(wù)端335發(fā)送壓縮的解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令至客戶端 l〇la。由于服務(wù)器204a中的虛擬機(jī)205a并沒有根據(jù)視頻數(shù)據(jù)幀后處理指令對視頻數(shù)據(jù)幀 進(jìn)行處理,因此節(jié)約了服務(wù)器的計(jì)算資源和網(wǎng)絡(luò)傳輸帶寬,充分利用了客戶端的計(jì)算資源。 本實(shí)施例適用如下場景:截獲視頻播放器332向虛擬顯示驅(qū)動334發(fā)送的第一視頻數(shù)據(jù)幀 和第一視頻數(shù)據(jù)幀處理指令;當(dāng)所述客戶端l〇la不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端 l〇la發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令,以使所述客戶端101a根據(jù)所述第 二視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理 指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼 的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為解碼后的所述第一視頻數(shù)據(jù)幀,所述第一視頻數(shù) 據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀后處理指令和所述視頻數(shù)據(jù)幀呈 現(xiàn)指令。
[0083] 本發(fā)明實(shí)施例通過截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù) 據(jù)幀處理指令,并且根據(jù)客戶端是否支持視頻數(shù)據(jù)幀解碼,將視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀解碼 指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理,或者將解碼 后的視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理, 從而可以在客戶端實(shí)現(xiàn)視頻數(shù)據(jù)幀后處理,保證用戶視頻體驗(yàn)。同時(shí)只要服務(wù)器側(cè)視頻播 放器支持視頻重定向功能即可實(shí)現(xiàn)本發(fā)明,不需要依賴某一種特定的視頻播放器。
[0084] 本發(fā)明實(shí)施例一種具體的示例性流程圖,如圖7所示,具體步驟如下:
[0085] 步驟701 :判斷客戶端是否具有視頻數(shù)據(jù)幀解碼能力,并且虛擬機(jī)是否支持視頻 數(shù)據(jù)幀解碼和視頻數(shù)據(jù)幀后處理。
[0086] 當(dāng)客戶端具有視頻數(shù)據(jù)幀解碼能力,并且虛擬機(jī)支持視頻數(shù)據(jù)幀解碼和視頻數(shù)據(jù) 幀后處理時(shí),執(zhí)行步驟702a ;
[0087] 當(dāng)客戶端不具有視頻數(shù)據(jù)幀解碼能力,虛擬機(jī)不支持視頻數(shù)據(jù)幀解碼但支持視頻 數(shù)據(jù)幀后處理,執(zhí)行步驟702b ;
[0088] 當(dāng)客戶端不具有視頻數(shù)據(jù)幀解碼能力,虛擬機(jī)支持視頻數(shù)據(jù)幀解碼和視頻數(shù)據(jù)幀 后處理,執(zhí)行步驟702c。
[0089] 步驟702a :截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處 理指令;視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù) 據(jù)幀呈現(xiàn)指令;
[0090] 步驟703a :判斷客戶端是否支持視頻播放器發(fā)送的視頻數(shù)據(jù)幀的視頻編碼格式;
[0091] 當(dāng)客戶端支持視頻播放器發(fā)送的視頻數(shù)據(jù)幀的視頻編碼格式時(shí),執(zhí)行步驟704a ; 當(dāng)客戶端不支持視頻播放器發(fā)送的視頻數(shù)據(jù)幀的視頻編碼格式時(shí),執(zhí)行步驟704a'。
[0092] 步驟704a :發(fā)送截獲的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令到客戶端;
[0093] 步驟704a' :將所述視頻數(shù)據(jù)幀轉(zhuǎn)換為客戶端支持的視頻編碼格式的視頻數(shù)據(jù)幀。
[0094] 步驟702b :截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的解碼后的視頻數(shù)據(jù)幀、視頻數(shù) 據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令;
[0095] 步驟703B :可選的,步驟702b之后,壓縮截獲的解碼后的視頻數(shù)據(jù)幀;
[0096] 步驟704C :發(fā)送解碼后的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令到客戶端;視頻數(shù)據(jù) 幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令。
[0097] 步驟702c :截獲視頻播放器發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù)據(jù)幀處理指令;視頻數(shù)據(jù) 幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令;
[0098] 步驟703c :根據(jù)視頻數(shù)據(jù)幀解碼指令對所述視頻數(shù)據(jù)幀進(jìn)行解碼。
[0099] 可選地,步驟703c之后,還可以繼續(xù)執(zhí)行步驟703B和704C。
[0100] 圖7所示的流程圖,其具體實(shí)現(xiàn)可以參見各實(shí)施例基于圖6a至圖6d的描述,在此 不再贅述。
[0101] 與上述各實(shí)施例相對應(yīng),本發(fā)明實(shí)施例提供了一種服務(wù)器800,如圖8所示,包括 截獲單元801和發(fā)送單元802。其中,截獲單元801,用于截獲視頻播放器向虛擬顯示驅(qū)動 發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令;
[0102] 發(fā)送單元802,用于當(dāng)客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻 數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第一視頻數(shù)據(jù)幀處理指 令對所述第二視頻數(shù)據(jù)幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指 令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻 數(shù)據(jù)幀或?yàn)樗龅谝灰曨l數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀;
[0103] 發(fā)送單元802,用于當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第 二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第二視頻數(shù)據(jù)幀處理 指令對所述第二視頻數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù) 幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí), 所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視 頻數(shù)據(jù)幀處理指令;當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù) 幀為解碼后的第一視頻數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、 所述視頻數(shù)據(jù)幀后處理指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
[0104] 本發(fā)明實(shí)施例通過截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù) 據(jù)幀處理指令,并且根據(jù)客戶端是否支持視頻數(shù)據(jù)幀解碼,將視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀解碼 指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理,或者將解碼 后的視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理, 從而可以在客戶端實(shí)現(xiàn)視頻數(shù)據(jù)幀后處理,保證用戶視頻體驗(yàn)。同時(shí)只要服務(wù)器側(cè)視頻播 放器支持視頻重定向功能即可實(shí)現(xiàn)本發(fā)明,不需要依賴某一種特定的視頻播放器。
[0105] 進(jìn)一步的,還包括轉(zhuǎn)換單元803,所述轉(zhuǎn)換單元803用于當(dāng)所述客戶端支持視頻數(shù) 據(jù)幀解碼時(shí),并且所述客戶端不支持所述視頻播放器向所述虛擬顯示驅(qū)動發(fā)送的所述第一 視頻數(shù)據(jù)幀的視頻編碼格式時(shí),將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述 第二視頻數(shù)據(jù)幀;其中,所述第二視頻數(shù)據(jù)幀的視頻編碼格式為所述客戶端支持的視頻編 碼格式。一種可能的實(shí)施情況,所述轉(zhuǎn)換單元803具體為所述虛擬顯示驅(qū)動,則所述將所述 第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀,具體包括:所述虛擬顯 示驅(qū)動將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀。
[0106] 本發(fā)明實(shí)施例提供的服務(wù)器800除包括截獲單元801和發(fā)送單元802,還包括解碼 單元804,用于當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),并且當(dāng)所述第一視頻數(shù)據(jù)幀為未解 碼的視頻數(shù)據(jù)幀時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令之前, 根據(jù)所述第一視頻數(shù)據(jù)幀處理指令中的所述視頻數(shù)據(jù)幀解碼指令對所述第一視頻數(shù)據(jù)幀 進(jìn)行解碼,以獲得所述第二視頻數(shù)據(jù)幀。
[0107] 本發(fā)明實(shí)施例提供的服務(wù)器800除包含截獲單元801和發(fā)送單元802外,或服務(wù) 器800除包含截獲單元801、發(fā)送單元802和解碼單元803外,還包括壓縮單元805,所述壓 縮單元805用于當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送所述第二視頻 數(shù)據(jù)幀和所述第二視頻數(shù)據(jù)幀處理指令之前,壓縮所述第二視頻數(shù)據(jù)幀;則向所述客戶端 發(fā)送第二視頻數(shù)據(jù)幀,具體為向所述客戶端發(fā)送壓縮后的第二視頻數(shù)據(jù)幀,從而節(jié)省網(wǎng)絡(luò) 傳輸帶寬。
[0108] 本發(fā)明上述實(shí)施例所述各服務(wù)器800還包括獲取單元806,所述獲取單元806用于 所述截獲單元801截獲所述視頻播放器向所述虛擬顯示驅(qū)動發(fā)送的所述第一視頻數(shù)據(jù)幀 和所述第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端的視頻數(shù)據(jù)幀處理能力;所述客戶 端的視頻數(shù)據(jù)幀處理能力包括視頻數(shù)據(jù)幀解碼能力,以根據(jù)所述視頻數(shù)據(jù)幀解碼能力,確 定所述客戶端是否支持視頻數(shù)據(jù)幀解碼。進(jìn)一步的,所述獲取單元806還根據(jù)所述客戶端 的視頻數(shù)據(jù)幀處理能力,確定所述客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二 視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端支持的視頻數(shù)據(jù)幀的視 頻編碼格式信息,以根據(jù)所述視頻編碼格式信息,確定所述客戶端是否支持所述第一視頻 數(shù)據(jù)幀的視頻編碼格式。
[0109] 本發(fā)明上述實(shí)施例所述服務(wù)器800,所述截獲單元具體為虛擬顯示驅(qū)動,所述虛擬 顯示驅(qū)動截獲所述第一視頻數(shù)據(jù)幀和所述第一視頻處理指令。
[0110] 本發(fā)明實(shí)施例還提供了 一種視頻重定向系統(tǒng)900,包括服務(wù)器800和客戶端1000。 其中,服務(wù)器800用于截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻 數(shù)據(jù)幀處理指令;
[0111] 當(dāng)客戶端1000支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端1000發(fā)送第二視頻數(shù)據(jù)幀 和所述第一視頻數(shù)據(jù)幀處理指令,以使所述客戶端1000根據(jù)所述第一視頻數(shù)據(jù)幀處理指 令對所述第二視頻數(shù)據(jù)幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指 令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻 數(shù)據(jù)幀或?yàn)樗龅谝灰曨l數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀;
[0112] 當(dāng)所述客戶端1000不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端1000發(fā)送第二視頻 數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令,以使所述客戶端1000根據(jù)所述第二視頻數(shù)據(jù)幀處理 指令對所述第二視頻數(shù)據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù) 幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí), 所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視 頻數(shù)據(jù)幀處理指令;當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù) 幀為解碼后的所述第一視頻數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指 令、所述視頻數(shù)據(jù)幀后處理指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
[0113] 客戶端1000用于根據(jù)服務(wù)器800發(fā)送的視頻數(shù)據(jù)幀處理指令對視頻數(shù)據(jù)幀進(jìn)行 處理。
[0114] 本發(fā)明實(shí)施例通過截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的視頻數(shù)據(jù)幀和視頻數(shù) 據(jù)幀處理指令,并且根據(jù)客戶端是否支持視頻數(shù)據(jù)幀解碼,將視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀解碼 指令、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理,或者將解碼 后的視頻數(shù)據(jù)幀、視頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令發(fā)送到客戶端進(jìn)行處理, 從而可以在客戶端實(shí)現(xiàn)視頻數(shù)據(jù)幀后處理,保證用戶視頻體驗(yàn)。同時(shí)只要服務(wù)器側(cè)視頻播 放器支持視頻重定向功能即可實(shí)現(xiàn)本發(fā)明,不需要依賴某一種特定的視頻播放器。
[0115] 關(guān)于本實(shí)施例提供的系統(tǒng)900的細(xì)節(jié)描述可參見服務(wù)器800的描述以及如圖6a、 圖6b、圖6c、圖6d和圖7所示的各實(shí)施例的描述,在此不再贅述。本發(fā)明實(shí)施例中提供的 服務(wù)器800和客戶端1000具體可以為普通的計(jì)算機(jī)、移動終端、工作站或?qū)S梅?wù)器等, 本發(fā)明不作具體限定,具有存儲器和至少一個(gè)中央處理器,所述存儲器與所述至少一個(gè)中 央處理器通過總線相連,存儲器存儲計(jì)算機(jī)指令,所述至少一個(gè)中央處理器用于執(zhí)行存儲 器中的計(jì)算機(jī)指令,同時(shí)也包含通用的外部接口等實(shí)現(xiàn)服務(wù)器功能的一些必要組件。其中, 存儲器中存儲的計(jì)算機(jī)指令的算法可以參照圖7所示流程圖的描述,具體實(shí)現(xiàn)可以參見圖 6a、圖6b、圖6c和圖6d所示的具體實(shí)施例。
[0116] 本發(fā)明實(shí)施例提供的基于虛擬桌面的遠(yuǎn)程桌面架構(gòu),本領(lǐng)域技術(shù)人員可以意識 至IJ,本發(fā)明并不限于本實(shí)施例的所描述的虛擬桌面架構(gòu),對于基于其他類型的虛擬桌面的 遠(yuǎn)程桌面本發(fā)明同樣適用。另外,本發(fā)明并不僅僅適用于基于虛擬桌面的遠(yuǎn)程桌面架構(gòu),同 樣也適用于其他向遠(yuǎn)程客戶端提供視頻數(shù)據(jù)的應(yīng)用場景。
[0117] 本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單 元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟 以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員 可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出 本發(fā)明的范圍。
[0118] 所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、 裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
[0119] 在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所公開的系統(tǒng)、裝置和方法,可以 通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的 劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件 可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或 討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦 合或通信連接,可以是電性,機(jī)械或其它的形式。
[0120] 所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè) 網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目 的。
[0121] 另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以 是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
[0122] 所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以 存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說 對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì) 算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個(gè) 人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。 而前述的存儲介質(zhì)包括:NAS(Network Attached Storage)、U盤、移動硬盤、只讀存儲器 (ROM, Read-Only Memory)、隨機(jī)存取存儲器(RAM, Random Access Memory)、磁碟或者光盤 等各種可以存儲程序代碼的介質(zhì)。
[0123] 以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1. 一種視頻重定向的方法,其特征在于,包括: 截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指 令; 當(dāng)客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻 數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù)據(jù) 幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理 指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀或?yàn)樗龅谝灰?頻數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀; 當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視 頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù) 據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù) 據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為 所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù)幀處理指令;當(dāng) 所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為解碼后的所述第一 視頻數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀后 處理指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
2. 如權(quán)利要求1所述的方法,其特征在于,還包括:當(dāng)所述客戶端支持視頻數(shù)據(jù)幀解碼 時(shí),并且所述客戶端不支持所述視頻播放器向所述虛擬顯示驅(qū)動發(fā)送的所述第一視頻數(shù)據(jù) 幀的視頻編碼格式時(shí),將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻 數(shù)據(jù)幀;其中,所述第二視頻數(shù)據(jù)幀的視頻編碼格式為所述客戶端支持的視頻編碼格式。
3. 如權(quán)利要求2所述的方法,其特征在于,所述將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼 格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀,具體包括:所述虛擬顯示驅(qū)動將所述第一視頻數(shù)據(jù)幀 進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀。
4. 如權(quán)利要求1所述的方法,其特征在于,還包括: 當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),并且當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻 數(shù)據(jù)幀時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令之前,根據(jù)所述 第一視頻數(shù)據(jù)幀處理指令中的所述視頻數(shù)據(jù)幀解碼指令對所述第一視頻數(shù)據(jù)幀進(jìn)行解碼, 以獲得所述第二視頻數(shù)據(jù)幀。
5. 如權(quán)利要求1或4所述的方法,其特征在于,還包括:當(dāng)所述客戶端不支持視頻數(shù)據(jù) 幀解碼時(shí),向所述客戶端發(fā)送所述第二視頻數(shù)據(jù)幀和所述第二視頻數(shù)據(jù)幀處理指令之前, 壓縮所述第二視頻數(shù)據(jù)幀; 則向所述客戶端發(fā)送所述第二視頻數(shù)據(jù)幀,具體為向所述客戶端發(fā)送壓縮后的第二視 頻數(shù)據(jù)幀。
6. 如權(quán)利要求1至5任一所述的方法,其特征在于,還包括:所述截獲視頻播放器向虛 擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端的視 頻數(shù)據(jù)幀處理能力;所述客戶端的視頻數(shù)據(jù)幀處理能力包括視頻數(shù)據(jù)幀解碼能力,以根據(jù) 所述視頻數(shù)據(jù)幀解碼能力,確定所述客戶端是否支持視頻數(shù)據(jù)幀解碼。
7. 如權(quán)利要求2, 3或6所述的方法,其特征在于,還包括:所述當(dāng)客戶端支持視頻數(shù)據(jù) 幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令之前,獲取 所述客戶端支持的視頻數(shù)據(jù)幀的視頻編碼格式信息,以根據(jù)所述視頻編碼格式信息,確定 所述客戶端是否支持所述第一視頻數(shù)據(jù)幀的視頻編碼格式。
8. 如權(quán)利要求1至7任一所述的方法,其特征在于,所述截獲視頻播放器向虛擬顯示驅(qū) 動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令,具體為所述虛擬顯示驅(qū)動截獲所述 第一視頻數(shù)據(jù)幀和所述第一視頻處理指令。
9. 一種服務(wù)器,其特征在于,包括: 截獲單元,用于截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù) 據(jù)幀處理指令; 發(fā)送單元,用于當(dāng)客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀 和所述第一視頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所 述第二視頻數(shù)據(jù)幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視 頻數(shù)據(jù)幀后處理指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀 或?yàn)樗龅谝灰曨l數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀; 當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視 頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù) 據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù) 據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為 所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù)幀處理指令;當(dāng) 所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為解碼后的第一視頻 數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀后處理 指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
10. 如權(quán)利要求9所述的服務(wù)器,其特征在于,還包括轉(zhuǎn)換單元,所述轉(zhuǎn)換單元用于當(dāng) 所述客戶端支持視頻數(shù)據(jù)幀解碼時(shí),并且所述客戶端不支持所述視頻播放器向所述虛擬顯 示驅(qū)動發(fā)送的所述第一視頻數(shù)據(jù)幀的視頻編碼格式時(shí),將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編 碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀;其中,所述第二視頻數(shù)據(jù)幀的視頻編碼格式為所述 客戶端支持的視頻編碼格式。
11. 如權(quán)利要求10所述的服務(wù)器,其特征在于,所述轉(zhuǎn)換單元具體為所述虛擬顯示驅(qū) 動,則所述將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀,具體 包括:所述虛擬顯示驅(qū)動將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視 頻數(shù)據(jù)幀。
12. 如權(quán)利要求9所述的服務(wù)器,其特征在于,還包括解碼單元,用于當(dāng)所述客戶端不 支持視頻數(shù)據(jù)幀解碼時(shí),并且當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),向所述客 戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令之前,根據(jù)所述第一視頻數(shù)據(jù)幀處理 指令中的所述視頻數(shù)據(jù)幀解碼指令對所述第一視頻數(shù)據(jù)幀進(jìn)行解碼,以獲得所述第二視頻 數(shù)據(jù)幀。
13. 如權(quán)利要求9或12所述的服務(wù)器,其特征在于,還包括壓縮單元,所述壓縮單元用 于當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送所述第二視頻數(shù)據(jù)幀和所述 第二視頻數(shù)據(jù)幀處理指令之前,壓縮所述第二視頻數(shù)據(jù)幀;則向所述客戶端發(fā)送第二視頻 數(shù)據(jù)幀,具體為向所述客戶端發(fā)送壓縮后的第二視頻數(shù)據(jù)幀。
14. 如權(quán)利要求9至13任一所述的服務(wù)器,其特征在于,還包括獲取單元,所述獲取單 元用于所述截獲單元截獲所述視頻播放器向所述虛擬顯示驅(qū)動發(fā)送的所述第一視頻數(shù)據(jù) 幀和所述第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端的視頻數(shù)據(jù)幀處理能力;所述客 戶端的視頻數(shù)據(jù)幀處理能力包括視頻數(shù)據(jù)幀解碼能力,以根據(jù)所述視頻數(shù)據(jù)幀解碼能力, 確定所述客戶端是否支持視頻數(shù)據(jù)幀解碼。
15. 如權(quán)利要求10、11或14所述的服務(wù)器,其特征在于,所述獲取單元還用于根據(jù)所述 客戶端的視頻數(shù)據(jù)幀處理能力,確定所述客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā) 送第二視頻數(shù)據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端支持的視頻數(shù)據(jù) 幀的視頻編碼格式信息,以根據(jù)所述視頻編碼格式信息,確定所述客戶端是否支持所述第 一視頻數(shù)據(jù)幀的視頻編碼格式。
16. 如權(quán)利要求9至15任一所述的服務(wù)器,其特征在于,所述截獲單元具體為虛擬顯示 驅(qū)動,所述虛擬顯示驅(qū)動截獲所述第一視頻數(shù)據(jù)幀和所述第一視頻處理指令。
17. -種服務(wù)器,其特征在于,包括存儲器和中央處理器,所述存儲器和所述中央處理 器通過系統(tǒng)總線相連,所述存儲器存儲計(jì)算機(jī)可執(zhí)行指令,當(dāng)所述服務(wù)器運(yùn)行時(shí),所述中央 處理器執(zhí)行所述存儲器存儲的計(jì)算機(jī)可執(zhí)行指令,使所述服務(wù)器執(zhí)行如下步驟: 截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指 令; 當(dāng)客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻 數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù)據(jù) 幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理 指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀或?yàn)樗龅谝灰?頻數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀; 當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視 頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù) 據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù) 據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為 所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù)幀處理指令;當(dāng) 所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為解碼后的第一視頻 數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀后處理 指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
18. 如權(quán)利要求17所述的服務(wù)器,其特征在于,還包括:當(dāng)所述客戶端支持視頻數(shù)據(jù)幀 解碼時(shí),并且所述客戶端不支持所述視頻播放器向所述虛擬顯示驅(qū)動發(fā)送的所述第一視頻 數(shù)據(jù)幀的視頻編碼格式時(shí),將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二 視頻數(shù)據(jù)幀;其中,所述第二視頻數(shù)據(jù)幀的視頻編碼格式為所述客戶端支持的視頻編碼格 式。
19. 如權(quán)利要求18所述的服務(wù)器,其特征在于,所述將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻 編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀,具體包括:所述虛擬顯示驅(qū)動將所述第一視頻數(shù) 據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀。
20. 如權(quán)利要求17所述的服務(wù)器,其特征在于,還包括當(dāng)所述客戶端不支持視頻數(shù)據(jù) 幀解碼時(shí),并且當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),向所述客戶端發(fā)送第二 視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令之前,根據(jù)所述第一視頻數(shù)據(jù)幀處理指令中的所述 視頻數(shù)據(jù)幀解碼指令對所述第一視頻數(shù)據(jù)幀進(jìn)行解碼,以獲得所述第二視頻數(shù)據(jù)幀。
21. 如權(quán)利要求17或20所述的服務(wù)器,其特征在于,還包括:當(dāng)所述客戶端不支持視 頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送所述第二視頻數(shù)據(jù)幀和所述第二視頻數(shù)據(jù)幀處理指令 之前,壓縮所述第二視頻數(shù)據(jù)幀;則向所述客戶端發(fā)送所述第二視頻數(shù)據(jù)幀,具體為向所述 客戶端發(fā)送壓縮后的第二視頻數(shù)據(jù)幀。
22. 如權(quán)利要求17至21任一所述的服務(wù)器,其特征在于,還包括:所述截獲視頻播放 器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶 端的視頻數(shù)據(jù)幀處理能力;所述客戶端的視頻數(shù)據(jù)幀處理能力包括視頻數(shù)據(jù)幀解碼能力, 以根據(jù)所述視頻數(shù)據(jù)幀解碼能力,確定所述客戶端是否支持視頻數(shù)據(jù)幀解碼。
23. 如權(quán)利要求18、19或22所述的方法,其特征在于,還包括:根據(jù)所述客戶端的視頻 數(shù)據(jù)幀處理能力,確定所述客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù) 據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端支持的視頻數(shù)據(jù)幀的視頻編碼 格式信息,以根據(jù)所述視頻編碼格式信息,確定所述客戶端是否支持所述第一視頻數(shù)據(jù)幀 的視頻編碼格式。
24. 如權(quán)利要求17至23任一所述的服務(wù)器,其特征在于,所述截獲視頻播放器向虛擬 顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令,具體為所述虛擬顯示驅(qū)動截 獲所述第一視頻數(shù)據(jù)幀和所述第一視頻處理指令。
25. -種視頻重定向系統(tǒng),包括客戶端和如權(quán)利要求9至16任一所述的服務(wù)器。
26. -種視頻重定向系統(tǒng),包括客戶端和如權(quán)利要求17至24任一所述的服務(wù)器。
27. -種計(jì)算機(jī)可讀存儲介質(zhì),其特征在于,當(dāng)計(jì)算機(jī)執(zhí)行所述計(jì)算機(jī)可讀存儲介質(zhì) 時(shí),所述計(jì)算機(jī)執(zhí)行如下步驟:截獲視頻播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和 第一視頻數(shù)據(jù)幀處理指令; 當(dāng)客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和所述第一視頻 數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第一視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù)據(jù) 幀進(jìn)行處理,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、視頻數(shù)據(jù)幀后處理 指令和視頻數(shù)據(jù)幀呈現(xiàn)指令,所述第二視頻數(shù)據(jù)幀為所述第一視頻數(shù)據(jù)幀或?yàn)樗龅谝灰?頻數(shù)據(jù)幀經(jīng)過視頻編碼格式轉(zhuǎn)換獲得的視頻數(shù)據(jù)幀; 當(dāng)所述客戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視 頻數(shù)據(jù)幀處理指令,以使所述客戶端根據(jù)所述第二視頻數(shù)據(jù)幀處理指令對所述第二視頻數(shù) 據(jù)幀進(jìn)行處理,其中,所述第二視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀后處理指令和視頻數(shù) 據(jù)幀呈現(xiàn)指令;當(dāng)所述第一視頻數(shù)據(jù)幀為解碼后的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為 所述第一視頻數(shù)據(jù)幀,所述第二視頻數(shù)據(jù)幀處理指令為所述第一視頻數(shù)據(jù)幀處理指令;當(dāng) 所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),所述第二視頻數(shù)據(jù)幀為解碼后的第一視頻 數(shù)據(jù)幀,所述第一視頻數(shù)據(jù)幀處理指令包括視頻數(shù)據(jù)幀解碼指令、所述視頻數(shù)據(jù)幀后處理 指令和所述視頻數(shù)據(jù)幀呈現(xiàn)指令。
28. 如權(quán)利要求27所述的計(jì)算機(jī)可讀存儲介質(zhì),其特征在于,還包括:當(dāng)所述客戶端支 持視頻數(shù)據(jù)幀解碼時(shí),并且所述客戶端不支持所述視頻播放器向所述虛擬顯示驅(qū)動發(fā)送的 所述第一視頻數(shù)據(jù)幀的視頻編碼格式時(shí),將所述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換, 獲得所述第二視頻數(shù)據(jù)幀;其中,所述第二視頻數(shù)據(jù)幀的視頻編碼格式為所述客戶端支持 的視頻編碼格式。
29. 如權(quán)利要求28所述的計(jì)算機(jī)可讀存儲介質(zhì),其特征在于,所述將所述第一視頻數(shù) 據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀,具體包括:所述虛擬顯示驅(qū)動將所 述第一視頻數(shù)據(jù)幀進(jìn)行視頻編碼格式轉(zhuǎn)換,獲得所述第二視頻數(shù)據(jù)幀。
30. 如權(quán)利要求27所述的計(jì)算機(jī)可讀存儲介質(zhì),其特征在于,還包括當(dāng)所述客戶端不 支持視頻數(shù)據(jù)幀解碼時(shí),并且當(dāng)所述第一視頻數(shù)據(jù)幀為未解碼的視頻數(shù)據(jù)幀時(shí),向所述客 戶端發(fā)送第二視頻數(shù)據(jù)幀和第二視頻數(shù)據(jù)幀處理指令之前,根據(jù)所述第一視頻數(shù)據(jù)幀處理 指令中的所述視頻數(shù)據(jù)幀解碼指令對所述第一視頻數(shù)據(jù)幀進(jìn)行解碼,以獲得所述第二視頻 數(shù)據(jù)幀。
31. 如權(quán)利要求27或30所述的計(jì)算機(jī)可讀存儲介質(zhì),其特征在于,還包括:當(dāng)所述客 戶端不支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送所述第二視頻數(shù)據(jù)幀和所述第二視頻數(shù) 據(jù)幀處理指令之前,壓縮所述第二視頻數(shù)據(jù)幀;則向所述客戶端發(fā)送第二視頻數(shù)據(jù)幀,具體 為向所述客戶端發(fā)送壓縮后的第二視頻數(shù)據(jù)幀。
32. 如權(quán)利要求27至31所述的方法,其特征在于,還包括:所述截獲視頻播放器向虛 擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端的視 頻數(shù)據(jù)幀處理能力;所述客戶端的視頻數(shù)據(jù)幀處理能力包括視頻數(shù)據(jù)幀解碼能力,以根據(jù) 所述視頻數(shù)據(jù)幀解碼能力,確定所述客戶端是否支持視頻數(shù)據(jù)幀解碼。
33. 如權(quán)利要求28、29或32所述的方法,其特征在于,還包括:根據(jù)所述客戶端的視頻 數(shù)據(jù)幀處理能力,確定所述客戶端支持視頻數(shù)據(jù)幀解碼時(shí),向所述客戶端發(fā)送第二視頻數(shù) 據(jù)幀和所述第一視頻數(shù)據(jù)幀處理指令之前,獲取所述客戶端支持的視頻數(shù)據(jù)幀的視頻編碼 格式信息,以根據(jù)所述視頻編碼格式信息,確定所述客戶端是否支持所述第一視頻數(shù)據(jù)幀 的視頻編碼格式。
34. 如權(quán)利要求27至33任一所述的計(jì)算機(jī)可讀存儲介質(zhì),其特征在于,所述截獲視頻 播放器向虛擬顯示驅(qū)動發(fā)送的第一視頻數(shù)據(jù)幀和第一視頻數(shù)據(jù)幀處理指令,具體為所述虛 擬顯示驅(qū)動截獲所述第一視頻數(shù)據(jù)幀和所述第一視頻處理指令。
【文檔編號】H04N21/643GK104067627SQ201380000046
【公開日】2014年9月24日 申請日期:2013年2月7日 優(yōu)先權(quán)日:2013年2月7日
【發(fā)明者】陳普, 許天錫 申請人:華為技術(shù)有限公司