一種基于spice協(xié)議的遠(yuǎn)程視頻顯示方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻處理技術(shù)領(lǐng)域,尤其涉及一種基于SPICE協(xié)議的遠(yuǎn)程視頻顯示方法及系統(tǒng)。
【背景技術(shù)】
[0002]Spice是基于KVM技術(shù)的云桌面服務(wù)一種遠(yuǎn)程連接協(xié)議。對(duì)于遠(yuǎn)程視頻顯示,Spice實(shí)現(xiàn)方式是服務(wù)器端的虛擬機(jī)顯視控制設(shè)備動(dòng)態(tài)地檢測(cè)視頻流,當(dāng)檢測(cè)到時(shí)把視頻顯示畫面做成mjpeg格式向客戶端傳輸,客戶端對(duì)mjpeg流調(diào)用Iibjpeg解碼庫解碼,再調(diào)用本地顯示庫顯示,mjpeg流的解碼及本地庫的顯示要使用大量的計(jì)算資源,而客戶端的計(jì)算資源通常都很有限,導(dǎo)致視頻顯示效果非常差。
[0003]遠(yuǎn)程視頻重定向技術(shù),在服務(wù)器端檢測(cè)到有視頻播放時(shí),直接將數(shù)據(jù)傳輸給客戶端,客戶端調(diào)用本地視頻播放服務(wù)控制視頻播放。
[0004]但遠(yuǎn)程視頻重定向技術(shù)需要在服務(wù)器端的虛擬機(jī)中安裝定制的播放器,并且限定用戶只能用此播放器,否則視頻重定向失敗。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種基于SPICE協(xié)議的遠(yuǎn)程視頻顯示方法及系統(tǒng)。
[0006]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種基于SPICE協(xié)議的遠(yuǎn)程視頻顯示方法,包括如下步驟:
[0007]服務(wù)器與客戶端信息交互,判斷客戶端的顯示驅(qū)動(dòng)是否支持視頻圖像幀的直接顯示,如果支持,則將待傳輸?shù)囊曨l圖像幀進(jìn)行倒轉(zhuǎn)發(fā)送給客戶端,如果不支持,則直接將待傳輸?shù)囊曨l圖像幀發(fā)送給客戶端;
[0008]客戶端對(duì)接收的視頻圖像幀進(jìn)行硬件解碼,對(duì)解碼后的視頻圖像幀進(jìn)行保存?zhèn)溆茫?br>[0009]客戶端查詢顯示驅(qū)動(dòng)信息,判斷顯示驅(qū)動(dòng)是否支持視頻圖像幀的直接顯示,如果支持,則調(diào)用顯示控制器直接顯示解碼后的視頻圖像幀,如果不支持,將解碼后的視頻圖像幀進(jìn)行色彩空間轉(zhuǎn)換,對(duì)轉(zhuǎn)換后的視頻圖像幀調(diào)用本地圖像顯示庫進(jìn)行顯示。
[0010]本發(fā)明的有益效果是:本發(fā)明無需在服務(wù)器端的虛擬機(jī)中安裝定制的播放器,也不必限定用戶只能用此播放器,而是通過服務(wù)器端簡(jiǎn)單的圖像處理,利用客戶端本地的解碼及顯示控制硬件對(duì)遠(yuǎn)程傳輸過來的視頻進(jìn)行處理,以達(dá)到良好的顯示效果,大大改善了視頻顯示效果,減少了計(jì)算資源的使用。
[0011 ] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0012]進(jìn)一步,所述客戶端對(duì)接收的視頻圖像幀進(jìn)行硬件解碼的具體實(shí)現(xiàn)為:
[0013]對(duì)所得視頻圖像幀進(jìn)行解析獲取幀數(shù)據(jù)信息;
[0014]根據(jù)所得的幀數(shù)據(jù)信息進(jìn)行硬件解碼處理;
[0015]將硬件解碼后的數(shù)據(jù)保存?zhèn)溆谩?br>[0016]采用上述進(jìn)一步方案的有益效果:本發(fā)明無需修改spice協(xié)議,只對(duì)顯示通道數(shù)據(jù)轉(zhuǎn)輸及處理進(jìn)行協(xié)議透明的加工,保障了協(xié)議完整性。
[0017]進(jìn)一步,所述幀數(shù)據(jù)信息包括量化表、霍夫曼表及圖像數(shù)據(jù)長(zhǎng)度。
[0018]進(jìn)一步,客戶端的顯示驅(qū)動(dòng)不支持視頻圖像幀的直接顯示的情況下,將解碼后的視頻圖像幀進(jìn)行色彩空間轉(zhuǎn)換的具體實(shí)現(xiàn)為進(jìn)行YCrCb向RGB的色彩空間轉(zhuǎn)換,轉(zhuǎn)換公式如下:
[0019]R = Y+1.402(Cr-128)
[0020]G = Y-0.34414(Cb-128)-0.71414(Cr-128)
[0021]B = Y+1.772 (Cb-128)
[0022]其中,R代表紅色,G代表綠色,B代表藍(lán)色,Y代表明亮度,Cr代表RGB輸入信號(hào)紅色部分與RGB信號(hào)亮度值之間的差異,Cb代表RGB輸入信號(hào)藍(lán)色部分與RGB信號(hào)亮度值之間的差異。
[0023]進(jìn)一步,所述視頻圖像幀為mjpeg格式的視頻圖像幀。
[0024]本發(fā)明解決上述技術(shù)問題的另一技術(shù)方案如下:一種基于SPICE協(xié)議的遠(yuǎn)程視頻顯示系統(tǒng),包括服務(wù)器和客戶端,
[0025]所述服務(wù)器包括,
[0026]第一控制模塊,其用于與客戶端進(jìn)行數(shù)據(jù)交互,根據(jù)客戶端反饋的信息判斷客戶端的顯示驅(qū)動(dòng)是否支持視頻圖像幀的直接顯示,如果支持則調(diào)用幀數(shù)據(jù)處理模塊;否則調(diào)用幀數(shù)據(jù)發(fā)送模塊;
[0027]幀數(shù)據(jù)處理模塊,其用于將待傳輸?shù)囊曨l圖像幀進(jìn)行倒轉(zhuǎn),進(jìn)而調(diào)用幀數(shù)據(jù)發(fā)送豐吳塊;
[0028]幀數(shù)據(jù)發(fā)送模塊,其用于將待傳輸?shù)囊曨l圖像幀發(fā)送給客戶端;
[0029]所述客戶端包括,
[0030]幀數(shù)據(jù)接收模塊,其用于接收幀數(shù)據(jù)并發(fā)送給硬件解碼模塊;
[0031]硬件解碼模塊,其用于對(duì)接收的視頻圖像幀進(jìn)行硬件解碼,對(duì)解碼后的視頻圖像幀進(jìn)行保存?zhèn)溆茫?br>[0032]第二控制模塊,其用于查詢客戶端的顯示驅(qū)動(dòng)信息,判斷顯示驅(qū)動(dòng)是否支持視頻圖像幀的直接顯示,如果支持則調(diào)用顯示控制器,如果不支持調(diào)用色彩空間轉(zhuǎn)換模塊;
[0033]顯示控制器,其用于直接顯示解碼后的視頻圖像幀;
[0034]色彩空間轉(zhuǎn)換模塊,其用于將解碼后的視頻圖像幀進(jìn)行色彩空間轉(zhuǎn)換,對(duì)轉(zhuǎn)換后的視頻圖像幀調(diào)用本地圖像顯示庫進(jìn)行顯示。
[0035]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0036]進(jìn)一步,所述硬件解碼模塊包括解析單元、解碼單元和存儲(chǔ)單元:
[0037]所述解析單元,其用于對(duì)所得視頻圖像幀進(jìn)行解析獲取幀數(shù)據(jù)信息;
[0038]所述解碼單元,其用于根據(jù)所得幀數(shù)據(jù)信息進(jìn)行硬件解碼處理;
[0039]所述存儲(chǔ)單元,其用于將硬件解碼后的數(shù)據(jù)保存?zhèn)溆谩?br>[0040]進(jìn)一步,所述幀數(shù)據(jù)信息包括量化表、霍夫曼表及圖像數(shù)據(jù)長(zhǎng)度。
[0041]進(jìn)一步,所述色彩空間轉(zhuǎn)換模塊進(jìn)行空間轉(zhuǎn)換的具體實(shí)現(xiàn)為進(jìn)行YCrCb向RGB的色彩空間轉(zhuǎn)換,轉(zhuǎn)換公式如下:
[0042]R = Y+1.402 (Cr-128)
[0043]G = Y-0.34414(Cb-128)-0.71414 (Cr-128)
[0044]B = Y+1.772 (Cb-128)
[0045]其中,R代表紅色,G代表綠色,B代表藍(lán)色,Y代表明亮度,Cr代表RGB輸入信號(hào)紅色部分與RGB信號(hào)亮度值之間的差異,Cb代表RGB輸入信號(hào)藍(lán)色部分與RGB信號(hào)亮度值之間的差異。
[0046]進(jìn)一步,所述視頻圖像幀為mjpeg格式的視頻圖像幀。
【附圖說明】
[0047]圖1為本發(fā)明一種基于SPICE協(xié)議的遠(yuǎn)程視頻顯示方法流程圖;
[0048]圖2為本發(fā)明一種基于SPICE協(xié)議的遠(yuǎn)程視頻顯示系統(tǒng)框圖;
[0049]圖3為本發(fā)明實(shí)施例中服務(wù)器與客戶端的連接關(guān)系示意圖。
【具體實(shí)施方式】
[0050]以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0051]如圖1所示,一種基于SPICE協(xié)議的遠(yuǎn)程視頻顯示方法,包括如下步驟:
[0052]服務(wù)器與客戶端信息交互,判斷客戶端的顯示驅(qū)動(dòng)是否支持視頻圖像幀的直接顯示,如果支持,則將待傳輸?shù)囊曨l圖像幀進(jìn)行倒轉(zhuǎn)發(fā)送給客戶端,如果不支持,則直接將待傳輸?shù)囊曨l圖像幀發(fā)送給客戶端;客戶端對(duì)接收的視頻圖像幀進(jìn)行硬件解碼,對(duì)解碼后的視頻圖像幀進(jìn)行保存?zhèn)溆茫豢蛻舳瞬樵冿@示驅(qū)動(dòng)信息,判斷顯示驅(qū)動(dòng)是否支持視頻圖像幀的直接顯示,如果支持,則調(diào)用顯示控制器直接顯示解碼后的視頻圖像幀,如果不支持,將解碼后的視頻圖像幀進(jìn)行色彩空間轉(zhuǎn)換,對(duì)轉(zhuǎn)換后的視頻圖像幀調(diào)用本地圖像顯示庫進(jìn)行顯示。其中,所述視頻圖像幀為mjpeg格式的視頻圖像幀。
[0053]具體地,服務(wù)器端與客戶端通信決定是否對(duì)即將傳輸?shù)膍jpeg圖像幀倒轉(zhuǎn),若客戶端的顯示驅(qū)動(dòng)支持mjpeg幀直接顯示則需圖像倒轉(zhuǎn),因?yàn)榉?wù)器端所獲得的mjpeg幀是倒轉(zhuǎn)的圖像,而客戶端顯示輸出是正常輸出,對(duì)倒轉(zhuǎn)的圖像再倒轉(zhuǎn)就得到了正常的圖像,若客戶端的顯示驅(qū)動(dòng)不支持mjpeg幀直接顯示則無需倒轉(zhuǎn)。
[0054]客戶端對(duì)mjpeg幀調(diào)用硬件解碼功能解碼,a.對(duì)所得mjpeg幀進(jìn)行解析獲取量化表、霍夫曼表及圖像數(shù)據(jù)的長(zhǎng)度等信息,b.將所a中所得信息傳遞給硬件解碼處理,c.將b中硬件解碼后的數(shù)據(jù)保存?zhèn)溆谩?br>[0055]客戶端查詢顯示驅(qū)動(dòng)信息,若客戶端的顯示驅(qū)動(dòng)不支持直接mjpeg幀顯示則對(duì)解碼后的幀數(shù)據(jù)做由YCrCb向RGB的色彩空間轉(zhuǎn)換,轉(zhuǎn)換公式為:
[0056]R = Y+1.402 (Cr-128)
[0057]G = Y-