基于h264的spice視頻編解碼擴(kuò)展方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種基于H264的新型SPICE視頻編解碼擴(kuò)展方法,包括步驟:提供支撐系統(tǒng)運(yùn)行所需要的額外補(bǔ)充包;提供SPICE協(xié)議客戶端進(jìn)行H264解碼器擴(kuò)展的能力;提供SPICE協(xié)議服務(wù)器進(jìn)行H264編碼器擴(kuò)展的能力;提供SPICE協(xié)議服務(wù)器和SPICE協(xié)議客戶端進(jìn)行H264能力協(xié)商;提供SPICE協(xié)議服務(wù)器提供H264和MJPEG的編碼動(dòng)態(tài)選擇算法和上層配置接口。本發(fā)明大幅減少了SPICE協(xié)議在視頻播放場(chǎng)景下的網(wǎng)絡(luò)帶寬占用,為SPICE協(xié)議提供更加豐富的視頻編解碼處理策略并保證兼容性,并提供良好的SPICE協(xié)議H264視頻編解碼配置方法或者接口,且不需要在虛擬機(jī)內(nèi)部進(jìn)行軟件的二次開發(fā)。
【專利說(shuō)明】基于H264的SPICE視頻編解碼擴(kuò)展方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于信息技術(shù)(IT)領(lǐng)域,涉及一種典型的虛擬桌面交付協(xié)議軟件,具體涉 及基于H264的新型SPICE視頻編解碼擴(kuò)展方法及相應(yīng)的系統(tǒng)。
【背景技術(shù)】
[0002] 隨著云計(jì)算和電子商務(wù)的迅猛發(fā)展,企業(yè)信息化的規(guī)模和終端數(shù)量都給IT部門 提出了更高要求。在近幾年中,桌面虛擬化借助云計(jì)算的勢(shì)頭以云桌面或者云終端的概念 獲得快速發(fā)展。
[0003] 桌面虛擬化依賴于服務(wù)器虛擬化,在數(shù)據(jù)中心的服務(wù)器上進(jìn)行服務(wù)器虛擬化,生 成大量的獨(dú)立的桌面操作系統(tǒng)(虛擬機(jī)或者虛擬桌面),同時(shí)根據(jù)專有的虛擬桌面協(xié)議將 桌面推送給終端設(shè)備。用戶終端通過(guò)以太網(wǎng)登陸到虛擬主機(jī)上,只需要記住用戶名和密碼 及網(wǎng)關(guān)信息,即可隨時(shí)隨地的通過(guò)網(wǎng)絡(luò)訪問自己的桌面系統(tǒng),從而實(shí)現(xiàn)單機(jī)多用戶。
[0004] 提供桌面虛擬化系統(tǒng)解決方案的公司非常多,主要包括微軟、紅帽、思杰、VMware 以及國(guó)內(nèi)的幾家公司,各家大體實(shí)現(xiàn)方式類似,但具體技術(shù)存在較大差異。由于紅帽的桌面 虛擬化系統(tǒng)解決方案基于KVM虛擬化技術(shù)和SPICE協(xié)議技術(shù),且源代碼開放,社區(qū)活躍度極 高,很多中小型廠商大多采用此方法。
[0005] 紅帽的桌面虛擬化(或類似)解決方案簡(jiǎn)化了桌面管理,減少了基礎(chǔ)設(shè)施成本,并 提供了從受控?cái)?shù)據(jù)中心對(duì)完整Windows和Linux桌面環(huán)境的訪問權(quán)限。其基于強(qiáng)大、高性 能的KVM(基于內(nèi)核的虛擬機(jī))系統(tǒng)管理程序技術(shù),紅帽的桌面虛擬化(或類似)解決方案 憑借最高的虛擬機(jī)密度,提供了行業(yè)領(lǐng)先的可擴(kuò)展性,同時(shí)帶來(lái)了更高的效率并減少了復(fù) 雜度。
[0006] SPICE是一項(xiàng)兼容BS/CS、高性能、動(dòng)態(tài)的自適應(yīng)遠(yuǎn)程桌面交付技術(shù),能為終端用 戶帶來(lái)和物理桌面?zhèn)€人計(jì)算機(jī)難以區(qū)分的體驗(yàn)。SPICE是為遠(yuǎn)程訪問虛擬化桌面而專門設(shè) 計(jì)和創(chuàng)建,它是紅帽的桌面虛擬化(或類似)解決方案的默認(rèn)桌面交付協(xié)議,將用戶連接至 虛擬化桌面。
[0007] 盡管紅帽的桌面虛擬化(或類似)解決方案擁有非常多的優(yōu)勢(shì),但其默認(rèn)的虛 擬桌面交付協(xié)議SPICE在視頻應(yīng)用場(chǎng)景下卻有重大不足,其帶寬占用非常高,這直接導(dǎo)致 網(wǎng)絡(luò)瓶頸的較易出現(xiàn),因此無(wú)法應(yīng)用到公有云環(huán)境。其根本原因是:SPICE協(xié)議默認(rèn)使用 MJPEG算法對(duì)從虛擬機(jī)的虛擬顯卡中獲取的原始RGB視頻數(shù)據(jù)進(jìn)行有損編碼壓縮,在保證 一定質(zhì)量的前提下,需要大量的網(wǎng)絡(luò)帶寬。
[0008] 關(guān)于MJPEG標(biāo)準(zhǔn)請(qǐng)參考ISO標(biāo)準(zhǔn)文檔。
[0009] 經(jīng)檢索發(fā)現(xiàn)如下相關(guān)文獻(xiàn)。
[0010] 期刊名稱:《計(jì)算機(jī)工程與科學(xué)》第35卷第12期2013年12月
[0011] 文章名稱:《基于SPICE協(xié)議的桌面虛擬化技術(shù)研究與改進(jìn)方案》
[0012] 摘要:隨著云計(jì)算的不斷發(fā)展,虛擬桌面解決方案VD1日益成熟,桌面虛擬化成為 典型的云計(jì)算應(yīng)用。虛擬桌面技術(shù)能夠有效地解決傳統(tǒng)個(gè)人計(jì)算機(jī)使用過(guò)程中存在的諸多 問題,降低企業(yè)的運(yùn)維成本,受到業(yè)界的廣泛關(guān)注。SPICE協(xié)議作為開源的虛擬桌面?zhèn)鬏攨f(xié) 議具有其獨(dú)特的技術(shù)架構(gòu)和應(yīng)用特性,通過(guò)SPICE協(xié)議能夠在服務(wù)器和遠(yuǎn)程用戶終端上部 署虛擬桌面,并提供性能比較好的用戶體驗(yàn)Q〇E。但是,SPICE協(xié)議本身目前還存在許多不 足之處,不能適用于帶寬較低的網(wǎng)絡(luò)環(huán)境。在討論了虛擬桌面?zhèn)鬏攨f(xié)議的原理以及影響虛 擬桌面性能的因素的基礎(chǔ)上,詳細(xì)分析了 SPICE協(xié)議的架構(gòu)以及核心技術(shù),指出目前SPICE 協(xié)議的不足,并提出了保證Q〇E情況下的改進(jìn)方案,對(duì)于當(dāng)前桌面虛擬化技術(shù)的發(fā)展將起 到一定的指導(dǎo)作用。
[0013] 技術(shù)要點(diǎn)比較:
[0014] 1.該文章提出對(duì)SPICE的視頻處理進(jìn)行MJPEG2000編解碼擴(kuò)展,但未說(shuō)明具體 方案及實(shí)施方法,且MJPEG2000的算法壓縮率遠(yuǎn)遠(yuǎn)不及H264的算法壓縮率。參考資料: "H. 264幀內(nèi)編碼和JPEG2000對(duì)靜止圖像進(jìn)行編碼的性能比較",記載于《中國(guó)圖象圖形學(xué) 報(bào)》第11卷第3期2006年3月,該參考資料分析了 H264的幀內(nèi)編碼和JPEG2000的原理, 對(duì)比了兩者的壓縮率,JPEG2000處于劣勢(shì),另外H264還支持幀間編碼,可以大幅度提高壓 縮率。
[0015] 關(guān)于H264和JPEG2000的技術(shù)細(xì)節(jié)可參考ISO標(biāo)準(zhǔn)文檔。
[0016] 2.該文章提出對(duì)SPICE的視頻處理方案進(jìn)行調(diào)整,但未說(shuō)明具體方案及實(shí)施方 法,其參照了 RDP協(xié)議的視頻重定向原理,但實(shí)現(xiàn)難度較大,復(fù)雜度高且兼容性差。這種方 法和本發(fā)明為兩種不同的思路。(這種方法的難度和復(fù)雜度主要體現(xiàn)在需要為不同的視頻 格式數(shù)據(jù)提供解析并轉(zhuǎn)發(fā),且需要客戶端擁有不同類型的視頻解碼能力;其兼容性差是因 為其具有RDP類似的特性,即視頻重定向可能需要依賴某一種特定的播放器)
【發(fā)明內(nèi)容】
[0017] 針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種基于H264的新型SPICE視頻編 解碼擴(kuò)展方法。本發(fā)明的目的主要為了降低SPICE視頻播放過(guò)程中的網(wǎng)絡(luò)帶寬,且為SPICE 協(xié)議提供靈活的視頻編解碼配置方案和動(dòng)態(tài)算法選擇,以達(dá)到計(jì)算資源和網(wǎng)絡(luò)帶寬的合理 分配。
[0018] 針對(duì)上述現(xiàn)有技術(shù)中的缺陷,本發(fā)明要解決的技術(shù)問題體現(xiàn)在以下幾點(diǎn):
[0019] 1) SPICE協(xié)議服務(wù)器端使用X264編碼器進(jìn)行編碼擴(kuò)展;
[0020] 2) SPICE協(xié)議客戶端使用FFMPEG編解碼器進(jìn)行解碼擴(kuò)展;
[0021] 3) SPICE協(xié)議服務(wù)器和客戶端進(jìn)行H264能力協(xié)商,以保證兼容性;
[0022] 4) SPICE協(xié)議服務(wù)器提供H264和MJPEG的編碼動(dòng)態(tài)選擇算法和Libvirt配置接 口,以方便使用。
[0023] 根據(jù)本發(fā)明提供的一種基于H264的新型SPICE視頻編解碼擴(kuò)展方法,包括如下步 驟:
[0024] 步驟1 :提供支撐系統(tǒng)運(yùn)行所需要的額外補(bǔ)充包;
[0025] 步驟2 :提供SPICE協(xié)議客戶端進(jìn)行H264解碼器擴(kuò)展的能力;
[0026] 步驟3 :提供SPICE協(xié)議服務(wù)器進(jìn)行H264編碼器擴(kuò)展的能力;
[0027] 步驟4 :提供SPICE協(xié)議服務(wù)器和SPICE協(xié)議客戶端進(jìn)行H264能力協(xié)商;
[0028] 步驟5 :提供SPICE協(xié)議服務(wù)器提供H264和MJPEG的編碼動(dòng)態(tài)選擇算法和上層配 置接口。
[0029] 優(yōu)選地,所述步驟2包括如下步驟:
[0030] 步驟2. 1 :初始化H264解碼器配置;
[0031] 步驟2. 2 :使用H264解碼器解碼H264格式碼流;
[0032] 步驟2. 3 :使用CSC算法進(jìn)行H264解碼后數(shù)據(jù)的顏色轉(zhuǎn)換;
[0033] 步驟2. 4 :使用SPICE協(xié)議的顯示框架進(jìn)行最終的顯示;
[0034] 步驟2. 5 :釋放H264解碼器在視頻解碼過(guò)程中所申請(qǐng)的資源。
[0035] 優(yōu)選地,所述步驟3包括如下步驟:
[0036] 步驟3. 1 :初始化H264編碼器配置;
[0037] 步驟3. 2 :利用CSC算法進(jìn)行顏色轉(zhuǎn)換;
[0038] 步驟3. 3 :使用H264編碼器編碼原始視頻數(shù)據(jù);
[0039] 步驟3. 4 :將編碼后的H264數(shù)據(jù)添加到SPICE協(xié)議的數(shù)據(jù)傳輸隊(duì)列。
[0040] 優(yōu)選地,所述步驟4包括如下步驟:
[0041] 步驟4. 1 :SPICE協(xié)議客戶端將自己的H264能力發(fā)送給SPICE協(xié)議服務(wù)器;
[0042] 步驟4. 2 :SPICE協(xié)議服務(wù)器檢查到SPICE協(xié)議客戶端的H264能力后,SPICE協(xié)議 服務(wù)器將自己的H264能力返回給SPICE協(xié)議客戶端。
[0043] 優(yōu)選地,所述步驟5包括如下步驟:
[0044] 步驟5. 1 :SPICE協(xié)議服務(wù)器識(shí)別到原始視頻流;
[0045] 步驟5. 2 :SPICE協(xié)議服務(wù)器比較原始視頻流的元數(shù)據(jù)和預(yù)設(shè)閾值,進(jìn)而選取不同 的視頻目標(biāo)編碼算法(主要比較項(xiàng)有碼率、視頻原始大小等);
[0046] 步驟5. 3 :提供H264編碼的全局控制參數(shù),并提供虛擬機(jī)xml配置選項(xiàng)。
[0047] 優(yōu)選地,所述步驟5. 2包括如下步驟:
[0048] 步驟5. 2. 1 :SPICE協(xié)議服務(wù)器獲取到原始視頻流后,假定原始視頻流的視頻長(zhǎng)度 和寬度分別為w和h,原始視頻流的視頻大小a即為a = w*h,SPICE協(xié)議視頻的視頻大小 的預(yù)設(shè)閾值為X ;假定當(dāng)前網(wǎng)絡(luò)的傳輸碼率為b,SPICE協(xié)議視頻網(wǎng)絡(luò)傳輸碼率閾值為y ;
[0049] 步驟5· 2. 2 :執(zhí)行如下判斷:
[0050] 步驟5. 2. 2. 1 :如果H264編碼全局控制參數(shù)為1,則直接選取H264為視頻目標(biāo)編 碼算法;如果H264編碼全局控制參數(shù)為0,則接下來(lái)執(zhí)行步驟il ;
[0051] 步驟il :如果a大于X,或者b小于y,則選取H264為視頻目標(biāo)編碼算法;
[0052] 步驟i2 :如果a小于等于X,且b大于等于y ;則選取MJPEG為視頻目標(biāo)編碼算法。
[0053] 優(yōu)選地,所述H264編碼全局控制參數(shù),是指QEMU-KVM或者Libvirt的H264編碼 全局控制參數(shù)。
[0054] 優(yōu)選地,所述步驟5. 3具體為:
[0055] 通過(guò)修改QEMU-KVM和Libvirt,以提供H264編碼的全局控制參數(shù),并提供虛擬機(jī) xml配置選項(xiàng)。
[0056] 優(yōu)選地,所述步驟5. 3包括如下步驟:
[0057] 步驟5. 3. 1 :修改Libvirt的xml參數(shù)解析部分,添加H264的全局控制參數(shù)、視頻 編碼閾值參數(shù)的xml參數(shù)定義,全局控制參數(shù)主要控制H264編碼的開啟或者關(guān)閉,視頻編 碼閾值參數(shù)主要控制SPICE的視頻編碼算法的動(dòng)態(tài)選??;
[0058] 步驟5. 3. 2 :修改QEMU-KVM庫(kù)的命令行參數(shù)解析,添加對(duì)來(lái)自Libvirt庫(kù)的H264 的全局控制參數(shù),完成對(duì)視頻編碼閾值參數(shù)的解析,解析完成后通過(guò)SPICE的接口將解析 后的參數(shù)傳遞給SPICE協(xié)議服務(wù)器,以作為SPICE進(jìn)行視頻編碼選取的依據(jù)。
[0059] 根據(jù)本發(fā)明提供的一種基于H264的新型SPICE視頻編解碼擴(kuò)展系統(tǒng),所述基于 H264的新型SPICE視頻編解碼擴(kuò)展系統(tǒng)用于執(zhí)行上述的基于H264的新型SPICE視頻編解 碼擴(kuò)展方法。
[0060] 與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:
[0061] 1)通過(guò)步驟2和步驟3,可以大幅減少了 SPICE協(xié)議在視頻播放場(chǎng)景下的網(wǎng)絡(luò)帶 寬占用;
[0062] 2)通過(guò)步驟4,可以為SPICE協(xié)議提供更加豐富的視頻編解碼處理策略并保證兼 容性;
[0063] 3)通過(guò)步驟5,可以提供良好的SPICE協(xié)議H264視頻編解碼配置方法或者接口 (Libvirt 層)。
[0064] 4)本發(fā)明不需要在虛擬機(jī)內(nèi)部進(jìn)行軟件的二次開發(fā),其利用SPICE協(xié)議獲取到桌 面圖像數(shù)據(jù),并通過(guò)圖像區(qū)域的刷新頻率來(lái)識(shí)別圖像數(shù)據(jù)中的原始視頻流(即RGB數(shù)據(jù)), 桌面圖像數(shù)據(jù)中已包含了網(wǎng)頁(yè)視頻或者視頻播放器所展現(xiàn)的視頻內(nèi)容,因此其兼容所有的 視頻播放器和瀏覽器;本發(fā)明通過(guò)傳輸H264格式的視頻數(shù)據(jù)來(lái)改善體驗(yàn)和降低網(wǎng)絡(luò)帶寬, 協(xié)議客戶端只需要擁有H264的視頻解碼器即可。
【專利附圖】
【附圖說(shuō)明】
[0065] 通過(guò)閱讀參照以下附圖對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、 目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
[0066] 圖1為本發(fā)明實(shí)施的框架圖。
[0067] 圖2為本發(fā)明實(shí)施的流程圖。
[0068] 圖3為步驟5. 3的方法圖。
【具體實(shí)施方式】
[0069] 下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。以下實(shí)施例將有助于本領(lǐng)域的技術(shù) 人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對(duì)本領(lǐng)域的普通技術(shù) 人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn)。這些都屬于本發(fā)明 的保護(hù)范圍。
[0070] 下面對(duì)相關(guān)概念進(jìn)行說(shuō)明。
[0071] H264 :H. 264是國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電信聯(lián)盟(ITU)共同提出的繼MPEG4 之后的新一代數(shù)字視頻壓縮格式標(biāo)準(zhǔn)。
[0072] SPICE :有多層含義,在此主要指 Simple Protocol for independent Computing Environment的縮寫,即:獨(dú)立計(jì)算環(huán)境的簡(jiǎn)單協(xié)議,一個(gè)開放的遠(yuǎn)程計(jì)算解決方案,使得 客戶端可以訪問遠(yuǎn)程機(jī)器桌面和設(shè)備(比如鍵盤,鼠標(biāo),audio和USB)。
[0073] KVM :有多層含義,在此主要指Kernel-based Virtual Machine的簡(jiǎn)稱,是一個(gè)開 源的系統(tǒng)虛擬化模塊,自Linux2. 6. 20之后集成在Linux的各個(gè)主要發(fā)行版本中。
[0074] MJPEG :MJPEG全名為〃Motion Joint Photographic Experts Group〃,是一種視頻 編碼格式,中文名稱翻譯為"技術(shù)即運(yùn)動(dòng)靜止圖像(或逐幀)壓縮技術(shù)"。
[0075] X264 :X264是H264視頻格式編碼的一種開放源代碼的實(shí)現(xiàn)項(xiàng)目。
[0076] FFMPEG :FFmpeg是一個(gè)開源免費(fèi)跨平臺(tái)的視頻和音頻流方案,屬于自由軟件,采 用LGPL或GPL許可證(依據(jù)你選擇的組件)。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整 解決方案。默認(rèn)支持H264視頻格式解碼。
[0077] Libvirt :Libvirt是一套免費(fèi)、開源的支持Linux下主流虛擬化工具的C函數(shù)庫(kù), 其旨在為包括KVM在內(nèi)的各種虛擬化工具提供一套方便、可靠的編程接口。
[0078] QEMU-KVM :在一定意義上指代KVM虛擬化技術(shù)。
[0079] CSC :色彩空間轉(zhuǎn)換器(Color Space Converter),用于不同格式的顏色之間的轉(zhuǎn) 換。例如RGB格式和YUV格式之間的相互轉(zhuǎn)換。
[0080] QoE :Quality of Experience,是通信領(lǐng)域的概念;它可以理解為用戶體驗(yàn)或者用 戶感知,即終端用戶對(duì)系統(tǒng)提供的業(yè)務(wù)性能的主觀感受。
[0081] 下面對(duì)根據(jù)本發(fā)明提供的方法進(jìn)行詳細(xì)描述。所述方法包括如下步驟:
[0082] 步驟1 :提供支撐系統(tǒng)運(yùn)行所需要的額外補(bǔ)充包;
[0083] 步驟2 :提供SPICE協(xié)議客戶端進(jìn)行H264解碼器擴(kuò)展的能力;步驟3 :提供SPICE 協(xié)議服務(wù)器端進(jìn)行H264編碼器擴(kuò)展的能力;
[0084] 步驟4 :提供SPICE協(xié)議服務(wù)器和SPICE協(xié)議客戶端進(jìn)行H264能力協(xié)商;
[0085] 步驟5 :提供SPICE協(xié)議服務(wù)器提供H264和MJPEG的編碼動(dòng)態(tài)選擇算法和上層配 置接口。
[0086] 其中,所述步驟2和步驟3的執(zhí)行順序可以沒有限定,例如,可以先執(zhí)行步驟2再 執(zhí)行步驟3,也可以先執(zhí)行步驟3再執(zhí)行步驟2,還可以同時(shí)并行執(zhí)行步驟2和步驟3。
[0087] 其中,步驟1包括如下步驟:
[0088] 步驟1. 1 :使用成熟的打包軟件對(duì)本發(fā)明所依賴的軟件進(jìn)行rpm或者deb包制作。
[0089] 步驟2包括如下步驟:
[0090] 步驟2. 1 :初始化H264解碼器配置;
[0091] 步驟2. 2 :使用H264解碼器解碼H264格式碼流;
[0092] 步驟2. 3 :使用CSC算法進(jìn)行H264解碼后數(shù)據(jù)的顏色轉(zhuǎn)換;
[0093] 步驟2. 4 :使用SPICE協(xié)議的顯示框架進(jìn)行最終的顯示;
[0094] 步驟2. 5 :釋放H264解碼器在視頻解碼過(guò)程中所申請(qǐng)的資源;
[0095] 步驟3包括如下步驟:
[0096] 步驟3. 1 :初始化H264編碼器配置;
[0097] 步驟3. 2 :利用CSC算法進(jìn)行顏色轉(zhuǎn)換;
[0098] 步驟3. 3 :使用H264編碼器編碼原始視頻數(shù)據(jù);
[0099] 步驟3. 4 :將編碼后的H264數(shù)據(jù)添加到SPICE協(xié)議的數(shù)據(jù)傳輸隊(duì)列;
[0100] 步驟4包括如下步驟:
[0101] 步驟4. 1 :SPICE協(xié)議客戶端將自己的H264能力發(fā)送給SPICE協(xié)議服務(wù)器端;
[0102] 步驟4. 2 :SPICE協(xié)議服務(wù)器端檢查到SPICE協(xié)議客戶端的H264能力后,將自己的 H264能力返回給客戶端;
[0103] 步驟5包括如下步驟:
[0104] 步驟5. 1 :SPICE協(xié)議服務(wù)器端通過(guò)自己的啟發(fā)式算法識(shí)別到視頻流;
[0105] 步驟5. 2 :SPICE協(xié)議服務(wù)器端比較視頻流的元數(shù)據(jù)和預(yù)設(shè)閾值,選取不同的視頻 編碼算法,主要對(duì)比項(xiàng)有碼率、視頻原始大小等。
[0106] SPICE協(xié)議服務(wù)器端獲取到原始視頻流后,假定視頻長(zhǎng)度和寬度分別為w和h,視 頻大小即為a = w*h,協(xié)議視頻大小閾值為X ;假定當(dāng)前網(wǎng)絡(luò)的傳輸碼率為b,協(xié)議視頻網(wǎng)絡(luò) 傳輸碼率閾值為y。
[0107] 算法策略:
[0108] 如果QEMU-KVM或者Libvirt的H264編碼全局控制參數(shù)為1,則直接選取H264為 視頻目標(biāo)編碼算法;如果參數(shù)為〇則進(jìn)行下一步;
[0109] 如果a大于X,或者b小于y ;則選取H264為視頻目標(biāo)編碼算法;
[0110] 如果a小于X,且b大于y ;則選取MJPEG為視頻目標(biāo)編碼算法;
[0111] 步驟5. 3 :修改QEMU-KVM和Libvirt,以提供H264編碼的全局控制參數(shù),并提供虛 擬機(jī)xml配置選項(xiàng)。
[0112] 修改Libvirt的xml參數(shù)解析部分,添加 H264的全局控制參數(shù),視頻編碼閾值參 數(shù)的xml參數(shù)定義,全局控制參數(shù)主要控制H264編碼的開啟或者關(guān)閉,視頻編碼閾值參數(shù) 主要控制SPICE的視頻編碼算法的動(dòng)態(tài)選取。
[0113] 修改QEMU-KVM庫(kù)的命令行參數(shù)解析,添加對(duì)來(lái)自Libvirt庫(kù)的H264的全局控 制參數(shù),視頻編碼閾值參數(shù)的解析,解析完成后通過(guò)SPICE的接口將解析后的參數(shù)傳遞給 SPICE服務(wù)器端,以作為SPICE進(jìn)行視頻編碼選取的依據(jù)。
[0114] 注意:SPICE協(xié)議內(nèi)部已包含了 H264相關(guān)參數(shù)的默認(rèn)配置,如果Libvirt并未配 置這些參數(shù),SPICE將使用默認(rèn)值(默認(rèn)H264的全局控制參數(shù)為1,視頻編碼閾值為:視頻 大小閾值為640*480,網(wǎng)絡(luò)傳輸碼率閾值為5Mbps)
[0115] 以上對(duì)本發(fā)明提供的基于H264的新型SPICE視頻編解碼擴(kuò)展方法,本發(fā)明還提供 相應(yīng)的基于H264的新型SPICE視頻編解碼擴(kuò)展系統(tǒng)。
[0116] 下面對(duì)本發(fā)明的一個(gè)優(yōu)選例進(jìn)行詳細(xì)描述。
[0117] 步驟1 :采用dpkg和rpmbuild打包軟件對(duì)本發(fā)明實(shí)施所依賴的額外軟件包進(jìn)行 制作,以便進(jìn)行依賴包的安裝和升級(jí)工作;額外軟件包主要包含X264的安裝包和FFMPEG的 安裝包。此處并未限制在特定的操作系統(tǒng)上進(jìn)行本發(fā)明的實(shí)施。
[0118] 步驟2 :使用FFMPEG在SPICE協(xié)議的客戶端上實(shí)現(xiàn)H264的解碼功能。
[0119] 步驟2. 1 :使用FFMPEG初始化H264解碼的上下文,并根據(jù)SPICE協(xié)議的服務(wù)器端 發(fā)送的視頻屬性信息進(jìn)行H264解碼器參數(shù)設(shè)置,之后查詢FFMPEG中的H264編碼器,選取 合適的編碼器,最后打開編碼器并等待H264數(shù)據(jù),以進(jìn)行解碼。
[0120] 步驟2. 2 :使用FFMPEG的解碼函數(shù)進(jìn)行H264數(shù)據(jù)解碼,由于步驟2. 1已經(jīng)制定了 特定的H264解碼器,因此這里將執(zhí)行標(biāo)準(zhǔn)的H264解碼。
[0121] 步驟2. 3 :使用FFMPEG的顏色轉(zhuǎn)換函數(shù)對(duì)步驟2. 2解碼輸出的數(shù)據(jù)進(jìn)行格式轉(zhuǎn) 換,以便SPICE協(xié)議客戶端能正確顯示視頻。
[0122] 步驟2. 4 :使用SPICE協(xié)議所依賴的PIXMAN(-種軟件像素渲染庫(kù))庫(kù)進(jìn)行顯示, 顯示的源數(shù)據(jù)的格式需要為RGB格式。
[0123] 步驟2. 5 :對(duì)H264解碼完成后的資源進(jìn)行釋放,以避免造成資源浪費(fèi)。
[0124] 步驟3 :采用X264實(shí)現(xiàn)SPICE協(xié)議服務(wù)器端的H264編碼功能。
[0125] 步驟3. 1 :根據(jù)SPICE協(xié)議的啟發(fā)式算法識(shí)別的流信息初始化X264的編碼器配 置,主要參考屬性包含視頻的大小、碼率、當(dāng)前網(wǎng)絡(luò)狀況以及預(yù)期視頻壓縮比。
[0126] 步驟3. 2 :利用私有顏色轉(zhuǎn)換算法對(duì)SPICE協(xié)議的視頻流格式(RGB格式)進(jìn)行YUV 轉(zhuǎn)換,以便滿足X264的源數(shù)據(jù)格式要求。
[0127] 步驟3. 3 :使用X264的編碼函數(shù)進(jìn)行最終的編碼,編碼后的數(shù)據(jù)暫存于內(nèi)存中;
[0128] 步驟3. 4 :利用SPICE協(xié)議的底層數(shù)據(jù)傳輸框架對(duì)H264視頻流進(jìn)行傳輸,此處只 需要將步驟3. 3中的內(nèi)存暫存數(shù)據(jù)置于SPICE協(xié)議的數(shù)據(jù)傳輸隊(duì)列即可(SPICE協(xié)議客戶 端將會(huì)通過(guò)消息中的視頻類型進(jìn)行視頻流分類處理)
[0129] 步驟4 :主要參照SPICE已有的能力協(xié)商機(jī)制來(lái)實(shí)現(xiàn)SPICE協(xié)議C/S端H264能力 協(xié)商。SPICE連接由客戶端發(fā)起:
[0130] 步驟4. 1 :使用SPICE的能力發(fā)送函數(shù)將H264發(fā)送給服務(wù)器;
[0131] 步驟4. 2 :在SPICE協(xié)議服務(wù)器端收到客戶端的H264后將自己的H264能力值發(fā) 送給客戶端(H264能力值用于表示是否擁有H264的編解碼能力),當(dāng)然也可能發(fā)送空置,以 表示SPICE協(xié)議服務(wù)器端沒有H264編碼能力。這樣就實(shí)現(xiàn)了雙向的H264能力交換。
[0132] 步驟5 :利用SPICE協(xié)議的啟發(fā)式算法進(jìn)行視頻流識(shí)別,并在步驟5. 2中對(duì)當(dāng)前的 網(wǎng)絡(luò)和CPU壓力進(jìn)行評(píng)估,同時(shí)兼顧視頻流的大小、碼率,最終選擇合適的且不同配置的視 頻編碼算法;步驟5. 3主要為了方便用戶配置,提供了基于Libvirt的配置方法,用戶可在 虛擬機(jī)的xml配置文件中使用H264配置選項(xiàng)進(jìn)行H264視頻編碼配置,詳情請(qǐng)參照?qǐng)D3。
[0133] 具體的實(shí)現(xiàn)方法如下:
[0134] 修改Libvirt的xml參數(shù)解析部分,添加 H264的全局控制參數(shù)、視頻編碼閾值參 數(shù)的xml參數(shù)定義,全局控制參數(shù)主要控制H264編碼的開啟或者關(guān)閉,視頻編碼閾值參數(shù) 主要控制SPICE的視頻編碼算法的動(dòng)態(tài)選取。
[0135] 修改QEMU-KVM庫(kù)的命令行參數(shù)解析,添加對(duì)來(lái)自Libvirt庫(kù)的H264的全局控制 參數(shù),完成對(duì)視頻編碼閾值參數(shù)的解析,解析完成后通過(guò)SPICE的接口將解析后的參數(shù)傳 遞給SPICE協(xié)議服務(wù)器端,以作為SPICE進(jìn)行視頻編碼選取的依據(jù)。
[0136] 以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述。需要理解的是,本發(fā)明并不局限于上述 特定實(shí)施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影 響本發(fā)明的實(shí)質(zhì)內(nèi)容。
【權(quán)利要求】
1. 一種基于H264的SPICE視頻編解碼擴(kuò)展方法,其特征在于,包括如下步驟: 步驟1 :提供支撐系統(tǒng)運(yùn)行所需要的額外補(bǔ)充包; 步驟2 :提供SPICE協(xié)議客戶端進(jìn)行H264解碼器擴(kuò)展的能力; 步驟3 :提供SPICE協(xié)議服務(wù)器進(jìn)行H264編碼器擴(kuò)展的能力; 步驟4 :提供SPICE協(xié)議服務(wù)器和SPICE協(xié)議客戶端進(jìn)行H264能力協(xié)商; 步驟5 :提供SPICE協(xié)議服務(wù)器提供H264和MJPEG的編碼動(dòng)態(tài)選擇算法和上層配置接 □。
2. 根據(jù)權(quán)利要求1所述的基于H264的SPICE視頻編解碼擴(kuò)展方法,其特征在于,所述 步驟2包括如下步驟: 步驟2. 1 :初始化H264解碼器配置; 步驟2. 2 :使用H264解碼器解碼H264格式碼流; 步驟2. 3 :使用CSC算法進(jìn)行H264解碼后數(shù)據(jù)的顏色轉(zhuǎn)換; 步驟2. 4 :使用SPICE協(xié)議的顯示框架進(jìn)行最終的顯示; 步驟2. 5 :釋放H264解碼器在視頻解碼過(guò)程中所申請(qǐng)的資源。
3. 根據(jù)權(quán)利要求1所述的基于H264的SPICE視頻編解碼擴(kuò)展方法,其特征在于,所述 步驟3包括如下步驟: 步驟3. 1 :初始化H264編碼器配置; 步驟3. 2 :利用CSC算法進(jìn)行顏色轉(zhuǎn)換; 步驟3. 3 :使用H264編碼器編碼原始視頻數(shù)據(jù); 步驟3. 4 :將編碼后的H264數(shù)據(jù)添加到SPICE協(xié)議的數(shù)據(jù)傳輸隊(duì)列。
4. 根據(jù)權(quán)利要求1所述的基于H264的SPICE視頻編解碼擴(kuò)展方法,其特征在于,所述 步驟4包括如下步驟: 步驟4. 1 :SPICE協(xié)議客戶端將自己的H264能力發(fā)送給SPICE協(xié)議服務(wù)器; 步驟4. 2 :SPICE協(xié)議服務(wù)器檢查到SPICE協(xié)議客戶端的H264能力后,SPICE協(xié)議服務(wù) 器將自己的H264能力返回給SPICE協(xié)議客戶端。
5. 根據(jù)權(quán)利要求1所述的基于H264的SPICE視頻編解碼擴(kuò)展方法,其特征在于,所述 步驟5包括如下步驟: 步驟5. 1 :SPICE協(xié)議服務(wù)器識(shí)別到原始視頻流; 步驟5. 2 :SPICE協(xié)議服務(wù)器比較原始視頻流的元數(shù)據(jù)和預(yù)設(shè)閾值,進(jìn)而選取不同的視 頻目標(biāo)編碼算法; 步驟5. 3 :提供H264編碼的全局控制參數(shù),并提供虛擬機(jī)xml配置選項(xiàng)。
6. 根據(jù)權(quán)利要求5所述的基于H264的SPICE視頻編解碼擴(kuò)展方法,其特征在于,所述 步驟5. 2包括如下步驟: 步驟5. 2. 1 :SPICE協(xié)議服務(wù)器獲取到原始視頻流后,假定原始視頻流的視頻長(zhǎng)度和寬 度分別為w和h,原始視頻流的視頻大小a即為a = w*h,SPICE協(xié)議視頻的視頻大小的預(yù) 設(shè)閾值為X ;假定當(dāng)前網(wǎng)絡(luò)的傳輸碼率為b,SPICE協(xié)議視頻網(wǎng)絡(luò)傳輸碼率閾值為y ; 步驟5. 2. 2 :執(zhí)行如下判斷: 步驟5. 2.2. 1 :如果H264編碼全局控制參數(shù)為1,則直接選取H264為視頻目標(biāo)編碼算 法;如果H264編碼全局控制參數(shù)為0,則接下來(lái)執(zhí)行步驟il ; 步驟il :如果a大于X,或者b小于y,則選取H264為視頻目標(biāo)編碼算法; 步驟i2 :如果a小于等于X,且b大于等于y ;則選取MJPEG為視頻目標(biāo)編碼算法。
7. 根據(jù)權(quán)利要求6所述的基于H264的SPICE視頻編解碼擴(kuò)展方法,其特征在于,所述 H264編碼全局控制參數(shù),是指QEMU-KVM或者Libvirt的H264編碼全局控制參數(shù)。
8. 根據(jù)權(quán)利要求7所述的基于H264的SPICE視頻編解碼擴(kuò)展方法,其特征在于,所述 步驟5. 3具體為: 通過(guò)修改QEMU-KVM和Libvirt,以提供H264編碼的全局控制參數(shù),并提供虛擬機(jī)xml 配置選項(xiàng)。
9. 根據(jù)權(quán)利要求8所述的基于H264的SPICE視頻編解碼擴(kuò)展方法,其特征在于,所述 步驟5. 3包括如下步驟: 步驟5. 3. 1 :修改Libvirt的xml參數(shù)解析部分,添加 H264的全局控制參數(shù)、視頻編碼 閾值參數(shù)的xml參數(shù)定義,全局控制參數(shù)主要控制H264編碼的開啟或者關(guān)閉,視頻編碼閾 值參數(shù)主要控制SPICE的視頻編碼算法的動(dòng)態(tài)選取; 步驟5. 3. 2 :修改QEMU-KVM庫(kù)的命令行參數(shù)解析,添加對(duì)來(lái)自Libvirt庫(kù)的H264的全 局控制參數(shù),完成對(duì)視頻編碼閾值參數(shù)的解析,解析完成后通過(guò)SPICE的接口將解析后的 參數(shù)傳遞給SPICE協(xié)議服務(wù)器,以作為SPICE進(jìn)行視頻編碼選取的依據(jù)。
10. -種基于H264的SPICE視頻編解碼擴(kuò)展系統(tǒng),其特征在于,所述基于H264的新型 SPICE視頻編解碼擴(kuò)展系統(tǒng)用于執(zhí)行權(quán)利要求1至9中任一項(xiàng)所述的基于H264的SPICE視 頻編解碼擴(kuò)展方法。
【文檔編號(hào)】H04N21/4402GK104144349SQ201410325929
【公開日】2014年11月12日 申請(qǐng)日期:2014年7月9日 優(yōu)先權(quán)日:2014年7月9日
【發(fā)明者】校朋, 謝朝陽(yáng), 朱宏濤, 丁星, 武靜 申請(qǐng)人:中電科華云信息技術(shù)有限公司