言者的解碼前的音頻數(shù)據(jù)打包,而對(duì)于聽眾,可以將發(fā)言者的解碼后的音頻數(shù)據(jù)進(jìn)行混音,并對(duì)混音后的數(shù)據(jù)進(jìn)行編碼。
[0069]可選的,參見圖7,所述獲取模塊62包括:
[0070]第一單元621,用于確定作為接收方的終端的當(dāng)前角色;
[0071]可以根據(jù)音頻特性,在不解碼的前提下確定出發(fā)言者,以及將不是發(fā)言者的其余終端確定為聽眾。音頻特性例如為音頻數(shù)據(jù)的能量值。
[0072]例如,轉(zhuǎn)發(fā)決策模塊可以接收到來自A,B,C,D,E的解碼前的音頻數(shù)據(jù),之后可以檢測(cè)每個(gè)解碼前的音頻數(shù)據(jù)的能量值,當(dāng)一個(gè)終端的解碼前的音頻數(shù)據(jù)的能量值大于預(yù)設(shè)值,則表明該終端是發(fā)言者,否則是聽眾。
[0073]第二單元622,用于如果所述當(dāng)前角色是發(fā)言者,獲取除自身之外的其他發(fā)言者的解碼前的音頻數(shù)據(jù),并將所述解碼前的音頻數(shù)據(jù)打包后確定為要轉(zhuǎn)發(fā)的音頻數(shù)據(jù);或者,如果所述當(dāng)前角色是聽眾,獲取發(fā)言者的解碼后的音頻數(shù)據(jù),并對(duì)所述解碼后的音頻數(shù)據(jù)進(jìn)行混音處理,以及對(duì)混音處理后的音頻數(shù)據(jù)進(jìn)行編碼處理,得到編碼后的音頻數(shù)據(jù),并將所述編碼后的音頻數(shù)據(jù)確定為要轉(zhuǎn)發(fā)的音頻數(shù)據(jù)。
[0074]例如,參見圖2,如果發(fā)言者包括:A,B,C,則對(duì)應(yīng)A,獲取B和C的解碼前的音頻數(shù)據(jù),將B和C的解碼前的音頻數(shù)據(jù)打包后確定為要轉(zhuǎn)發(fā)給A的音頻數(shù)據(jù)。對(duì)應(yīng)B,獲取A和C的解碼前的音頻數(shù)據(jù),將A和C的解碼前的音頻數(shù)據(jù)打包后確定為要轉(zhuǎn)發(fā)給B的音頻數(shù)據(jù)。對(duì)應(yīng)C,獲取A和B的解碼前的音頻數(shù)據(jù),將A和B的解碼前的音頻數(shù)據(jù)打包后確定為要轉(zhuǎn)發(fā)給C的音頻數(shù)據(jù)。
[0075]可以理解的是,如果發(fā)言者僅有一個(gè),則不需要轉(zhuǎn)發(fā)音頻數(shù)據(jù)給該發(fā)言者對(duì)應(yīng)的接收方。
[0076]例如,參見圖2,如果發(fā)言者包括:A,B,C,聽眾是D和E,則對(duì)應(yīng)D和E,獲取A,B和C的解碼后的音頻數(shù)據(jù),對(duì)該解碼后的音頻數(shù)據(jù)進(jìn)行混音處理,再對(duì)混音后的音頻數(shù)據(jù)進(jìn)行編碼處理,之后將編碼處理后的音頻數(shù)據(jù)分別發(fā)送給D和E。
[0077]通過根據(jù)角色的不同,采用不同的手段得到要轉(zhuǎn)發(fā)的數(shù)據(jù),可以盡量降低CPU消耗以及網(wǎng)絡(luò)流量開銷。
[0078]可選的,當(dāng)聽眾有多個(gè)時(shí),所述第二單元622用于對(duì)混音處理后的音頻數(shù)據(jù)進(jìn)行編碼處理,包括:
[0079]采用同一個(gè)編碼器對(duì)混音處理后的音頻數(shù)據(jù)進(jìn)行編碼處理。
[0080]另外,如圖2所示,當(dāng)聽眾的個(gè)數(shù)為多個(gè)時(shí),可以不需要對(duì)應(yīng)每個(gè)聽眾設(shè)置一個(gè)編碼器,而由同一個(gè)編碼器對(duì)混音處理后的音頻數(shù)據(jù)進(jìn)行編碼處理。例如,參見圖2,對(duì)應(yīng)D和E,都由同一個(gè)編碼器(conf Encoder)進(jìn)行編碼處理。
[0081]通過采用同一個(gè)編碼器對(duì)應(yīng)不同聽眾進(jìn)行處理,可以相對(duì)于Full-transcoding模式,減少編碼器的數(shù)量,由于CPU的開銷主要是由編碼器引起的,因此可以降低CPU開銷。
[0082]另一實(shí)施例中,參見圖7,該裝置60還包括:
[0083]選擇模塊64,用于檢測(cè)發(fā)言者的數(shù)量,并在該數(shù)量超過預(yù)設(shè)個(gè)數(shù)時(shí),從檢測(cè)到的發(fā)言者中選擇出預(yù)設(shè)個(gè)數(shù)的發(fā)言者。
[0084]之后,在根據(jù)當(dāng)前角色獲取要轉(zhuǎn)發(fā)的音頻數(shù)據(jù)時(shí),采用的發(fā)言者的解碼前或解碼后的音頻數(shù)據(jù)時(shí),該采用的發(fā)言者是指選擇出的預(yù)設(shè)個(gè)數(shù)的發(fā)言者。
[0085]可選的,預(yù)設(shè)個(gè)數(shù)可以是3個(gè)或者2個(gè)。
[0086]以3個(gè)為例,假設(shè)檢測(cè)到的發(fā)言者是4個(gè),則可以根據(jù)音頻特性,例如每個(gè)音頻數(shù)據(jù)的能量值,選擇能量值較大的3個(gè)音頻數(shù)據(jù)對(duì)應(yīng)的發(fā)言者作為選擇出的發(fā)言者。
[0087]通過對(duì)發(fā)言者的數(shù)量進(jìn)行限制,可以獲取更優(yōu)良的收聽效果。
[0088]可選的,參見圖7,如果當(dāng)前角色是發(fā)言者,且其他發(fā)言者的個(gè)數(shù)是多個(gè)時(shí),所述獲取模塊62還包括:
[0089]第三單元623,用于確定所述發(fā)言者是否具有多路解碼能力;
[0090]其中,第三單元可以與發(fā)言者進(jìn)行預(yù)設(shè)格式的信令交互,通過信令交互獲知發(fā)言者是否具有多路解碼能力。例如,第三單元向A發(fā)送查詢信令,查詢信令用于查詢A是否具有多路解碼能力,A接收到該信令后,獲取自身的能力,如果具有多路解碼能力,則向服務(wù)器反饋具有多路解碼能力的反饋信令,反之反饋不具有多路解碼能力的反饋信令。而具體的查詢信令以及反饋信令的格式可以是預(yù)先規(guī)定的,例如,某個(gè)字段用特定值表示查詢信令,某個(gè)字段用I或O表示具有或不具有多路解碼能力。
[0091]所述第二單元622具體用于在所述第三單元確定出所述發(fā)言者具有多路解碼能力時(shí),獲取除自身之外的其他發(fā)言者的解碼前的音頻數(shù)據(jù);
[0092]具體內(nèi)容可以參見S31,在此不再贅述。
[0093]第四單元624,用于在不具有多路解碼能力時(shí),獲取出自身之外的其他發(fā)言者的解碼后的音頻數(shù)據(jù),并對(duì)所述解碼后的音頻數(shù)據(jù)進(jìn)行混音,以及對(duì)混音后的音頻數(shù)據(jù)進(jìn)行編碼,將編碼后的音頻數(shù)據(jù)確定為要轉(zhuǎn)發(fā)的音頻數(shù)據(jù)。
[0094]例如,A是發(fā)目者,但A不具有多路解碼能力,則可以獲取B和C的解碼后的音頻數(shù)據(jù),對(duì)B和C的解碼后的音頻數(shù)據(jù)進(jìn)行混音處理,再對(duì)混音處理后的音頻數(shù)據(jù)進(jìn)行編碼處理,將編碼處理后的音頻數(shù)據(jù)確定為轉(zhuǎn)發(fā)給A的音頻數(shù)據(jù)。
[0095]通過檢測(cè)多路解碼能力,可以很好解決具有或不具有多路解碼能力的終端同時(shí)接入會(huì)議的兼容性問題。
[0096]發(fā)送模塊63,用于將所述要轉(zhuǎn)發(fā)的音頻數(shù)據(jù),發(fā)送給所述作為接收方的終端。
[0097]當(dāng)發(fā)言者是A,B,C,且接收方都具有多路解碼能力時(shí),將B的解碼前的音頻數(shù)據(jù)和C的解碼前的音頻數(shù)據(jù)打包(B+C packet)后發(fā)送給A,將A的解碼前的音頻數(shù)據(jù)和C的解碼前的音頻數(shù)據(jù)打包(A+C packet)后發(fā)送給B,將A的解碼前的音頻數(shù)據(jù)和B的解碼前的音頻數(shù)據(jù)打包(A+B packet)后發(fā)送給C。
[0098]而對(duì)于聽眾D,E,是將A的解碼后的音頻數(shù)據(jù),B的解碼后的音頻數(shù)據(jù),以及C的解碼后的音頻數(shù)據(jù)進(jìn)行混音,得到混音后的音頻數(shù)據(jù)(A+B+C PCM),再對(duì)混音后的音頻數(shù)據(jù)進(jìn)行編碼(由conf Encoder進(jìn)行編碼),得到編碼后的音頻數(shù)據(jù),將該編碼后的音頻數(shù)據(jù)發(fā)送給D和E。
[0099]需要說明的是,圖2中的作為接收方的D和E中雖然標(biāo)識(shí)了多個(gè)解碼器(Decoder),但是,對(duì)于當(dāng)前作為聽眾的角色,該D和E只需要一個(gè)解碼器就可以,多個(gè)解碼器可以在D和E作為發(fā)言者時(shí)采用。
[0100]本實(shí)施例中,通過獲取解碼前的音頻數(shù)據(jù)和解碼后的音頻數(shù)據(jù),并根據(jù)當(dāng)前角色的不同,采用不同的方式獲取要轉(zhuǎn)發(fā)的音頻數(shù)據(jù),可以兼顧Full-transcoding模式和relay模式的優(yōu)點(diǎn),盡量降低CPU消耗和網(wǎng)絡(luò)流量消耗。具體的,現(xiàn)有技術(shù)一需要對(duì)應(yīng)每個(gè)終端設(shè)置編碼器,而本實(shí)施例可以只設(shè)置一個(gè)編碼器,由于編碼器占用較大的CPU開銷,因此,本實(shí)施例可以解決音頻通訊系統(tǒng)運(yùn)營(yíng)級(jí)別架構(gòu)服務(wù)器(Server)的CPU成本問題,顯著提升單CPU的并發(fā)處理能力。由于大部分終端處于聽眾狀態(tài),對(duì)聽眾對(duì)應(yīng)的音頻數(shù)據(jù)進(jìn)行編碼,而不是直接轉(zhuǎn)發(fā)多路音頻數(shù)據(jù),可以降低絕大部分與會(huì)終端的網(wǎng)絡(luò)流量。通過Server的優(yōu)化取得CPU消耗和網(wǎng)絡(luò)流量的平衡,即在有效降低CPU消耗情況下,同時(shí)也降低了 Server和終端(Client)的1網(wǎng)絡(luò)流量。
[0101]需要說明的是,在本發(fā)明的描述中,術(shù)語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性。此外,在本發(fā)明的描述中,除非另有說明,“多個(gè)”的含義是指至少兩個(gè)。
[0102]流程圖中或在此以其