語音會議創建方法、會議伺服器及系統與流程
2023-09-12 20:44:15 1

本發明涉及通信技術領域,尤其涉及語音會議創建方法、會議伺服器及系統。
背景技術:
在企業的日常運營中,不同地區的用戶會通過會議伺服器就某個專題進行語音會議交流。傳統會議伺服器利用通信設備配套的數位訊號處理(digitalsignalprocessing,簡稱dsp)晶片處理語音信息。隨著中央處理器(centralprocessingunit,簡稱cpu)的處理性能提升,現有會議伺服器實現了在單個cpu上對語音編解碼及混音的功能。
但是由於單個cpu的容量有限,基於單個cpu的會議伺服器的單個會議可參與的用戶較少,最多在100方左右。現有會議伺服器無法滿足某些特定的場景,比如200—300人的遠程培訓、講座等。雖然現有多個cpu的總容量滿足大容量會議的需求,但是現有技術卻無法利用多個cpu召開同一個大容量的會議。
技術實現要素:
本發明實施例提供一種語音會議的創建方法、會議伺服器及系統,可以實現跨cpu的會議,擴大了會議伺服器可創建的單個會議的容量。
第一方面,本發明提供了一種語音會議的創建方法,該方法應用於具有多個中央處理器cpu的會議伺服器,包括:
會議伺服器接收終端發送的會議創建請求,會議創建請求中攜帶會議的容量信息;根據會議創建請求中攜帶的會議的容量信息,確定會議伺服器包 括的多個cpu的總容量大於或者等於會議的容量;從多個cpu中選取總容量滿足會議的容量的至少兩個cpu;在至少兩個cpu之間建立通信連接,創建由至少兩個cpu進行語音信息處理的會議。因此,本發明實施例提供的方案能夠實現跨cpu的會議,擴大了會議伺服器可創建的單個會議的容量。
在一種可能的設計中,將至少兩個cpu分為主cpu和m-1個輔cpu,其中m為大於或者等於2的正整數;在主cpu和所述m-1個輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息;將接入會議的終端的語音信息分配到m個cpu進行語音信息處理,創建會議。
具體地,通過設置主cpu和輔cpu,以及將主cpu和m-1個輔cpu中的每一個輔cpu建立通信連接的方式,實現了終端的語音信息之間跨cpu互通,實現了單個會議跨cpu。
在一種可能的設計中,為所述主cpu配置m-1個會議資源點,分別為所述m-1個輔cpu中的每一個輔cpu配置一個會議資源點;將所述主cpu的m-1個會議資源點分別與所述m-1個輔cpu中的每一個輔cpu的會議資源點配對;所述主cpu分別與所述m-1個輔cpu中的每一個輔cpu通過配對的會議資源點交換語音信息。
在一種可能的設計中,分別為所述m-1個輔cpu中的每一個輔cpu配置第一共享內存和第二共享內存;所述主cpu將所述至少兩個cpu中除第i個輔cpu的語音信息存放在所述第i個輔cpu的第一共享內存中;所述主cpu從所述第i個輔cpu的第二共享內存中獲取第i個輔cpu的語音信息,其中,i為大於或者等於1且小於或者等於m-1的正整數。
更具體地,通過為主cpu和輔cpu建立通信通道直接交換語音信息的方式;或者通過為主cpu和輔cpu配置共享內存通過間接存取的方式交換語音信息等方式,實現了主cpu和輔cpu之間的互通。在實際應用中,可根據實際軟硬體性能,選擇其中一種或者兩種方式的結合,實現跨cpu會議。
需要說明的是,對於接入會議的終端的分配,可以採取平衡負載原則,將接入會議的終端的語音信息平均分配到至少兩個cpu;或者可以採取最大負載原則,將接入會議的終端的語音信息依次分配到至少兩個cpu。在實際應用中,可根據實際設計的需要,選擇其中一種分配方式,將終端的語音信息分配到各cpu進行處理。
在一種可能的設計中,會議伺服器運行一個會議控制進程,多個cpu中的每一個cpu上運行一個語音處理進程;語音處理進程用於對語音信息進行編解碼及混音,會議控制進程用於管理和調度語音處理進程;會議控制進程從多個cpu中選取總容量滿足會議的容量的至少兩個cpu;會議控制進程在至少兩個cpu上運行的至少兩個語音處理進程之間建立通信連接,會議控制進程將接入會議的終端的語音信息分配到至少兩個語音處理進程進行語音信息處理,創建會議。
具體地,可根據實際設計,將會議伺服器拆分成會議控制和語音處理兩部分,在相應的cpu上布置相關進程,完成相應的方法步驟或功能。各cpu上運行的語音處理進程之間的互通方式可參見上述主cpu和輔cpu之間實現互通的方式。
第二方面,本發明提供了一種會議伺服器,具有多個中央處理器cpu,包括:
接收單元,用於接收終端發送的會議創建請求,會議創建請求中攜帶會議的容量信息;確定單元,用於根據會議創建請求中攜帶的會議的容量信息,確定會議伺服器包括的多個cpu的總容量大於或者等於會議的容量;選取單元,用於從多個cpu中選取總容量滿足會議的容量的至少兩個cpu;創建單元,用於在至少兩個cpu之間建立通信連接,創建由至少兩個cpu進行語音信息處理的會議。
在一種可能的設計中,創建單元具體用於:將至少兩個cpu分為主cpu和m-1個輔cpu,其中m為大於或者等於2的正整數;在主cpu和m-1個 輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息;將接入會議的終端的語音信息分配到m個cpu進行語音信息處理,創建會議。
在一種可能的設計中,創建單元包括:第一配置子單元,用於為主cpu配置m-1個會議資源點,分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點;配對子單元,用於將主cpu的m-1個會議資源點分別與m-1個輔cpu中的每一個輔cpu的會議資源點配對;主cpu分別與m-1個輔cpu中的每一個輔cpu通過配對的會議資源點交換語音信息。
在一種可能的設計中,創建單元包括:第二配置子單元,用於分別為m-1個輔cpu中的每一個輔cpu配置第一共享內存和第二共享內存;其中,主cpu將所述至少兩個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內存中;主cpu從第i個輔cpu的第二共享內存中獲取第i個輔cpu的語音信息,其中,i為大於或者等於1且小於或者等於m-1的正整數。
在一種可能的設計中,會議伺服器運行一個會議控制進程,多個cpu中的每一個cpu上運行一個語音處理進程;語音處理進程用於對語音信息進行編解碼及混音,會議控制進程用於管理和調度語音處理進程;會議控制進程從多個cpu中選取總容量滿足會議的容量的至少兩個cpu;會議控制進程在至少兩個cpu上運行的至少兩個語音處理進程之間建立通信連接,會議控制進程將接入會議的終端的語音信息分配到至少兩個語音處理進程進行語音信息處理,創建會議。
第三方面,本發明提供了一種會議伺服器,包括:網卡、存儲器、多個處理器和總線;網卡配置多個通信接口,其中,終端通過通信接口交換語音信息;存儲器用於存儲程序和終端的語音信息;網卡、存儲器和處理器通過總線通信;當會議伺服器運行時,處理器用於執行存儲器存儲的程序,以執行上述第一方面所述的方法。
第四方面,本發明提供了一種語音會議的創建系統,包括:
終端,用於向會議伺服器發送會議創建請求,會議創建請求中攜帶會議的容量信息;會議伺服器,用於接收終端發送的會議創建請求,根據會議創建請求中攜帶的會議的容量信息,確定會議伺服器包括的多個cpu的總容量大於或者等於會議的容量;從多個cpu中選取總容量滿足會議的容量的至少兩個cpu;在至少兩個cpu之間建立通信連接,創建由至少兩個cpu進行語音信息處理的會議。
在一種可能的設計中,會議伺服器具體用於:將至少兩個cpu分為主cpu和m-1個輔cpu,其中m為大於或者等於2的正整數;在主cpu和m-1個輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息;將接入會議的終端的語音信息分配到至少兩個cpu進行語音信息處理,創建會議。
在一種可能的設計中,會議伺服器具體用於:為主cpu配置m-1個會議資源點,分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點;將主cpu的m-1個會議資源點分別與m-1個輔cpu中的每一個輔cpu的會議資源點配對;主cpu分別與m-1個輔cpu中的每一個輔cpu通過配對的會議資源點交換語音信息。
在一種可能的設計中,會議伺服器具體用於:分別為m-1個輔cpu中的每一個輔cpu配置第一共享內存和第二共享內存;主cpu將至少兩個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內存中;主cpu從第i個輔cpu的第二共享內存中獲取第i個輔cpu的語音信息,其中,i為大於或者等於1且小於或者等於m-1的正整數。
基於上述技術方案,本發明實施例提供的語音會議創建方法、會議伺服器及系統,可以實現跨cpu的單個會議,擴大了多cpu核的會議伺服器可創建的單個會議的容量,利用了各cpu的碎片資源,提升了用戶體驗及cpu利用率。
附圖說明
圖1為語音會議使用場景架構圖;
圖2為本發明實施例提供的一種語音會議創建方法流程圖;
圖3為本發明實施提供的主cpu和輔cpu之間建立通信連接一種具體的實現方式;
圖4為本發明實施提供的會議控制進程與語音處理進程之間的通信連接關係圖;
圖5為本發明實施例提供的一種語音會議創建流程圖;
圖6為本發明實施提供的主cpu和輔cpu之間建立通信連接另一種具體的實現方式;
圖7為本發明實施例提供的另一種語音會議創建流程圖;
圖8為本發明實施例提供的一種語音會議創建信令流程圖;
圖9為本發明實施例提供的一種參會人員入會流程圖;
圖10為本發明實施例提供的另一種語音會議創建信令流程圖;
圖11為本發明實施例提供的另一種參會人員入會流程圖;
圖12a為本發明實施例提供的一種會議伺服器結構示意圖;
圖12b為本發明實施例提供的另一種會議伺服器結構示意圖;
圖13a為本發明實施例提供的一種創建單元1204結構示意圖;
圖13b為本發明實施例提供的另一種創建單元1204結構示意圖;
圖14為本發明實施例提供的又一種會議伺服器結構示意圖;
圖15為本發明實施例提供的一種語音會議創建系統架構圖。
具體實施方式
下面將結合附圖,對本發明實施例中的技術方案進行清楚、完整地描述。顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有付出創造性勞 動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
本發明實施例描述的會議伺服器框架以及業務場景是為了更加清楚的說明本發明實施例的技術方案,並不構成對於本發明實施例提供的技術方案的限定,本領域普通技術人員可知,隨著會議伺服器的演變和新業務場景的出現,本發明實施例提供的技術方案對於類似的技術問題,同樣適用。
圖1示出了語音會議使用場景架構圖。如圖1所示,多個用戶語音終端通過會議伺服器相互通話。其中,用戶語音終端可以包括具有無線或有線語音通話功能的電腦終端、手機終端和話機終端等等。具體地,將上述可做語音通話的設備統稱為終端。各終端分別與會議伺服器對接,通過會議伺服器將語音混音、編碼及解碼,實現多方語音會議。本發明所涉及的會議伺服器可以是通用伺服器,如基於x86的pcserver。
在一個示例中,有的終端需要通過公共交換電話網絡(publicswitchedtelephonenetwork,簡稱pstn)撥打或接聽電話,終端需要與pstn網關對接後,再接入會議伺服器,因此,將需要與pstn網關對接的終端統稱為pstn終端。普通終端可以直接與會議伺服器對接。
進一步地,pstn網關將pstn終端發送的pstn語音數據轉換成實時傳輸協議(real-timetransportprotocol,簡稱rtp)網絡報文,並將轉換後的rtp網絡報文發送到會議伺服器。同時,pstn網關將從會議伺服器接收到的rtp網絡報文轉換成pstn語音數據給pstn終端。普通終端直接將語音數據轉換成rtp網絡報文發送到會議伺服器,並接收會議伺服器發送的rtp網絡報文,將收到的rtp網絡報文解碼成語音數據。以下實施例中可能涉及pstn終端和(普通)終端,其具體涉及的語音數據格式可參照此部分的解釋,將不予贅述。
以下以圖2為例說明本發明提供的語音會議創建方法流程,圖2為本發明實施例提供的語音會議創建方法流程圖,所述方法應用於具有多個中央處 理器cpu的會議伺服器,所述方法具體包括步驟201—204:
在步驟201,會議伺服器接收終端發送的會議創建請求,會議創建請求中攜帶會議的容量信息。
具體地,會議的容量信息包括預留參會人數、及對cpu處理能力和cpu存儲能力的要求信息。
其中,會議伺服器接收終端發送的會議創建請求之前,向多個cpu中的每一個cpu發送容量查詢請求,統計每一個cpu的容量。
在步驟202,根據會議創建請求中攜帶的會議的容量信息,確定會議伺服器包括的多個cpu的總容量大於或者等於會議的容量。
具體地,會議伺服器中包括的多個cpu的總容量可理解為會議伺服器包括的各個cpu剩餘可用容量的總和。
在步驟203,從多個cpu中選取總容量滿足會議的容量的至少兩個cpu。
具體地,當單個cpu的容量不能滿足會議的容量時,選擇其中總容量滿足會議的容量的至少兩個cpu。
需要說明的是,將終端的語音信息平均分配到至少兩個cpu,或者將終端的語音信息依次分配到至少兩個cpu,當一個cpu的剩餘容量達到閾值時,則分配到下一個cpu。
在步驟204,在至少兩個cpu之間建立通信連接,創建由至少兩個cpu進行語音信息處理的會議。
具體地,會議伺服器可將至少兩個cpu分為主cpu和m-1個輔cpu,其中,m為大於或者等於2的正整數。在主cpu和每個輔cpu之間建立通信連接,使得m個cpu下的終端的語音信息互通。其中,m-1個輔cpu之間通過主cpu交換語音信息,創建由m個cpu進行語音信息處理的會議。
可以理解的是,至少兩個cpu其數量可用m代表,m≥2,且m為正整數。下文中提到的m個cpu即代表至少兩個cpu。需要說明的是,對於接入會議的終端的分配,可以採取平衡負載原則,將接入會議的終端的語音信 息平均分配到m個cpu進行語音信息處理。或者可以採取最大負載原則,將接入會議的終端的語音信息依次分配到m個cpu中的每一個cpu進行語音信息處理,其中,當m個cpu中的第m個cpu的剩餘容量小於或者等於第一閾值時,將會停止為第m個cpu分配接入會議的終端的語音信息,其中,m-1≥m≥1,且m為正整數。具體地,接入會議的終端的語音信息的的分配原則並不局限與本發明實施例提供的方式,還可採取其他方式。
具體地,在主cpu和輔cpu之間建立通信連接的方法可包括多種途徑,例如可為主cpu和輔cpu建立通信通道直接交換語音信息,或者可為主cpu和輔cpu配置共享內存通過間接存取的方式交換語音信息等,具體可參見圖3—圖7所示。
以下以圖3為例說明本發明實施例提供語音會議創建方法,圖3為本發明實施提供的主cpu和輔cpu之間建立通信連接的一種具體的實現方式,如圖3所示,主cpu和每一個輔cpu之間通過配對的會議資源點建立通信連接,直接交換語音信息。
可以理解的是,這裡的會議資源點指的是可以進行信息傳輸的實體或者虛擬埠,其命名不限於會議資源點。
在一個示例中,設輔cpu共有m-1個,會議伺服器為主cpu配置m-1個會議資源點,分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點。將主cpu的m-1個會議資源點分別與m-1個輔cpu中的每一個輔cpu的會議資源點一一配對。例如,將主cpu配置m-1個會議資源點中的第i個會議資源點與第i個輔cpu的會議資源點進行配對。其中,m-1≥i≥1,且i為正整數。主cpu與m-1個輔cpu中的每一個輔cpu分別通過已經配對成功的會議資源點交換語音信息。主cpu獲取每一個輔cpu的語音信息,並將m個cpu中除第i個輔cpu的語音信息發送給第i個輔cpu。
以下以圖4為例說明本發明實施例提供語音會議創建方法。
在一個可能的設計中,可將會議伺服器拆分成會議控制和語音處理兩部分,會議控制單獨部署一個進程,記為會議控制進程;語音處理單獨部署n個進程,記為n個語音處理進程。每個語音處理進程單獨綁定一個cpu核,會議控制進程可根據實際情況選擇不綁定cpu核,或者綁定語音處理進程外的其他cpu核。每個語音處理進程只能在其綁定的cpu核上運行。會議控制進程統一管理和調度語音處理進程,語音處理進程用於對語音數據進行編解碼及混音。
圖4為本發明實施提供的會議控制進程與語音處理進程之間的通信連接關係圖,如圖4所示,會議控制進程41與每一個語音處理進程42均有通信連接,用以會議控制進程41統一管理和調度每一個語音處理進程42。
進一步地,可指定其中一個語音處理進程42為主處理進程421,其餘語音處理進程為輔處理進程422。其中,主處理進程421分別與輔處理進程422中的每一個輔處理進程422建立通信連接,以主處理進程421為中心點分別和各個輔處理進程422實現星狀互通。各個輔處理進程422通過主處理進程交換語音信息。
可以理解的是,通過會議控制進程41管理和調控每一個語音處理進程42,將參會終端的語音信息分配到各語音處理進程42,進一步,通過將語音處理進程劃分主處理進程421和輔處理進程422,並為主處理進程421和各輔處理進程422之間建立通信連接,將不同語音處理進程下的終端的語音信息互通,創建了跨cpu的語音會議。具體主處理進程421和各輔處理進程422之間建立通信連接的方法可參考圖3、圖5所示的主cpu與各輔cpu之間建立通信連接的方法。為了方便區分,每個語音處理進程42設有專用進程標識。可以理解的是,為了簡化說明,以下提到語音處理進程42的容量即指代語音處理進程42所綁定的cpu的容量。
以下以圖5為例說明本發明實施例提供的語音會議創建方法,圖5為本 發明實施例提供的一種語音會議創建流程圖,其中,會議伺服器包括應用進程50、作業系統(operatingsystem,簡稱os)51和硬體52。
具體地,應用進程50用於在cpu上運行,以處理終端的語音信息。可包括會議控制進程501和多個語音處理進程502。作業系統51用於執行應用進程50。硬體52包括多個cpu、內存和網卡,用於接收語音信息,並對語音信息進行存儲、處理和轉發。
具體地,當創建一個會議a時,會議控制進程501判斷會議a的會議容量;當單個語音處理進程502的容量不能滿足要求時,查找總容量能夠滿足會議a的m個語音處理進程502數量及進程標識,將會議a建立在標識的m個語音處理進程502上。可以理解的是,在會議a進行過程中,當會議a中參加會議的人員開始超過起始預訂人員時,可動態擴容,直至將會議伺服器中所有語音處理進程502的容量佔用為止。
具體地,參會人員可以自行通過終端撥打統一會議接入碼、然後輸入會議的身份標識號(identity,簡稱id)和密碼的方式接入會議,或者通過會議伺服器召集的方式邀請指定會議人員對應的終端接入會議。
進一步地,會議控制進程可以按照均衡負載原則,將終端的語音信息平均分配到各個語音處理進程。或者會議控制進程可以按照最大負載原則將終端的語音信息依次接入不同的語音處理進程。
同樣地,會議控制進程501將m個語音處理進程502分為主處理進程和m-1個輔處理進程,其中,主處理進程和m-1個輔處理進程互通的方法可參見圖3通過配對的會議資源點建立通信連接的方式,在此不復贅述。其數據交互信令流程參見步驟531—539:
假設patn終端a、終端c、終端d同時說話,其中,會議控制進程記為conf_ctrl,語音處理進程記為conf_media1、…、conf_median,n≥1,且n為正整數。conf_ctrl將pstn終端a、終端c的語音通過rtp網絡報文方式傳送到conf_media0,conf_ctrl將終端d的語音通過rtp網絡報文方 式傳送到conf_media1。
在步驟531,pstn網關將pstn終端a發送的pstn語音信息轉換成rtp網絡報文,並發送到conf_media0。
在步驟532,終端c將語音信息編碼打包成rtp網絡報文發送給會議伺服器的conf_media0。
在步驟533,終端d將語音信息編碼打包成rtp網絡報文發送給會議伺服器的conf_media1。
設定conf_media0為主處理進程,conf_media1為輔處理進程。同時,輔處理進程還可包括其他語音處理進程,例如圖5中的conf_median。
設輔處理進程有m-1個,conf_ctrl為主處理進程分配m-1個會議資源點,為各個輔處理進程分配一個會議資源點,並將主處理進程與各輔處理進程的會議資源點一一配對。則,各個語音處理進程之間可以通過網絡報文的形式交換語音信息。主處理進程獲取每一個輔處理進程的語音信息,然後主處理進程將m個語音處理進程中除第i個輔處理進程的語音信息發送給第i個輔處理進程,其中,m-1≥i≥1,且i為正整數。
在步驟534,conf_media0利用綁定的cpu0將pstn終端a和終端c的語音解碼後,再混音打包成一路語音編碼以rtp網絡報文的方式通過已配對的會議資源點發送到conf_media1。
在步驟535,conf_media1利用綁定的cpu3將終端d的語音解碼後,單獨混音一路編碼後以rtp網絡報文的方式通過已配對的會議資源點發送給conf_media0。
在一個示例中,設定conf_media0為主處理進程,輔處理進程還可包括conf_media2。輔處理進程conf_media1和conf_media2分別將語音信息通過rtp網絡報文的方式發送給主處理進程conf_media0。主處理進程conf_media0將conf_media1和語conf_media2的語音信息解碼後,將conf_media0和conf_media2包括的語音信息混音編碼通過rtp網絡報文的 方式發送給conf_media1,將conf_media0和conf_media1包括的語音信息混音編碼通過rtp網絡報文的方式發送給conf_media2。
在步驟536,conf_media0將conf_media1和用戶a、c的語音解碼,並將解碼後的conf_media1和終端c的語音混音一路編碼後以rtp網絡報文格式發送pstn終端a,pstn網關將從會議伺服器收到的rtp網絡報文轉換成pstn語音數據給pstn終端a。
在步驟537,conf_media0將conf_media1和用戶a、c的語音解碼,並將解碼後的conf_media1和pstn終端a的語音混音一路編碼後以rtp網絡報文格式發送終端c。
在步驟538,conf_media1將conf_media0和終端d的語音解碼,並將解碼後的conf_media0和終端d的語音混音一路編碼後以rtp網絡報文格式發送終端b。
在步驟539,conf_media1將conf_media0和終端d的語音解碼,並將解碼後的conf_media0語音單獨混音一路編碼後以rtp網絡報文格式發送給終端d。
以下以圖6為例說明本發明實施例提供語音會議創建方法,圖6為本發明實施提供的主cpu和輔cpu之間建立通信連接另一種具體的實現方式,如圖6所示,主cpu和每一個輔cpu之間通過共享內存存取終端語音信息的方式建立通信連接。
在一個示例中,設輔cpu共有m-1個,會議伺服器分別為m-1個輔cpu中的每一個輔cpu配置共享內存,包括第一共享內存和第二共享內存。主cpu將m個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內存中,主cpu從第i個輔cpu的第二共享內存中獲取第i個輔cpu的語音信息,其中,m-1≥i≥1,且i為正整數。
本發明實施例提供的語音會議創建方法,通過為單一會議下的cpu建立 通信連接,實現了跨cpu的語音會議,增加了單個會議可容納的人數。同時,本發明充分利用不同cpu的剩餘容量,將多個cpu的資源利用去碎片化,提升了用戶體驗及cpu的利用率。
以下以圖7為例說明本發明實施例提供的語音會議創建方法,圖7為本發明實施例提供的另一種語音會議創建流程圖,如圖7所示,會議伺服器包括應用進程70、會議控制進程701、語音處理進程702、os71、硬體72。具體參見圖6中的說明,在此不予贅述。
具體地,圖4或圖7所示通過配置共享內存間接存取的方式交換語音信息的語音會議,其數據交互信令參見步驟731—739:
具體地,步驟731—步驟733、以及步驟736—739可參照圖6步驟631—步驟633、以及步驟636—639所述,在此不予贅述。以下介紹步驟734—步驟735:
設輔處理進程有m-1個,conf_ctrl為每個輔處理進程配置2個共享內存,分別記為共享內存0和共享內存1。即共配置共享內存2×(m-1)個,其中m-1個共享內存0由主處理進程做生產者(數據發送方)、m-1輔處理進程做消費者(數據接收方);剩餘m-1個共享內存1由m-1個輔處理進程做生產者(數據發送方)、主處理進程做消費者(數據接收方)。
具體地,主處理進程從第i個輔處理進程的共享內存1中獲取第i個輔處理進程的語音信息,主處理進程將m個語音處理進程中除第i個輔處理進程的語音信息存放在第i個輔處理進程的共享內存0中,其中,m-1≥i≥1,且i為正整數。以下設定conf_media0為主處理進程,conf_media1為輔處理進程。
在步驟734,conf_media0利用綁定的cpu0將pstn終端a和終端c的語音解碼後,再混音打包成一路語音編碼存放在conf_media1的共享內存0。conf_media1通過它的共享內存0獲取conf_media0的語音信息。
在步驟735,conf_media1利用綁定的cpu1將終端d語音單獨混音一路編碼後存放在conf_media1的共享內存1。conf_media0通過conf_media1的共享內存1獲取conf_media1的語音信息。
在一個示例中,設定conf_media0為主處理進程,輔處理進程還可包括conf_media2。主處理進程conf_media0分別通過輔處理進程conf_media1和conf_media2的共享內存1獲取conf_media1和conf_media2的語音信息。主處理進程conf_media0將conf_media1和語conf_media2的語音信息解碼後,將conf_media0和conf_media2包括的語音信息混音編碼存放在conf_media1的共享內存0,將conf_media0和conf_media1包括的語音信息混音編碼存放在conf_media2的共享內存0。
需要說明的是,採用建立通信通道直接交換語音信息創建語音會議的方法,相對較簡單,但對cpu的處理能力要求高一些;另外,採用配置共享內存間接存取的方式交換語音信息創建語音會議的方法,對內存的需要高一些。本發明實施例可根據具體的硬體信息,選擇採取哪種方案使得cpu之間互通,具有很好的靈活性。
以下以圖8為例說明本發明實施例提供的語音會議創建方法,圖8為本發明實施例提供的一種語音會議創建信令流程圖,如圖8所示,包括步驟801—步驟812:
在步驟801,會議控制進程啟動時,從各語音處理進程獲取對應的各cpu的容量信息。
在步驟802,查詢會議能力。
具體地,會議控制進程啟動時,通過進程間消息通信的方式分別向n個語音處理進程發送會議資源的初始容量查詢請求。
在步驟803,會議能力響應。
具體地,各語音處理進程收到查詢請求後,將初始容量上報給會議控制 進程。
在步驟804,保存各進程的會議容量,後續由會議控制進程統一管理調度。
在步驟805,創建會議a。
具體地,終端向會議伺服器發出創建會議a的請求,其中,終端發送的會議a的創建請求中攜帶會議a的容量信息。如果所有語音處理進程對應的cpu總容量不夠創建會議a,直接向終端返回失敗;如果剩餘會議資源足夠,則創建會議a。
在步驟806,檢查會議a的預留容量,根據各個進程當前剩餘的會議能力判斷是否需要在多於一個的語音處理進程上建立會議。
具體地,設m個語音處理進程對應的cpu總容量滿足會議a的容量需求。當m≥2時,指定其中一個語音處理進程為主處理進程,其餘m-1個語音處理進程為輔處理進程,以主處理進程為中心點分別和m-1個輔處理進程實現星狀互通。其具體互通方法可參照圖3—圖7的介紹,在此不予贅述。以下以其中一種通過配對會議資源點直接交換語音信息的方式為例,說明本發明。
在步驟807,申請會議a1,會議a1在語音處理進程1所在的cpu1上運行。設定語音處理進程1為主處理進程,進一步地,並獲取會議a1的會議資源點,假設是埠p1,p2…p(m-1)。
在步驟808,申請會議a2,會議a2在語音處理進程2所在的cpu2上運行,並獲取會議a2的會議資源點,假設是埠pm。
在步驟809,申請會議am,會議am在語音處理進程m所在的cpum上運行,並獲取會議am的會議資源點,假設是埠p(2m-2)。
需要說明的是,這裡的語音處理進程與cpu對應的順序和標號只是為了方便解釋本發明,它們各自的標號可以不是固定的,只需滿足一個語音處理進程綁定一個cpu即可。
在步驟810,將系統資源點配對,將語音處理進程1的會議資源點p1與 語音處理進程2的會議資源點pm配對,使用對,在語音處理進程1上開啟會議通道,使用對在語音處理進程2上開啟會議通道,此時語音處理進程1和語音處理進程2就互通了。依次對各個輔處理進程處理,直到主處理進程1和所有相關的輔處理進程互通。
在步驟811,語音處理進程1與語音處理進程2互通。
在步驟812,語音處理進程1與語音處理進程m互通。
具體地,使用對,在語音處理進程1上開啟會議通道,使用對在語音處理進程m上開啟會議通道,語音處理進程1與語音處理進程m互通。
需要說明的是,主處理進程與各輔處理進程通過rtp網絡報文方式交換語音信息。傳送的細節依賴於會議伺服器作業系統的傳輸控制協議/網際網路互聯協議(transmissioncontrolprotocol/internetprotocol,簡稱tcp/ip)棧處理完成,在此不予贅述。
以下以圖9為例說明本發明實施例提供的語音會議創建方法,圖9為本發明實施例提供的一種參會人員入會流程圖,如圖9所示,包括步驟901—步驟917:
在步驟901,語音處理進程1與語音處理進程2互通。
在步驟902,語音處理進程1與語音處理進程m互通。
具體地,步驟901和步驟902可參見步驟810—步驟812所述,在此不予贅述。
在步驟903,終端a撥打會議接入碼,輸入會議a的id及對應密碼。
具體地,其中一個參會終端向會議伺服器發送會議a創建請求,若會議控制進程檢查所有語音處理進程總容量滿足會議a使用,則創建會議a。會 議伺服器為會議a設定統一的會議接入碼、會議id和密碼。
在步驟904,按照均衡負載原則,將終端a分配到語音處理進程1。
具體地,將參會人員的語音信息平均分配到各語音處理進程。
在步驟905,將終端a的信息設置到語音處理進程1。
在步驟906,將語音處理進程1上的會議通道信息告知到終端a。
在步驟907,終端a與語音處理進程1互通。
在步驟908,終端b撥打會議接入碼,輸入會議a的id及對應密碼。
在步驟909,按照均衡負載原則,將終端b分配到語音處理進程2。
在步驟910,將終端b的信息設置到語音處理進程2。
在步驟911,將語音處理進程2上的會議通道信息告知到終端b。
在步驟912,終端b與語音處理進程2互通。
在步驟913,邀請終端c入會,按照均衡負載原則,將終端c分配到語音處理進程m。
具體地,會議控制進程邀請邀請終端c入會的同時,將語音處理進程m上的會議通道信息告知到終端c。
在步驟914,邀請終端c接入會議a。
在步驟915,終端c應答入會。
在步驟916,將終端c的信息設置到語音處理進程m。
在步驟917,終端c與語音處理進程m互通。
進一步地,因所有語音處理進程都是通過相應的會議控制進程統一管理調度,因此實際參加會議的人員並未感知到這種內部處理的差異。但是卻實現了跨cpu會議和各cpu資源利用去碎片化。
以下以圖10為例說明本發明實施例提供的語音會議創建方法,圖10為本發明實施例提供的另一種語音會議創建信令流程圖,如圖10所示,包括步驟1001—步驟1009:
具體地,步驟1001—步驟1006參見步驟801—步驟806所述,在此不予贅述。以下介紹步驟1007—步驟1009:
終端向會議伺服器發出創建會議a的請求,其中,終端發送的會議a的創建請求中攜帶會議a的容量信息。如果所有語音處理進程對應的cpu總容量滿足會議a的容量需求,則創建會議a。設m個語音處理進程對應的cpu總容量滿足會議a的容量需求,以m大於等於2為例,會議a創建的時候,會議控制進程指定m個語音處理進程中的一個語音處理進程為主處理進程,其他m-1個語音處理進程為輔處理進程。主處理進程可以通過共享內存方案實現與各輔處理進程交換語音數據。參見步驟1007—步驟1009:
在步驟1007,申請會議a1。
在步驟1008,申請會議a2。
具體地,設會議a1所在的語音處理進程1為主處理進程,會議控制進程會為會議a2所在的語音處理進程2和語音處理進程1配置共享內存0和共享內存1。
在步驟1009,申請會議am。
具體地,會議控制進程會為會議am所在的語音處理進程m和語音處理進程1配置共享內存0和共享內存1。
需要說明的是,採用共享內存方案時,當會議a創建成功之後,創建2(m-1)個共享內存塊分別作為在主處理進程和各輔處理進程之間交換語音編碼數據的載體。進一步地,為了方便區分各個共享內存,將第i個輔處理進程做消費者的共享內存命名為第i個輔處理進程的第一共享內存或共享內存0,將第i個輔處理進程做生產者的共享內存命名為第i個輔處理進程的第二共享內存或共享內存1。
具體地,共享內存的大小依賴於採用的編解碼程序及設置的最大時延而定,在共享內存中存放的一幀數據的大小由採用的語音編解碼程序而定,以20ms打包時長,64kbps速率的g711編解碼程序為例,一幀數據為160位元組, 假定允許的最大時延是200ms,那麼一塊共享內存只要能夠存儲10幀數據就足夠,即1600位元組大小即已足夠。可以理解的是,上述數據只用來解釋本發明,並不用於限定本發明。
以下以圖11為例說明本發明實施例提供的語音會議創建方法,圖11為本發明實施例提供的另一種參會人員入會流程圖,如圖11所示,包括步驟1101—步驟1117:
在步驟1101,終端a撥打會議接入碼,輸入會議a的id及對應密碼。
在步驟1102,按照最大負載原則,將終端a分配到語音處理進程1。
在步驟1103,將終端a的信息設置到語音處理進程1。
在步驟1104,將語音處理進程1上的會議通道信息告知到終端a。
在步驟1105,終端a與語音處理進程1互通。
在步驟1106,終端b撥打會議接入碼,輸入會議a的id及對應密碼。
在步驟1107,按照最大負載原則,發現語音處理進程1已到達分擔臨界,遂分配到語音處理進程2,並為語音處理進程1和語音處理進程2分別分配一個系統資源點進行互通。
在步驟1108,將語音處理進程2的系統資源信息設置到語音處理進程1。
在步驟1109,將語音處理進程1的系統資源信息設置到語音處理進程2。
在步驟1110,語音處理進程1與語音處理進程2互通。
在步驟1111,將語音處理進程2上的會議通道信息告知到終端b。
在步驟1112,終端b與語音處理進程2互通。
在步驟1113,邀請終端c入會,按照最大負載原則,將終端c分配到語音處理進程2。
在步驟1114,邀請終端c接入會議a。
在步驟1115,終端c應答入會。
在步驟1116,將終端c的信息設置到語音處理進程m。
在步驟1117,終端c與語音處理進程m互通。
需要說明的是,無論是採用均衡負載原則分配終端的語音信息還是採用最大負載原則分配終端的語音信息。參見圖3、圖5—圖7所示,會議伺服器內部各cpu運行的語音處理進程之間都可通過配對的會議資源點或者共享內存方案交換語音信息。
具體地,可根據參會人員的分配原則決定主處理進程與各輔處理進程互通的時間。
例如圖9所示的實施例,會議控制進程根據均衡負載原則將終端的語音信息平均分配到各個語音處理進程,那麼,主處理進程與各輔處理進程互通可以在各個終端接入會議伺服器之前完成。
又例如圖11所示的實施例,會議控制進程根據最大負載原則,按照參會人員的先後順序,先將參會人員語音信息分流到各個語音處理進程。那麼,主處理進程與各輔處理進程互通可以在各個終端接入會議伺服器的過程中完成,當每啟用一個輔處理進程時,將該新啟用的輔處理進程與主處理進程互通。
本發明實施例提供的語音會議創建方法,利用進程綁定及分布式調度的機制實現語音會議跨cpu處理的方法,實現了多個cpu會議資源去碎片化的方法。能夠在通用伺服器上充分利用多個cpu的能力實現大容量語音會議。對通用伺服器上多個cpu時資源利用去碎片化,提升用戶體驗及cpu的利用率。
以下以圖12a為例說明本發明實施例提供的會議伺服器,圖12a為本發明實施例提供的一種會議伺服器結構示意圖,其中,該會議伺服器具有多個cpu,如圖12a所示,包括:
接收單元1201,用於接收終端發送的會議創建請求,會議創建請求中攜帶會議的容量信息。
確定單元1202,用於根據會議創建請求中攜帶的會議的容量信息,確定會議伺服器包括的多個cpu的總容量大於或者等於會議的容量。
選取單元1203,用於從多個cpu中選取總容量滿足會議的容量的至少兩個cpu。
其中,可將至少兩個cpu設為m個cpu,m為大於或者等於2的正整數。
創建單元1204,用於在至少兩個cpu之間建立通信連接,創建由至少兩個cpu進行語音信息處理的會議。
具體地,將m個cpu分為主cpu和m-1個輔cpu;在主cpu和m-1個輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息。將接入會議的終端的語音信息分配到m個cpu進行語音信息處理,創建會議。
進一步,將接入會議的終端的語音信息平均分配到m個cpu進行語音信息處理。或者將接入會議的終端的語音信息依次分配到m個cpu中的每一個cpu進行語音信息處理,其中,當m個cpu中的第m個cpu的剩餘容量小於或者等於第一閾值時,將會停止為第m個cpu分配所述接入會議的終端的語音信息,其中,m-1≥m≥1,且m為正整數。
具體各單元以及各單元之間的工作過程可參見圖2所示的方法實施例,在此不予贅述。
以下以圖12b為例說明本發明實施例提供的會議伺服器,圖12b為本發明實施例提供的另一種會議伺服器結構示意圖,如圖12b所示,該會議伺服器除包括圖12a中的1201、1202、1203和1204四個單元之外,還包括:
查詢單元1205,用於在接收單元1201接收終端發送的會議創建請求之前,向多個cpu中的每一個cpu發送容量查詢請求,統計每一個cpu的容量。其中,1201、1202、1203和1204四個單元的具體功能可參照圖12a中的 描述,在此不予贅述。
其中,1201、1202、1203、1204和1205各單元在會議伺服器包括的多個cpu上執行,完成相關功能。
需要說明的是,上述圖2-圖11以語音會議創建的方法步驟的角度對本發明實施例提供的方案進行了介紹。可以理解的是,1201、1202、1203、1204和1205各單元等是為了實現上述功能,其包含了執行各個功能相應的硬體結構和/或軟體模塊。本領域技術人員應該很容易意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,本發明能夠以硬體或硬體和計算機軟體的結合形式來實現。某個功能究竟以硬體還是計算機軟體驅動硬體的方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。
本發明實施例可以根據上述方法示例對1201、1202、1203、1204和1205等進行功能模塊的劃分,例如,可以對應各個功能劃分各個功能模塊,也可以將兩個或兩個以上的功能集成在一個處理模塊中。上述集成的模塊既可以採用硬體的形式實現,也可以採用軟體功能模塊的形式實現。需要說明的是,本發明實施例中對模塊的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式。
以下以圖13a為例說明本發明實施例提供的創建單元1204,圖13a為本發明實施例提供的一種創建單元1204結構示意圖,如圖13a所示,包括:
第一配置子單元1214a,用於為主cpu配置m-1個會議資源點,分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點;
配對子單元1224a,用於將主cpu的m-1個會議資源點分別與m-1個輔cpu中的每一個輔cpu的會議資源點配對;主cpu分別與m-1個輔cpu中的每一個輔cpu通過配對的會議資源點交換語音信息。
可以理解的是,1214a、1224a的工作過程可參見圖3所示的方法實施例,在此不予贅述。
以下以圖13b為例說明本發明實施例提供的創建單元1204,圖13b為本發明實施例提供的另一種創建單元1204結構示意圖,如圖13b所示,包括:
第二配置子單元1214b,用於分別為m-1個輔cpu中的每一個輔cpu配置第一共享內存和第二共享內存。
具體地,主cpu將m個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內存中;主cpu從第i個輔cpu的第二共享內存中獲取第i個輔cpu的語音信息,其中,m-1≥i≥1,且i為正整數。
可以理解的是,1214b的工作過程可參見圖6所示的方法實施例,在此不予贅述。
在一個示例中,本發明實施例提供的會議伺服器運行一個會議控制進程,會議伺服器包括多個cpu,其中,多個cpu中的每一個cpu上運行一個語音處理進程;語音處理進程用於對語音信息進行編解碼及混音,會議控制進程用於管理和調度所述語音處理進程。會議控制進程從多個cpu中選取總容量滿足會議的容量的至少兩個cpu;會議控制進程在至少兩個cpu上運行的至少兩個語音處理進程之間建立通信連接,會議控制進程將接入會議的終端的語音信息分配到至少兩個語音處理進程進行語音信息處理,創建會議。
可以理解的是,基於上述會議控制進程和語音處理進程的會議伺服器的具體工作方式,可參見圖4—圖5、圖7—圖11所示的方法實施例中的描述,在此不予贅述。
以下以圖14為例說明本發明實施例提供的會議伺服器,圖14為本發明實施例提供的又一種會議伺服器結構示意圖,如圖14所示,包括:網卡1401、 存儲器1402、多個處理器1403和總線1404。
具體地,網卡1404配置多個通信接口,其中,接入會議的終端通過所述通信接口交換語音信息;存儲器1402用於存儲程序和終端的語音信息;網卡1401、存儲器1402和處理器1403通過總線1404通信;當會議伺服器運行時,處理器1403用於執行存儲器1402存儲的程序,使得處理器1403執行上述圖2—圖11方法實施例中的方法步驟。
其中,存儲器1402可以是一個存儲裝置,也可以是多個存儲元件的統稱,且用於存儲運行會議伺服器所需的程序以及數據等信息。且存儲器1402可以包括隨機存取存儲器(randomaccessmemory,簡稱ram)、快閃記憶體、只讀存儲器(readonlymemory,簡稱rom)、可擦除可編程只讀存儲器(erasableprogrammablerom,簡稱eprom)、電可擦可編程只讀存儲器(electricallyeprom,簡稱eeprom)、寄存器、硬碟、移動硬碟、只讀光碟(cd-rom)、快閃記憶體(flash)或者本領域熟知的任何其它形式的存儲介質等中的一個或多個存儲介質的組合。
處理器1403可以是cpu,通用處理器,dsp,專用集成電路(application-specificintegratedcircuit,簡稱asic),現場可編程門陣列(fieldprogrammablegatearray,簡稱fpga)或者其他可編程邏輯器件、電晶體邏輯器件、硬體部件或者其任意組合。其可以實現或執行結合本發明公開內容所描述的各種示例性的邏輯方框,單元和電路。所述處理器也可以是實現計算功能的組合,例如包含一個或多個微處理器組合,dsp和微處理器的組合等等。
總線1404可以是工業標準體系結構(industrystandardarchitecture,簡稱isa)總線、外部設備互連(peripheralcomponent,簡稱pci)總線或擴展工業標準體系結構(extendedindustrystandardarchitecture,簡稱eisa)總線等。該總線1404可以分為地址總線、數據總線、控制總線等。為便於表示,圖14中僅用一條粗線表示,但並不表示僅有一根總線或一種類型的總線。
具體地,處理器1403可用於執行圖2—圖11所示的語音會議的創建方法。存儲器1402可用於存儲圖2—圖11所示的語音會議中所需的程序以及數據,或者存儲處理器1403處理的終端的語音信息等。
進一步,總線1404可用於連接圖12a、12b、13a或13b中的各單元。處理器1403可用於執行1201、1202、1203、1204或1205各單元的功能,處理器1402可用於存儲1201、1202、1203、1204或1205各單元的數據。
以下以圖15為例說明本發明實施例提供的語音會議創建系統,圖15為本發明實施例提供的一種語音會議創建系統架構圖,如圖15所示,包括:終端1501、會議伺服器1502。
終端1501,用於向會議伺服器1502發送會議創建請求,其中,會議創建請求中攜帶會議的容量信息。
需要說明的是,終端1501為一個或多個。終端1501向會議伺服器1502發送會議創建請求,創建會議。進一步地,終端1501可通過向會議伺服器1502發送會議接入碼、會議id和密碼的方式接入會議,或者終端1501可通過接受會議伺服器1502的邀請的方式接入會議。
會議伺服器1502,用於接收終端1501發送的會議創建請求,根據會議創建請求中攜帶的會議的容量信息,確定會議伺服器1502包括的多個cpu的總容量大於或者等於會議的容量;從多個cpu中選取總容量滿足會議的容量的至少兩個cpu;在至少兩個cpu之間建立通信連接,創建由至少兩個cpu進行語音信息處理的會議。
具體地,會議伺服器1502將至少兩個cpu分為主cpu和m-1個輔cpu,其中m為大於或者等於2的正整數;在主cpu和m-1個輔cpu中的每一個輔cpu之間建立通信連接,其中,m-1個輔cpu之間通過主cpu交換語音信息;將接入會議的終端1501的語音信息分配到至少兩個cpu進行語音信息處理,創建會議。
進一步地,會議伺服器1502為主cpu配置m-1個會議資源點,分別為m-1個輔cpu中的每一個輔cpu配置一個會議資源點;將主cpu的m-1個會議資源點分別與m-1個輔cpu中的每一個輔cpu的會議資源點配對;主cpu分別與m-1個輔cpu中的每一個輔cpu通過配對的會議資源點交換語音信息。
或者進一步地,會議伺服器1502分別為m-1個輔cpu中的每一個輔cpu配置第一共享內存和第二共享內存;主cpu將至少兩個cpu中除第i個輔cpu的語音信息存放在第i個輔cpu的第一共享內存中;主cpu從第i個輔cpu的第二共享內存中獲取第i個輔cpu的語音信息,其中,i為大於或者等於1且小於或者等於m-1的正整數。
可以理解的是,本說明書中提到的cpu的語音信息指的是該cpu所處理的終端的語音信息。
具體地,圖15所示的語音會議創建系統,其具體工作過程,可參見上述圖2-圖14所述的語音會議創建方法及會議伺服器的工作過程,在此不予贅述。
本領域技術人員應該可以意識到,在上述一個或多個示例中,本發明所描述的功能可以用硬體、軟體、固件或它們的任意組合來實現。當使用軟體實現時,可以將這些功能存儲在計算機可讀介質中或者作為計算機可讀介質上的一個或多個指令或代碼進行傳輸。計算機可讀介質包括計算機存儲介質和通信介質,其中通信介質包括便於從一個地方向另一個地方傳送電腦程式的任何介質。存儲介質可以是通用或專用計算機能夠存取的任何可用介質。
以上所述的具體實施方式,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施方式而已,並不用於限定本發明的保護範圍,凡在本發明的技術方案的基礎之上,所做的任何修改、等同替換、改進等,均應包括在本發明的保護範圍之內。