本發(fā)明涉及云計算技術(shù)領(lǐng)域,尤其涉及一種虛擬化環(huán)境下的音頻處理方法和設(shè)備。
背景技術(shù):虛擬桌面是目前云計算技術(shù)引發(fā)的使用計算機方式的一種變遷,云計算將計算資源集中于云端的數(shù)據(jù)中心,以虛擬機(VirtualMachine,VM)的方式提供給用戶使用。用戶在需要使用這些虛擬機時,就需要使用虛擬桌面技術(shù)將各種計算機輸入傳輸至運行于遠(yuǎn)端數(shù)據(jù)中心中的虛擬機計算資源中作為計算輸入,同時將輸出,例如顯示、音頻、視頻等,傳輸至用戶本地并呈現(xiàn)給用戶,實現(xiàn)人機交互。音頻重定向技術(shù)是虛擬桌面技術(shù)中的重要組成之一。由于現(xiàn)有的廣域網(wǎng)環(huán)境下用戶和數(shù)據(jù)中心間的網(wǎng)絡(luò)帶寬是有限的,所以在進(jìn)行音頻重定向時需要對音頻數(shù)據(jù)進(jìn)行編解碼處理以減少傳輸?shù)臄?shù)據(jù)量?,F(xiàn)有技術(shù)中,虛擬機自身可以處理音頻數(shù)據(jù),或者,也可以在服務(wù)器內(nèi)配置專用芯片,由專用芯片對音頻數(shù)據(jù)進(jìn)行處理。對于確定的場景,服務(wù)器上的所有虛擬機采用相同的處理方式進(jìn)行音頻數(shù)據(jù)處理。例如,服務(wù)器上沒有配置專用芯片,該服務(wù)器上的所有虛擬機將自己處理音頻數(shù)據(jù),或者,如果服務(wù)器上配置有專用芯片,該服務(wù)器上的所有虛擬機將音頻數(shù)據(jù)發(fā)送給專用芯片,由專用芯片進(jìn)行處理。但是,這種單一處理方式會造成系統(tǒng)資源浪費和成本增加。例如,對于配置了專用芯片的場景,由于所有虛擬機的音頻數(shù)據(jù)都需要專用芯片進(jìn)行處理,為了保證所有虛擬機在同時運行時也可以被處理,則需要配置數(shù)量與虛擬機的最大數(shù)量相對應(yīng)的專用芯片。但是,通常虛擬機不會同時運行,即使同時運行也不會同時進(jìn)行音頻處理,因此,按照虛擬機的最大數(shù)據(jù)配置對應(yīng)數(shù)量的專用芯片是不合理的,浪費了資源,造成了成本增加。
技術(shù)實現(xiàn)要素:本發(fā)明提供一種虛擬化環(huán)境下的音頻處理方法和設(shè)備,可以充分利用系統(tǒng)資源,降低成本。本發(fā)明提供了一種虛擬機環(huán)境下的音頻處理方法,包括:接收到編解碼調(diào)用消息后,查詢系統(tǒng)資源的使用情況,所述編解碼調(diào)用消息中攜帶要處理的音頻數(shù)據(jù),所述系統(tǒng)資源包括:專用芯片、VM和VMM;根據(jù)所述系統(tǒng)資源的使用情況,采用空閑的系統(tǒng)資源對所述要處理的音頻數(shù)據(jù)進(jìn)行處理。本發(fā)明提供了一種虛擬化環(huán)境下的音頻處理設(shè)備,包括:查詢模塊,用于接收到編解碼調(diào)用消息后,查詢系統(tǒng)資源的使用情況,所述編解碼調(diào)用消息中攜帶要處理的音頻數(shù)據(jù),所述系統(tǒng)資源包括:專用芯片、VM和VMM;處理模塊,用于根據(jù)所述系統(tǒng)資源的使用情況,采用空閑的系統(tǒng)資源對所述要處理的音頻數(shù)據(jù)進(jìn)行處理。由上述技術(shù)方案可知,本發(fā)明實施例通過查詢系統(tǒng)資源的使用情況,選擇空閑的系統(tǒng)資源處理音頻數(shù)據(jù),可以在配置較少的專用芯片時選擇由其他系統(tǒng)資源對音頻數(shù)據(jù)進(jìn)行處理,也就是說,可以根據(jù)實際情況選擇系統(tǒng)資源,而并不限定由單一的系統(tǒng)資源對音頻數(shù)據(jù)進(jìn)行處理,因此可以充分利用系統(tǒng)中的所有資源,降低配置較多專用芯片所需的成本。附圖說明為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明虛擬化環(huán)境下音頻處理方法一實施例的流程示意圖;圖2為本發(fā)明實施例基于的邏輯結(jié)構(gòu)示意圖;圖3為本發(fā)明虛擬化環(huán)境下音頻處理方法另一實施例的流程示意圖;圖4為本發(fā)明虛擬化環(huán)境下音頻處理方法另一實施例的流程示意圖;圖5為本發(fā)明虛擬化環(huán)境下音頻處理方法另一實施例的流程示意圖;圖6為本發(fā)明虛擬機環(huán)境下音頻處理設(shè)備一實施例的結(jié)構(gòu)示意圖;圖7為本發(fā)明虛擬機環(huán)境下音頻處理設(shè)備另一實施例的結(jié)構(gòu)示意圖。具體實施方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明虛擬化環(huán)境下音頻處理方法一實施例的流程示意圖,包括:步驟11:接收到編解碼調(diào)用消息后,查詢系統(tǒng)資源的使用情況,所述編解碼調(diào)用消息中攜帶要處理的音頻數(shù)據(jù),所述系統(tǒng)資源包括:專用芯片、VM和虛擬機監(jiān)控器(VirtualMachineMonitor,VMM);步驟12:根據(jù)所述系統(tǒng)資源的使用情況,采用空閑的系統(tǒng)資源對所述要處理的音頻數(shù)據(jù)進(jìn)行處理。其中,由于專用芯片可以提供更好的編解碼性能,因此,如果存在空閑的專用芯片則優(yōu)先使用專用芯片進(jìn)行音頻數(shù)據(jù)處理。當(dāng)不存在空閑的專用芯片時,可以根據(jù)VM和VMM的使用情況,采用VM的CPU或者VMM的CPU進(jìn)行音頻數(shù)據(jù)處理。由于在專用芯片不足時,還可以采用VM或VMM對音頻數(shù)據(jù)進(jìn)行處理,因此,本發(fā)明實施例中并不需要按照虛擬機的最大數(shù)量配置專用芯片的個數(shù)。例如,假設(shè)每個專用芯片可以為N個虛擬機服務(wù),虛擬機的最大個數(shù)為k×N,則如果按照現(xiàn)有技術(shù),那需要配置k個專用芯片。但是,由于通常k×N個虛擬機不會同時運行,或者不會同時使用音頻處理,配置的k個專用芯片會在大部分時間存在空閑的專用芯片。但是,本發(fā)明實施例中,可以配置數(shù)量小于k的專用芯片,假設(shè)通常同時使用音頻的虛擬機的個數(shù)為(k-m)×N個,則本實施例中可以只配置k-m個專用芯片。這樣就可以避免專用芯片的空閑,使得專用芯片被充分使用,能夠滿足通常的場景所需。另外,即使對于偶然場景,即除(k-m)×N個虛擬機之外,還另有虛擬機需要使用音頻數(shù)據(jù),那么也可以采用VM自身或者VMM對新啟動的虛擬機的音頻數(shù)據(jù)進(jìn)行處理。上述的專用芯片的個數(shù)可以根據(jù)同時需要音頻處理的虛擬機的個數(shù)的最大值進(jìn)行設(shè)定。由于通常同時需要音頻處理的虛擬機的個數(shù)較少,因此,本發(fā)明實施例中的專用芯片的個數(shù)通常是遠(yuǎn)小于現(xiàn)有技術(shù)中按照虛擬機的最大個數(shù)選擇的專用芯片的個數(shù)。本實施例通過對系統(tǒng)資源的使用情況的查詢,可以充分利用各種系統(tǒng)資源,可以配置較少的專用芯片,降低成本。圖2為本發(fā)明實施例基于的邏輯結(jié)構(gòu)示意圖,下述各實施例的場景可以結(jié)合該邏輯結(jié)構(gòu)執(zhí)行。該邏輯結(jié)構(gòu)可以是云數(shù)據(jù)中心的服務(wù)器20的結(jié)構(gòu)示意圖,其中底層為主機硬件,主機硬件包括專用芯片和CPU。服務(wù)器上可以虛擬出多個虛擬機,用以分配給不同的用戶使用,參見圖2,多個虛擬機分別為VM1...VMn;每個虛擬機內(nèi)可以設(shè)置音頻模塊、編解碼組件和硬件驅(qū)動模塊,圖2中只以VM1為例,只在VM1中示出了上述模塊,可以理解的是,其余虛擬機中也包含上述模塊,另外,虛擬機中還可以包含其余模塊。虛擬機監(jiān)控器(VMM)可以監(jiān)控虛擬機以及專用芯片的占用情況,并可以在虛擬機和主機硬件間傳遞數(shù)據(jù);VMM中可以設(shè)置虛擬硬件模塊,與現(xiàn)有技術(shù)不同的是,本發(fā)明實施例中還包含資源分配器。具體地:音頻模塊:虛擬桌面中負(fù)責(zé)音頻數(shù)據(jù)發(fā)送和接收的模塊。音頻模塊在接收到需要傳輸?shù)娇蛻舳说囊纛l數(shù)據(jù)后,會根據(jù)情況決定是否使用壓縮以及使用哪種壓縮格式,然后調(diào)用編解碼組件進(jìn)行音頻格式的轉(zhuǎn)換和壓縮;在接收到客戶端發(fā)送過來的音頻數(shù)據(jù)后,也需要轉(zhuǎn)換為特定的音頻格式。編解碼組件:被音頻模塊調(diào)用的組件,在系統(tǒng)中注冊自己,將專用芯片的功能以庫的形式提供給軟件開發(fā)者使用。對于芯片特殊計算能力的使用,編解碼組件中存在決策判斷邏輯,在被調(diào)用來進(jìn)行編解碼處理時,會向硬件驅(qū)動模塊發(fā)送消息獲取硬件資源,如果獲取成功,編解碼組件將使用專用芯片自己的開發(fā)庫來進(jìn)行編解碼處理;如果獲取失敗,將調(diào)用現(xiàn)有普通的軟件編解碼庫通過VM自己的CPU來實現(xiàn)編解碼處理。硬件驅(qū)動模塊:專用芯片在VM中的驅(qū)動程序,可以是全功能的芯片驅(qū)動,與非虛擬化情況下操作系統(tǒng)中安裝的專用芯片驅(qū)動沒有差別。虛擬硬件模塊:截獲VM中硬件驅(qū)動模塊的命令并作出應(yīng)答,用于為VM提供虛擬的硬件。虛擬硬件模塊在接收到硬件驅(qū)動模塊的I/O請求后會首先向資源分配器發(fā)送物理硬件資源請求命令。如果請求到芯片資源,虛擬硬件模塊會根據(jù)I/O請求將此芯片資源與特定的用戶綁定一段時間。如果請求不到芯片資源,從資源分配器得到的返回值可能存在兩種,一種會指示虛擬硬件模塊使用VMM的CPU計算能力模擬芯片的行為;另一種會指示虛擬硬件模塊向VM中的驅(qū)動程序返回硬件不可得的返回值。資源分配器:監(jiān)視系統(tǒng)運行負(fù)載狀況并記錄專用芯片的使用情況以及CPU狀況,在接收到特定VM的虛擬硬件模塊發(fā)出的資源請求時,作出調(diào)度判斷,確定是否允許當(dāng)前VM的虛擬硬件模塊映射到物理資源上,這種映射關(guān)系維持的時間可以根據(jù)相應(yīng)的策略動態(tài)更改,以高效地被多個VM重用。如果當(dāng)前沒有足夠的專用芯片資源,則根據(jù)CPU的負(fù)載情況進(jìn)行進(jìn)一步的判斷。如果當(dāng)前VM的CPU負(fù)載高于警戒值,則決定使用VMM的CPU進(jìn)行硬件行為模擬;否則返回硬件不可得,讓VM使用自己的CPU進(jìn)行壓縮解壓處理。專用芯片:使用硬件實現(xiàn)編解碼處理邏輯的特殊芯片,可以高效處理指定的格式的音頻編解碼,節(jié)省CPU資源。上述模塊中,與現(xiàn)有技術(shù)不同的是,本發(fā)明實施例中新增資源分配器,以便動態(tài)地監(jiān)視專用芯片、VM、VMM的使用情況,確定由哪種資源對音頻數(shù)據(jù)進(jìn)行處理。另外,與之對應(yīng)的,現(xiàn)有技術(shù)中的編解碼組件、硬件驅(qū)動模塊、虛擬硬件模塊也要進(jìn)行功能增強,例如,需要首先查詢系統(tǒng)資源的使用情況,在獲取使用情況結(jié)果后將音頻數(shù)據(jù)交由相應(yīng)的模塊進(jìn)行處理。結(jié)合上述模塊,本發(fā)明可以給出如下實施例。圖3為本發(fā)明虛擬化環(huán)境下音頻處理方法另一實施例的流程示意圖,本實施例以使用專業(yè)芯片處理音頻數(shù)據(jù)為例。參見圖3,本實施例包括:步驟301:音頻模塊向編解碼組件發(fā)送編解碼調(diào)用消息,該編解碼調(diào)用消息中攜帶要處理的音頻數(shù)據(jù)。可以理解的是,如果是要向外界發(fā)送音頻數(shù)據(jù),音頻模塊是要進(jìn)行編碼操作,如果是接收到外界發(fā)送的音頻數(shù)據(jù),音頻模塊是要進(jìn)行解碼操作,因此,上述的編解碼調(diào)度消息具體為編碼調(diào)度消息或者解碼調(diào)度消息,與此對應(yīng)的是,后續(xù)的編解碼相關(guān)消息應(yīng)該具體是編碼相關(guān)消息或者解碼消息。由于本發(fā)明實施例可以應(yīng)用于編碼過程也可以應(yīng)用于解碼過程,因此統(tǒng)稱為編解碼消息。步驟302:編解碼組件向硬件驅(qū)動模塊發(fā)送請求消息,該請求消息用于查詢專用芯片的使用情況;其中,音頻模塊調(diào)用編解碼組件后,編解碼組件可以首先調(diào)用專用芯片開發(fā)庫接口進(jìn)行初始化操作,即發(fā)送上述的請求消息,查詢專用芯片當(dāng)前是否可用,以便在可用時調(diào)用專用芯片進(jìn)行真正的編解碼處理。步驟303:硬件驅(qū)動模塊向虛擬硬件模塊發(fā)送編解碼開始請求消息,以便查詢專用芯片的使用情況。其中,該編解碼開始請求消息可以是I/O控制碼。步驟304:虛擬硬件模塊向資源分配器發(fā)送物理硬件資源申請消息;其中,虛擬硬件模塊在接收到編解碼開始請求消息后,可以首先查詢自己是否擁有硬件訪問權(quán)限,在具有硬件訪問權(quán)限后發(fā)送物理硬件資源申請消息。步驟305:資源分配器查詢專用芯片的使用情況。由于資源分配器可以監(jiān)視系統(tǒng)內(nèi)各模塊的負(fù)載情況,因此資源分配器可以確定專用芯片的使用情況,以確定是否存在空閑的專用芯片。例如,系統(tǒng)中預(yù)先配置了M個專用芯片,當(dāng)前已經(jīng)被虛擬機使用的專用芯片的個數(shù)小于M個,則可以確定出存在空閑的專用芯片;如果當(dāng)前已經(jīng)被虛擬機使用的專用芯片的個數(shù)達(dá)到M個,則確定不存在空閑的專用芯片。步驟306:資源分配器在確定出存在空閑的專用芯片時,向虛擬硬件模塊發(fā)送申請成功消息;在返回申請成功消息后,可以將專用芯片分配給音頻模塊所在的虛擬機使用一定時間,該時間段內(nèi)該虛擬機的音頻數(shù)據(jù)可以由專用芯片進(jìn)行處理。該時間段的具體數(shù)值可以根據(jù)實際情況設(shè)定。步驟307:虛擬硬件模塊根據(jù)所述申請成功消息向硬件驅(qū)動模塊發(fā)送硬件準(zhǔn)備就緒消息;其中,該硬件準(zhǔn)備就緒消息可以是I/O控制結(jié)果。步驟308:硬件驅(qū)動模塊根據(jù)所述硬件準(zhǔn)備就緒消息向編解碼組件發(fā)送表明硬件準(zhǔn)備就緒的初始化結(jié)果消息。步驟309:編解碼組件向硬件驅(qū)動模塊發(fā)送編解碼開始消息;步驟310:硬件驅(qū)動模塊接收到編解碼開始消息后,將要處理的音頻數(shù)據(jù)從VM的用戶態(tài)拷貝到VM的內(nèi)核態(tài),并向虛擬硬件模塊發(fā)送直接內(nèi)存存取(DirectMemoryAccess,DMA)指令;其中,編解碼組件位于VM的用戶態(tài)內(nèi),硬件驅(qū)動模塊位于VM的內(nèi)核態(tài)內(nèi)。音頻模塊發(fā)送編解碼調(diào)用消息后可以將要處理的數(shù)據(jù)發(fā)送給編解碼組件,使得要處理的音頻數(shù)據(jù)位于用戶態(tài)內(nèi)。為了后續(xù)數(shù)據(jù)傳輸,硬件驅(qū)動模塊需要從用戶態(tài)獲取要處理的音頻數(shù)據(jù)并保存在自身所在的內(nèi)核態(tài)。步驟311:虛擬硬件模塊根據(jù)所述DMA指令從VM的內(nèi)核態(tài)獲取所述要處理的音頻數(shù)據(jù),并將所述要處理的音頻數(shù)據(jù)傳輸給專用芯片;步驟312:專用芯片對所述要處理的音頻數(shù)據(jù)進(jìn)行編解碼處理;其中,專用芯片可以采用現(xiàn)有技術(shù)中的專用芯片,專用芯片可以提供比VM自身的CPU編解碼更高的性能。步驟313:專用芯片將處理后的音頻數(shù)據(jù)傳輸給虛擬硬件模塊;步驟314:虛擬硬件模塊獲取處理后的音頻數(shù)據(jù)后,向硬件驅(qū)動模塊發(fā)送DMA中斷指令;步驟315:硬件驅(qū)動模塊根據(jù)所述DMA中斷指令,從虛擬硬件模塊獲取處理后的音頻數(shù)據(jù),并將處理后的音頻數(shù)據(jù)發(fā)送給編解碼組件。其中,硬件驅(qū)動模塊虛擬硬件模塊獲取處理后的音頻數(shù)據(jù)后,可以通知編解碼組件,編解碼組件接收到通知后,可以將處理后的音頻數(shù)據(jù)從內(nèi)核態(tài)拷貝至用戶態(tài)。步驟316:編解碼組件將處理后的音頻數(shù)據(jù)發(fā)送給音頻模塊。圖4為本發(fā)明虛擬化環(huán)境下音頻處理方法另一實施例的流程示意圖,本實施例以使用VM自身的CPU對音頻數(shù)據(jù)進(jìn)行處理為例,參見圖4,本實施例包括:步驟401:音頻模塊向編解碼組件發(fā)送編解碼調(diào)用消息,該編解碼調(diào)用消息中攜帶要處理的音頻數(shù)據(jù)。步驟402:編解碼組件向硬件驅(qū)動模塊發(fā)送請求消息,該請求消息用于查詢專用芯片的使用情況;步驟403:硬件驅(qū)動模塊向虛擬硬件模塊發(fā)送編解碼開始請求消息,以便查詢專用芯片的使用情況。步驟404:虛擬硬件模塊向資源分配器發(fā)送物理硬件資源申請消息。上述的步驟401~404的具體內(nèi)容可以分別參見步驟301~304。步驟405:資源分配器查詢專用芯片的使用情況,并在不存在空閑的專用芯片時,進(jìn)一步查詢VM和VMM的使用情況。其中,在上一實施例的基礎(chǔ)上,如果查詢后不存在空閑的專用芯片,則還需要進(jìn)一步查詢VM和VMM的使用情況,如果VM的當(dāng)前使用率低于第一設(shè)定值而VMM的當(dāng)前使用率高于第二設(shè)定值,則確定由VM自己的CPU對音頻數(shù)據(jù)進(jìn)行處理。具體的,第一設(shè)定值用于表征VM的負(fù)載能力,當(dāng)VM的使用率高于第一設(shè)定值時,表明VM不能再處理音頻數(shù)據(jù),而如果VM的使用率低于第一設(shè)定值,表明VM還具有繼續(xù)處理音頻數(shù)據(jù)的能力;第二設(shè)定值用于表征VMM的負(fù)載能力,當(dāng)VMM的使用率高于第二設(shè)定值時,VMM不能再處理音頻數(shù)據(jù),而如果VMM的使用率低于第二設(shè)定值,表明VMM還具有繼續(xù)處理音頻數(shù)據(jù)的能力。上述的第一設(shè)定值和第二設(shè)定值可以根據(jù)實際情況進(jìn)行設(shè)置。步驟406:資源分配器在確定出不存在空閑的專用芯片且確定出使用VM自身進(jìn)行編解碼處理時,向虛擬硬件模塊發(fā)送申請失敗消息,并且該申請失敗消息中攜帶硬件不可得信息;步驟407:虛擬硬件模塊向硬件驅(qū)動模塊發(fā)送硬件準(zhǔn)備結(jié)果,該硬件準(zhǔn)備結(jié)果中攜帶硬件不可得信息;步驟408:硬件驅(qū)動模塊向編解碼組件發(fā)送請求結(jié)果,該請求結(jié)果中攜帶硬件不可得信息。步驟409:編解碼組件接收到該請求結(jié)果后,使用VM自身的CPU對要處理的音頻數(shù)據(jù)進(jìn)行編解碼處理。其中,VM自身的CPU內(nèi)會保存編解碼算法,可以完成對音頻數(shù)據(jù)的編解碼處理,此時,相當(dāng)于現(xiàn)有技術(shù)中沒有配備專用芯片時的編解碼處理。步驟410:編解碼組件將處理后的音頻數(shù)據(jù)發(fā)送給音頻模塊。圖5為本發(fā)明虛擬化環(huán)境下音頻處理方法另一實施例的流程示意圖,本實施例以使用VMM進(jìn)行音頻數(shù)據(jù)處理為例,參見圖5,本實施例包括:步驟501:音頻模塊向編解碼組件發(fā)送編解碼調(diào)用消息,該編解碼調(diào)用消息中攜帶要處理的音頻數(shù)據(jù)。步驟502:編解碼組件向硬件驅(qū)動模塊發(fā)送請求消息,該請求消息用于查詢專用芯片的使用情況;步驟503:硬件驅(qū)動模塊向虛擬硬件模塊發(fā)送編解碼開始請求消息,以便查詢專用芯片的使用情況。步驟504:虛擬硬件模塊向資源分配器發(fā)送物理硬件資源申請消息。上述的步驟501~504的具體內(nèi)容可以分別參見步驟301~304。步驟505:資源分配器查詢專用芯片的使用情況,并在不存在空閑的專用芯片時,進(jìn)一步查詢VM和VMM的使用情況。其中,在圖3所示的實施例的基礎(chǔ)上,如果查詢后不存在空閑的專用芯片,則還需要進(jìn)一步查詢VM和VMM的使用情況,如果VM的當(dāng)前使用率高于第一設(shè)定值而VMM的當(dāng)前使用率低于第二設(shè)定值,則確定由虛擬硬件的CPU對音頻數(shù)據(jù)進(jìn)行處理。關(guān)于第一設(shè)定值和第二設(shè)定值的具體說明可以參見上一實施例。另外,當(dāng)VM的當(dāng)前使用率低于第一設(shè)定值且VMM的當(dāng)前使用率低于第二設(shè)定值時,也就是VM和VMM都具有繼續(xù)處理音頻數(shù)據(jù)的能力時,可以隨機選擇VM或VMM進(jìn)行后續(xù)音頻數(shù)據(jù),或者,預(yù)先設(shè)定此種情況由VM或VMM進(jìn)行處理,或者,比較VM的使用率與第一設(shè)定值之間的比值,以及VMM的使用率與第二設(shè)定值之間的比值,選擇比值較小,也就是負(fù)載較輕的設(shè)備進(jìn)行處理。另外,當(dāng)VM和VMM都不具有繼續(xù)處理音頻數(shù)據(jù)的能力時,可以結(jié)束音頻數(shù)據(jù)處理。步驟506:資源分配器在確定出不存在空閑的專用芯片且確定出使用VMM進(jìn)行編解碼處理時,向虛擬硬件模塊發(fā)送申請失敗消息,該申請失敗消息中攜帶使用硬件模擬方式的信息;步驟507:虛擬硬件模塊向硬件驅(qū)動模塊發(fā)送硬件準(zhǔn)備結(jié)果,該硬件準(zhǔn)備結(jié)果攜帶使用硬件模擬方式的信息;步驟508:硬件驅(qū)動模塊向編解碼組件發(fā)送請求結(jié)果,該請求結(jié)果中攜帶使用硬件模擬方式的信息。步驟509:編解碼組件接收到攜帶使用硬件模擬方式的信息的請求結(jié)果后,向硬件驅(qū)動模塊發(fā)送編解碼開始消息;步驟510:硬件驅(qū)動模塊根據(jù)所述編解碼開始消息,將要處理的音頻數(shù)據(jù)從VM的用戶態(tài)拷貝到VM的內(nèi)核態(tài),并向虛擬硬件模塊發(fā)送DMA指令;步驟511:虛擬硬件模塊從VM的內(nèi)核態(tài)獲取要處理的音頻數(shù)據(jù),并使用VMM的CPU虛擬的硬件對要處理的音頻數(shù)據(jù)進(jìn)行處理;步驟512:虛擬硬件模塊在對音頻數(shù)據(jù)進(jìn)行處理后,向硬件驅(qū)動模塊發(fā)送DMA中斷指令;步驟513:硬件驅(qū)動模塊根據(jù)所述DMA中斷指令,從虛擬硬件模塊獲取處理后的音頻數(shù)據(jù),并將處理后的音頻數(shù)據(jù)發(fā)送給編解碼組件。其中,硬件驅(qū)動模塊虛擬硬件模塊獲取處理后的音頻數(shù)據(jù)后,可以通知編解碼組件,編解碼組件接收到通知后,可以將處理后的音頻數(shù)據(jù)從內(nèi)核態(tài)拷貝至用戶態(tài)將處理后的音頻數(shù)據(jù)發(fā)送給編解碼組件。步驟514:編解碼組件將處理后的音頻數(shù)據(jù)發(fā)送給音頻模塊。本發(fā)明實施例通過查詢系統(tǒng)資源的使用情況,采用上述三種之一的空閑的系統(tǒng)資源處理音頻數(shù)據(jù),可以配置較少的專用芯片,實現(xiàn)系統(tǒng)資源的充分利用并降低成本。圖6為本發(fā)明虛擬機環(huán)境下音頻處理設(shè)備一實施例的結(jié)構(gòu)示意圖,該設(shè)備可以是執(zhí)行上述方法的設(shè)備,該設(shè)備可以是提供云服務(wù)的服務(wù)器,該設(shè)備包括查詢模塊61和處理模塊62;查詢模塊61用于接收到編解碼調(diào)用消息后,查詢系統(tǒng)資源的使用情況,所述編解碼調(diào)用消息中攜帶要處理的音頻數(shù)據(jù),所述系統(tǒng)資源包括:專用芯片、VM和VMM;處理模塊62用于根據(jù)所述系統(tǒng)資源的使用情況,采用空閑的系統(tǒng)資源對所述要處理的音頻數(shù)據(jù)進(jìn)行處理??蛇x的,所述處理模塊具體用于:如果根據(jù)所述系統(tǒng)資源的使用情況確定出存在空閑的專用芯片,則使用所述空閑的專用芯片對所述要處理的音頻數(shù)據(jù)進(jìn)行處理;或者,如果根據(jù)所述系統(tǒng)資源的使用情況確定出不存在空閑的專用芯片,則根據(jù)VM的使用情況和VMM的使用情況,確定由VM或者VMM對所述要處理的音頻數(shù)據(jù)進(jìn)行處理??蛇x的,處理模塊進(jìn)一步用于在VM的使用率高于第一設(shè)定值且VMM的使用率低于第二設(shè)定值時,使用VMM對所述要處理的音頻數(shù)據(jù)進(jìn)行處理,或者,在VM的使用率低于第一設(shè)定值且VMM的使用率高于第二設(shè)定值時,使用VM對所述要處理的音頻數(shù)據(jù)進(jìn)行處理。本實施例通過查詢系統(tǒng)資源的使用情況,選擇空閑的系統(tǒng)資源處理音頻數(shù)據(jù),可以在配置較少的專用芯片時選擇由其他系統(tǒng)資源對音頻數(shù)據(jù)進(jìn)行處理,也就是說,可以根據(jù)實際情況選擇系統(tǒng)資源,而并不限定由單一的系統(tǒng)資源對音頻數(shù)據(jù)進(jìn)行處理,因此可以充分利用系統(tǒng)中的所有資源,降低配置較多專用芯片所需的成本。圖7為本發(fā)明虛擬機環(huán)境下音頻處理設(shè)備另一實施例的結(jié)構(gòu)示意圖,該設(shè)備包括編解碼組件71、硬件驅(qū)動模塊72、虛擬硬件模塊73、資源分配器74和專用芯片75;這些部件的組合可以完成上一實施例查詢模塊和處理模塊的功能??蛇x的,針對查詢:編解碼組件71用于接收音頻模塊發(fā)送的編解碼調(diào)用消息,從所述編解碼調(diào)用消息中獲取要處理的音頻數(shù)據(jù),并發(fā)送用于查詢專用芯片的使用情況的請求消息;硬件驅(qū)動模塊72用于根據(jù)所述編解碼組件71發(fā)送的用于查詢專用芯片的使用情況的請求消息,發(fā)送編解碼開始請求消息;虛擬硬件模塊73用于根據(jù)所述硬件驅(qū)動模塊72發(fā)送的編解碼開始請求消息,發(fā)送物理硬件資源申請消息;資源分配器74用于根據(jù)所述虛擬硬件模塊73發(fā)送的物理硬件資源申請消息,查詢專用芯片的使用情況,并在確定出存在空閑的專用芯片時,向虛擬硬件模塊73發(fā)送申請成功消息;所述虛擬硬件模塊73還用于根據(jù)所述申請成功消息向硬件驅(qū)動模塊72發(fā)送硬件準(zhǔn)備就緒消息;所述硬件驅(qū)動模塊72還用于根據(jù)所述硬件準(zhǔn)備就緒消息向編解碼組件71發(fā)送表明硬件準(zhǔn)備就緒的初始化結(jié)果消息.此時,針對處理:編解碼組件71用于接收到所述表明硬件準(zhǔn)備就緒的初始化結(jié)果消息后,向硬件驅(qū)動模塊72發(fā)送編解碼開始消息;硬件驅(qū)動模塊72用于根據(jù)所述編解碼開始消息將所述要處理的音頻數(shù)據(jù)拷貝到VM的內(nèi)核態(tài),并向虛擬硬件模塊73發(fā)送DMA指令;虛擬硬件模塊73用于根據(jù)所述DMA指令從VM的內(nèi)核態(tài)獲取所述要處理的音頻數(shù)據(jù),并將所述要處理的音頻數(shù)據(jù)傳輸給專用芯片75;專用芯片75用于對所述要處理的音頻數(shù)據(jù)進(jìn)行編解碼處理,并將處理后的音頻數(shù)據(jù)傳輸給虛擬硬件模塊73;虛擬硬件模塊73還用于獲取處理后的音頻數(shù)據(jù)后,向硬件驅(qū)動模塊72發(fā)送DMA中斷指令;硬件驅(qū)動模塊72還用于根據(jù)所述DMA中斷指令,從虛擬硬件模塊73獲取所述處理后的音頻數(shù)據(jù),并發(fā)送給編解碼組件71;編解碼組件71還用于將所述處理后的音頻數(shù)據(jù)發(fā)送給音頻模塊??蛇x的,針對查詢:編解碼組件71用于接收音頻模塊發(fā)送的編解碼調(diào)用消息,從所述編解碼調(diào)用消息中獲取要處理的音頻數(shù)據(jù),并發(fā)送用于查詢專用芯片的使用情況的請求消息;硬件驅(qū)動模塊72用于根據(jù)所述編解碼組件71發(fā)送的用于查詢專用芯片的使用情況的請求消息,發(fā)送編解碼開始請求消息;虛擬硬件模塊73用于根據(jù)所述硬件驅(qū)動模塊72發(fā)送的編解碼開始請求消息,發(fā)送物理硬件資源申請消息;資源分配器74用于根據(jù)所述虛擬硬件模塊73發(fā)送的物理硬件資源申請消息,查詢專用芯片的使用情況,并在確定出不存在空閑的專用芯片后,進(jìn)一步查詢VM和VMM的使用情況,并根據(jù)VM和VMM的使用情況確定出使用VM自身進(jìn)行編解碼處理時,向虛擬硬件模塊73發(fā)送攜帶硬件不可得信息的申請失敗消息;所述虛擬硬件模塊73還用于根據(jù)所述申請失敗消息,向硬件驅(qū)動模塊72發(fā)送攜帶硬件不可得信息的硬件準(zhǔn)備結(jié)果;所述硬件驅(qū)動模塊72還用于向編解碼組件71發(fā)送攜帶硬件不可得信息的請求結(jié)果。此時,針對處理:編解碼組件71用于接收到所述攜帶硬件不可得信息的請求結(jié)果后,使用自身的編解碼算法對所述要處理的音頻數(shù)據(jù)進(jìn)行編解碼處理,并將處理后的音頻數(shù)據(jù)發(fā)送給音頻模塊??蛇x的,針對查詢:編解碼組件71用于接收音頻模塊發(fā)送的編解碼調(diào)用消息,從所述編解碼調(diào)用消息中獲取要處理的音頻數(shù)據(jù),并發(fā)送用于查詢專用芯片的使用情況的請求消息;硬件驅(qū)動模塊72用于根據(jù)所述編解碼組件71發(fā)送的用于查詢專用芯片的使用情況的請求消息,發(fā)送編解碼開始請求消息;虛擬硬件模塊73用于根據(jù)所述硬件驅(qū)動模塊72發(fā)送的編解碼開始請求消息,發(fā)送物理硬件資源申請消息;資源分配器74用于根據(jù)所述虛擬硬件模塊73發(fā)送的物理硬件資源申請消息,查詢專用芯片的使用情況,并在確定出不存在空閑的專用芯片后,進(jìn)一步查詢VM和VMM的使用情況,并根據(jù)VM和VMM的使用情況確定出使用VMM進(jìn)行編解碼處理時,向虛擬硬件模塊73發(fā)送攜帶使用硬件模擬方式的信息的申請失敗消息;所述虛擬硬件模塊73還用于根據(jù)所述申請失敗消息,向硬件驅(qū)動模塊72發(fā)送攜帶使用硬件模擬方式的信息的硬件準(zhǔn)備結(jié)果;所述硬件驅(qū)動模塊72還用于向編解碼組件71發(fā)送攜帶使用硬件模擬方式的信息的請求結(jié)果。此時,針對處理:編解碼組件71用于接收到所述攜帶使用硬件模擬方式的信息的請求結(jié)果后,向硬件驅(qū)動模塊72發(fā)送編解碼開始消息;硬件驅(qū)動模塊72用于根據(jù)所述編解碼開始消息,將所述要處理的音頻數(shù)據(jù)拷貝到VM的內(nèi)核態(tài),并向虛擬硬件模塊73發(fā)送DMA指令;虛擬硬件模塊73用于根據(jù)所述DMA指令從VM的內(nèi)核態(tài)獲取所述要處理的音頻數(shù)據(jù),并采用虛擬硬件模塊自身的編解碼算法對所述要處理的音頻數(shù)據(jù)進(jìn)行處理,以及在對音頻數(shù)據(jù)進(jìn)行處理后,向硬件驅(qū)動模塊72發(fā)送DMA中斷指令;硬件驅(qū)動模塊72還用于根據(jù)所述DMA中斷指令,從虛擬硬件模塊73獲取所述處理后的音頻數(shù)據(jù),并發(fā)送給編解碼組件71;編解碼組件71還用于將所述處理后的音頻數(shù)據(jù)發(fā)送給音頻模塊。本發(fā)明實施例通過查詢系統(tǒng)資源的使用情況,可以采用專用芯片、VM或者VMM處理音頻數(shù)據(jù),可以配置較少的專用芯片,實現(xiàn)系統(tǒng)資源的充分利用并降低成本。本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。