本發(fā)明涉及VOIP語(yǔ)音技術(shù),尤指一種VOIP自適應(yīng)語(yǔ)音編碼方法、系統(tǒng)及SIP服務(wù)器。
背景技術(shù):當(dāng)前,隨著骨干網(wǎng)速率的高速增長(zhǎng),接入網(wǎng)速率的不斷提高,Internet的應(yīng)用日益廣泛,Internet上的業(yè)務(wù)也正從窄帶走向?qū)拵?、從非?shí)時(shí)走向?qū)崟r(shí),網(wǎng)絡(luò)電話(VOIP,VoiceoverInternetProtocol)業(yè)務(wù)就是其中的一類重要的業(yè)務(wù)。VoIP是通過(guò)對(duì)語(yǔ)音信號(hào)進(jìn)行數(shù)字化編碼、壓縮處理成幀,然后再轉(zhuǎn)換為IP數(shù)據(jù)包在IP網(wǎng)絡(luò)上進(jìn)行傳輸,來(lái)達(dá)到在IP網(wǎng)絡(luò)上進(jìn)行語(yǔ)音通信目的的技術(shù)。VOIP最大的優(yōu)勢(shì)是能廣泛地利用Internet和全球IP互連的環(huán)境,非常廉價(jià)的提供語(yǔ)音、傳真、視頻和數(shù)據(jù)等業(yè)務(wù),比如統(tǒng)一消息、虛擬電話、虛擬語(yǔ)音/傳真郵箱、查號(hào)業(yè)務(wù)、Internet呼叫中心、Internet呼叫管理、電視會(huì)議、電子商務(wù)、傳真存儲(chǔ)轉(zhuǎn)發(fā)和各種信息的存儲(chǔ)轉(zhuǎn)發(fā)等。會(huì)話初始協(xié)議(SIP)是IETF提出的在IP網(wǎng)上進(jìn)行多媒體通信的應(yīng)用層控制協(xié)議。SIP用于建立、改變和終止基于IP網(wǎng)絡(luò)的用戶間的呼叫。為了提供電話業(yè)務(wù),SIP還需要結(jié)合不同的標(biāo)準(zhǔn)和協(xié)議,特別是實(shí)時(shí)傳輸協(xié)議(RTP)。以Internet協(xié)議如超文本傳輸協(xié)議(HTTP)為基礎(chǔ),遵循Internet的設(shè)計(jì)原則,基于對(duì)等工作模式。利用SIP可實(shí)現(xiàn)會(huì)話的連接、建立和釋放,并支持單播、多播和可移動(dòng)性。此外,SIP如果與會(huì)話描述協(xié)議(SDP,SessionDescriptionProtocol)配合使用,可以動(dòng)態(tài)地調(diào)整和修改會(huì)話屬性,如通話帶寬、所傳輸?shù)拿襟w類型及編解碼格式等。SDP是用于描述多媒體會(huì)話通告,多媒體會(huì)話邀請(qǐng)和其他形式的多媒體會(huì)話初始化的協(xié)議。SDP結(jié)構(gòu)包括會(huì)話信息和媒體信息,其中,會(huì)話信息主要包括會(huì)話名和目的、會(huì)話活動(dòng)時(shí)間、會(huì)話使用的帶寬信息(部分終端不提供)等;媒體信息主要包括媒體類型如視頻或音頻、傳輸協(xié)議(多為RTP協(xié)議)、媒體格式、媒體傳輸端口等。目前,VOIP實(shí)現(xiàn)方法大致包括:VOIP軟終端(或稱SIP客戶端)通過(guò)SIP信令注冊(cè)到SIP服務(wù)器,在SIP服務(wù)器上形成該用戶的Contact;SIP客戶端通過(guò)SIP協(xié)議向本域或者其他域的用戶發(fā)起呼叫請(qǐng)求(即呼叫其他用戶的Contact),通過(guò)SDP協(xié)議描述多媒體通話的相關(guān)信息;會(huì)話建立后通過(guò)RTP協(xié)議傳輸媒體流,實(shí)現(xiàn)通話。以同一局域網(wǎng)內(nèi)SIP通話建立過(guò)程為例,如圖1所示,在Invite(1)、Invite(3)的SIP消息中會(huì)攜帶客戶端A(UserA)的SDP包,該SDP包描述了UserA支持的媒體會(huì)話信息;200OK(6)和200OK(7)的SIP消息中攜帶有UserB支持的媒體會(huì)話信息。由于實(shí)際使用中,同一局域網(wǎng)內(nèi)的SIP通話可能性比較小,而客戶端與服務(wù)器之間,客戶端與客戶端之間存在于不同網(wǎng)絡(luò)中的可能性較大。因此,SIP服務(wù)器會(huì)通過(guò)設(shè)置網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)穿透和媒體代理的方式來(lái)協(xié)助完成SIP交互和RTP媒體流交互。會(huì)話建立過(guò)程如圖2所示,同樣的,Invite(1),Invite(3)中包含有SDP包描述的UserA支持的媒體信息,不同的是Invite(3)中,SIP服務(wù)器將UserA接受RTP流的地址改為了媒體中繼的IP地址;200OK(6)、200OK(7)中的SDP包描述了UserB支持的媒體通信的信息,且在200OK(7)中,SIP服務(wù)器將UserB接受RTP流的地址改為了媒體中繼的IP地址。這樣,SIP服務(wù)器和媒體中繼就實(shí)現(xiàn)了不同局域網(wǎng)之間SIP客戶端的通話功能。在SIP服務(wù)器上獲得的Invite(1)的SIP包結(jié)構(gòu)中,SIP包體部分即為SDP包,o字段中設(shè)置的為客戶端發(fā)送RTP流的地址;c字段中設(shè)置的為客戶端接收RTP流的地址;m字段中設(shè)置的為媒體類型,如音頻;a字段中設(shè)置的為客戶端支持的編碼格式,每個(gè)支持的編碼格式成為一行。各編碼格式的優(yōu)先順序?yàn)榭蛻舳颂崆霸O(shè)定好的順序。目前,對(duì)于電信級(jí)VOIP業(yè)務(wù),SIP服務(wù)器普遍采用的是開(kāi)放式SIP(OpenSIPs)系統(tǒng),不同局域網(wǎng)之間的SIP客戶端通話是通過(guò)修改SIP信令交互過(guò)程中的SDP包的內(nèi)容,將SIP客戶端發(fā)送RTP流的目的地址改為媒體中繼服務(wù)器地址來(lái)實(shí)現(xiàn)RTP流的轉(zhuǎn)發(fā)的。但是,對(duì)于SIP客戶端采用的編碼格式,SIP服務(wù)器并不能實(shí)現(xiàn)控制,而只是機(jī)械的將兩個(gè)SIP客戶端支持的編碼格式進(jìn)行轉(zhuǎn)發(fā)。從SDP包內(nèi)部結(jié)構(gòu)可以看出,SIP客戶端會(huì)將支持的語(yǔ)音編碼格式放置于SDP包的a字段內(nèi),根據(jù)交互的結(jié)果會(huì)選取雙方都支持的編碼格式作為RTP流的編碼格式。如果雙方支持多種編碼格式,則會(huì)根據(jù)SIP客戶端設(shè)定的編碼優(yōu)先級(jí)(即SDP包中a字段a的順序)。但是,在實(shí)際通話過(guò)程中,不同SIP客戶端所處的網(wǎng)絡(luò)環(huán)境不同,網(wǎng)絡(luò)帶寬也不同。SIP客戶端本身并不能判斷其網(wǎng)絡(luò)質(zhì)量,也無(wú)法獲取對(duì)端的網(wǎng)絡(luò)質(zhì)量。因此,在實(shí)際通話中,使用上述固定的編碼順序來(lái)規(guī)定RTP流的編碼格式極大地降低了通話質(zhì)量。表1顯示的是各種編碼格式所占用的帶寬的音頻編碼標(biāo)準(zhǔn)表。表1從表1可以看出,不同的編碼格式對(duì)于帶寬的要求是不同的,同樣的,達(dá)到的語(yǔ)音質(zhì)量也是不同的。目前的VOIP電話系統(tǒng)不能根據(jù)不同的編碼格式對(duì)不同帶寬的需求,做出動(dòng)態(tài)調(diào)整,也就是說(shuō),不能實(shí)現(xiàn)根據(jù)SIP客戶端的情況選擇合適的編碼格式,從而不能實(shí)現(xiàn)為用戶提供高質(zhì)量的語(yǔ)音通話服務(wù)。
技術(shù)實(shí)現(xiàn)要素:為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種VOIP自適應(yīng)語(yǔ)音編碼方法、系統(tǒng)及SIP服務(wù)器,能夠滿足不同的編碼格式對(duì)不同帶寬的需求,從而為用戶提供高質(zhì)量的語(yǔ)音通話服務(wù)。為了達(dá)到本發(fā)明目的,本發(fā)明提供了一種網(wǎng)絡(luò)電話VOIP自適應(yīng)語(yǔ)音編碼方法,包括:檢測(cè)網(wǎng)絡(luò)可用帶寬,并根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序并發(fā)送給對(duì)端;通話雙方按照接收到的語(yǔ)音編碼順序選擇各自支持的編碼格式對(duì)實(shí)時(shí)傳輸協(xié)議RTP流進(jìn)行語(yǔ)音編碼。在所述通話雙方的編碼格式不同時(shí),該方法還包括:對(duì)所述RTP流進(jìn)行語(yǔ)音編碼轉(zhuǎn)換,將語(yǔ)音編碼格式轉(zhuǎn)換為對(duì)端的編碼格式后傳遞給對(duì)端;在所述通話雙方的編碼格式相同時(shí),該方法還包括:對(duì)所述RTP流進(jìn)行透?jìng)?。所述檢測(cè)網(wǎng)絡(luò)可用帶寬包括:當(dāng)會(huì)話初始協(xié)議SIP服務(wù)器檢測(cè)到來(lái)自SIP客戶端的注冊(cè)消息時(shí),向SIP客戶端發(fā)送協(xié)商請(qǐng)求;SIP客戶端設(shè)置網(wǎng)絡(luò)可用帶寬檢測(cè)定時(shí)器,按照協(xié)商請(qǐng)求向SIP服務(wù)器發(fā)送網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求;SIP服務(wù)器檢測(cè)SIP客戶端當(dāng)前網(wǎng)絡(luò)可用帶寬并存儲(chǔ)。所述檢測(cè)SIP客戶端當(dāng)前網(wǎng)絡(luò)可用帶寬包括:按照所述檢測(cè)算法檢測(cè)SIP客戶端當(dāng)前網(wǎng)絡(luò)可用帶寬;其中,所述檢測(cè)算法為可用帶寬測(cè)量算法SLoPS。所述根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序包括:SIP服務(wù)器檢測(cè)到SIP客戶端發(fā)起的邀請(qǐng)INVITE請(qǐng)求或200OK響應(yīng),根據(jù)INVITE請(qǐng)求或200OK響應(yīng)中攜帶的被邀請(qǐng)或被響應(yīng)的SIP客戶端對(duì)端的用戶ID,查詢?cè)撚脩魧?duì)應(yīng)的網(wǎng)絡(luò)可用帶寬;SIP服務(wù)器比較查詢出的SIP客戶端對(duì)端的網(wǎng)絡(luò)可用帶寬與預(yù)先設(shè)置的編碼格式所占用的帶寬的音頻編碼標(biāo)準(zhǔn)關(guān)系,對(duì)接收到的會(huì)話描述協(xié)議SDP包中的語(yǔ)音編碼優(yōu)先級(jí)進(jìn)行重新排序,并將修改后的SDP包發(fā)送給SIP客戶端對(duì)端。所述查詢對(duì)應(yīng)的網(wǎng)絡(luò)可用帶寬包括:選取最近一次檢測(cè)到的網(wǎng)絡(luò)可用帶寬,作為所述SIP客戶端對(duì)端的當(dāng)前的網(wǎng)絡(luò)可用帶寬;或者,對(duì)定長(zhǎng)隊(duì)列中所述SIP客戶端的對(duì)端的最近預(yù)設(shè)數(shù)量次的網(wǎng)絡(luò)可用帶寬求平均值,以獲得的平均值作為所述SIP客戶端對(duì)端的當(dāng)前的網(wǎng)絡(luò)可用帶寬。本發(fā)明還提供一種SIP服務(wù)器,包括SIP核心處理模塊,還至少包括:可用帶寬檢測(cè)模塊、SDP控制模塊;其中,SIP核心處理模塊,用于處理來(lái)自SIP客戶端的交互信息;可用帶寬檢測(cè)模塊,用于在檢測(cè)到SIP客戶端注冊(cè)時(shí),向SIP客戶端發(fā)送協(xié)商請(qǐng)求;接收到來(lái)自SIP客戶端的網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求,以協(xié)商請(qǐng)求中攜帶的檢測(cè)算法檢測(cè)SIP客戶端網(wǎng)絡(luò)當(dāng)前網(wǎng)絡(luò)可用帶寬,存儲(chǔ)獲得的SIP客戶端的網(wǎng)絡(luò)可用帶寬;SDP控制模塊,用于在檢測(cè)到SIP客戶端發(fā)起邀請(qǐng)或200OK響應(yīng)時(shí),根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序,并經(jīng)由SIP核心處理模塊發(fā)送給對(duì)端的SIP客戶端。所述SDP控制模塊,具體用于檢測(cè)到所述SIP客戶端發(fā)起邀請(qǐng)或200OK響應(yīng)消息,根據(jù)消息中攜帶的被邀請(qǐng)或被響應(yīng)的SIP客戶端的用戶ID,查詢?cè)撚脩舻木W(wǎng)絡(luò)可用帶寬,將查詢到的網(wǎng)絡(luò)可用帶寬與預(yù)先設(shè)置的編碼格式所占用的帶寬的音頻編碼標(biāo)準(zhǔn)關(guān)系進(jìn)行比對(duì),對(duì)SDP包中的語(yǔ)音編碼優(yōu)先級(jí)進(jìn)行重新排序,并經(jīng)由所述SIP核心處理模塊將修改后的SDP包發(fā)送給SIP客戶端對(duì)端。所述SIP服務(wù)器還包括語(yǔ)音編碼控制模塊,用于在通話雙方的編碼格式不同時(shí),向媒體中繼服務(wù)器發(fā)送語(yǔ)音編碼轉(zhuǎn)換指令;或者,用于在通話雙方的編碼格式相同時(shí),向媒體中繼服務(wù)器發(fā)送媒體傳輸指令。本發(fā)明還提供一種VOIP自適應(yīng)語(yǔ)音編碼系統(tǒng),至少包括SIP客戶端,SIP服務(wù)器;其中,SIP服務(wù)器,用于檢測(cè)網(wǎng)絡(luò)可用帶寬,并根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序并發(fā)送給對(duì)端的SIP客戶端;SIP客戶端,用于按照接收到的語(yǔ)音編碼順序選擇自身支持的編碼格式對(duì)實(shí)時(shí)傳輸協(xié)議RTP流進(jìn)行語(yǔ)音編碼。所述SIP客戶端,具體用于注冊(cè)到SIP服務(wù)器;接收來(lái)自SIP服務(wù)器的協(xié)商請(qǐng)求,設(shè)置網(wǎng)絡(luò)可用帶寬檢測(cè)定時(shí)器,按照協(xié)商請(qǐng)求中攜帶的時(shí)間間隔定期向中的源地址發(fā)送網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求;按照來(lái)自SIP服務(wù)器的語(yǔ)音編碼順序選擇自身支持的編碼格式對(duì)RTP流進(jìn)行語(yǔ)音編碼;SIP服務(wù)器,用于在檢測(cè)到SIP客戶端注冊(cè)時(shí),向SIP客戶端發(fā)送協(xié)商請(qǐng)求;接收到來(lái)自SIP客戶端的網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求,以協(xié)商請(qǐng)求中的檢測(cè)算法檢測(cè)SIP客戶端網(wǎng)絡(luò)當(dāng)前網(wǎng)絡(luò)可用帶寬,存儲(chǔ)獲得的SIP客戶端的網(wǎng)絡(luò)可用帶寬;根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序并發(fā)送給對(duì)端的SIP客戶端。該系統(tǒng)還包括媒體中繼服務(wù)器,此時(shí),所述SIP服務(wù)器,還用于在通話雙方的編碼格式不同時(shí),向媒體中繼服務(wù)器發(fā)送語(yǔ)音編碼轉(zhuǎn)換指令;或者,在通話雙方的編碼格式相同時(shí),向媒體中繼服務(wù)器發(fā)送媒體傳輸指令;媒體中繼服務(wù)器,用于接收來(lái)自SIP服務(wù)器的語(yǔ)音編碼轉(zhuǎn)換指令,對(duì)通話雙方的RTP流進(jìn)行語(yǔ)音編碼轉(zhuǎn)換,將語(yǔ)音編碼格式轉(zhuǎn)換為對(duì)端的編碼格式后傳遞給對(duì)端;或者,接收來(lái)自SIP服務(wù)器的媒體傳輸指令,對(duì)通話雙方的RTP流進(jìn)行透?jìng)?。與現(xiàn)有技術(shù)相比,本發(fā)明VOIP自適應(yīng)語(yǔ)音編碼方案包括檢測(cè)網(wǎng)絡(luò)可用帶寬,根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序并發(fā)送給歲算;通話雙方按照接收到的語(yǔ)音編碼順序選擇各自支持的編碼格式對(duì)RTP流進(jìn)行語(yǔ)音編碼。本發(fā)明中,由于SIP服務(wù)器查詢的都是SIP消息發(fā)起方對(duì)端的網(wǎng)絡(luò)可用帶寬,這樣,根據(jù)SIP客戶端對(duì)端的網(wǎng)絡(luò)可用帶寬修改后的SDP包到達(dá)對(duì)端后,適合對(duì)端當(dāng)前網(wǎng)絡(luò)情況的語(yǔ)音編碼被優(yōu)先選擇了,從而保證了SIP客戶端雙方使用到了各自當(dāng)前網(wǎng)絡(luò)可用帶寬下的最優(yōu)的語(yǔ)音編碼格式,滿足了不同的編碼格式對(duì)不同帶寬的需求,從而為用戶提供了高質(zhì)量的語(yǔ)音通話服務(wù)。進(jìn)一步地,本發(fā)明還包括在通話雙方的編碼格式不同時(shí),SIP服務(wù)器對(duì)RTP流進(jìn)行語(yǔ)音編碼轉(zhuǎn)換,將語(yǔ)音編碼格式轉(zhuǎn)換為對(duì)端的編碼格式后傳遞給對(duì)端。這樣,在媒體傳輸開(kāi)始時(shí),SIP服務(wù)器獲取媒體中繼兩側(cè)客戶端的語(yǔ)音編碼格式,當(dāng)兩側(cè)客戶端的語(yǔ)音編碼格式不同時(shí),媒體中繼服務(wù)器將語(yǔ)音編碼格式轉(zhuǎn)換為對(duì)端的編碼格式,這樣,在RTP流傳輸階段,更好地保證了在SIP客戶端兩側(cè)網(wǎng)絡(luò)上始終保持匹配其可用網(wǎng)絡(luò)帶寬的語(yǔ)音編碼格式,從而更好地保證了為用戶提供高質(zhì)量的語(yǔ)音通話服務(wù)。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在說(shuō)明書(shū)、權(quán)利要求書(shū)以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。附圖說(shuō)明附圖用來(lái)提供對(duì)本發(fā)明技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與本申請(qǐng)的實(shí)施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對(duì)本發(fā)明技術(shù)方案的限制。圖1為現(xiàn)有SIP通話建立過(guò)程的實(shí)施例的示意圖;圖2為現(xiàn)有SIP通話建立過(guò)程的另一實(shí)施例的示意圖;圖3為本發(fā)明VOIP自適應(yīng)語(yǔ)音編碼方法的流程示意圖;圖4為本發(fā)明VOIP自適應(yīng)語(yǔ)音編碼系統(tǒng)的組成結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。圖3為本發(fā)明VOIP自適應(yīng)語(yǔ)音編碼方法的流程示意圖,如圖3所示,包括以下步驟:步驟300:檢測(cè)網(wǎng)絡(luò)可用帶寬。本步驟中,當(dāng)用戶通過(guò)SIP客戶端注冊(cè)到SIP服務(wù)器時(shí),可以根據(jù)SIP客戶端的注冊(cè)信息設(shè)置檢測(cè)機(jī)制,以定時(shí)檢測(cè)用戶所在網(wǎng)絡(luò)的可用帶寬。具體包括:首先,監(jiān)聽(tīng)SIP端口(即5060端口)的SIP消息:由于所有的SIP客戶端在開(kāi)始之初都需要向SIP服務(wù)器進(jìn)行注冊(cè),當(dāng)SIP服務(wù)器檢測(cè)到來(lái)自SIP客戶端的注冊(cè)消息(RegisterMessage)時(shí),向SIP客戶端發(fā)送協(xié)商請(qǐng)求。在協(xié)商請(qǐng)求中攜帶有:源地址即SIP服務(wù)器地址,也就是網(wǎng)絡(luò)可用帶寬檢測(cè)過(guò)程中發(fā)送固定消息到SIP客戶端以檢測(cè)網(wǎng)絡(luò)可用帶寬的服務(wù)器地址;檢測(cè)間隔,用于表示網(wǎng)絡(luò)可用帶寬檢測(cè)的時(shí)間間隔,主要考慮到網(wǎng)絡(luò)可用帶寬的可變情況;檢測(cè)算法,即網(wǎng)絡(luò)可用帶寬檢測(cè)過(guò)程中使用的檢測(cè)算法,比如現(xiàn)有可用帶寬測(cè)量算法(SLoPs)等;客戶端地址即SIP客戶端地址;標(biāo)志位,用于標(biāo)識(shí)檢測(cè)次數(shù),比如可以根據(jù)標(biāo)志位,判斷哪個(gè)檢測(cè)結(jié)果是最早的;檢測(cè)時(shí)間即本次檢測(cè)的時(shí)間;用戶ID,用于SIP服務(wù)器區(qū)別不同的SIP客戶端。接著,SIP客戶端收到來(lái)自SIP服務(wù)器的協(xié)商請(qǐng)求,如果同意進(jìn)行檢測(cè),則向SIP服務(wù)器發(fā)送確認(rèn)消息,并在SIP客戶端設(shè)置網(wǎng)絡(luò)可用帶寬檢測(cè)定時(shí)器,按照協(xié)商請(qǐng)求中攜帶的時(shí)間間隔定期向源地址發(fā)送網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求;SIP服務(wù)器收到來(lái)自SIP客戶端的網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求后,按照協(xié)商請(qǐng)求中攜帶的檢測(cè)算法檢測(cè)SIP客戶端當(dāng)前網(wǎng)絡(luò)可用帶寬,比如以一定的速率向SIP客戶端發(fā)送數(shù)據(jù)包,并根據(jù)SIP客戶端返回?cái)?shù)據(jù)包的時(shí)長(zhǎng)來(lái)檢測(cè)SIP客戶端網(wǎng)絡(luò)的當(dāng)前網(wǎng)絡(luò)可用帶寬,具體實(shí)現(xiàn)方法很多,比如SLoPS算法等,屬于本領(lǐng)域技術(shù)人員的慣用技術(shù)手段,這里不再贅述。其中,同意進(jìn)行檢測(cè)是指能夠接收SIP服務(wù)器發(fā)來(lái)的帶寬檢測(cè)包并返回,比如在某些情況下,用戶終端注冊(cè)以后網(wǎng)絡(luò)環(huán)境有可能會(huì)發(fā)生變化如斷線,此時(shí)是接收不到SIP服務(wù)器的帶寬檢測(cè)包的。最后,SIP服務(wù)器獲得SIP客戶端的網(wǎng)絡(luò)可用帶寬后,將網(wǎng)絡(luò)可用帶寬及其對(duì)應(yīng)的用戶ID、標(biāo)志位、檢測(cè)時(shí)間存儲(chǔ)到定長(zhǎng)隊(duì)列中,當(dāng)定長(zhǎng)隊(duì)列存儲(chǔ)滿后,定長(zhǎng)隊(duì)列中最新獲得的網(wǎng)絡(luò)可用帶寬更新其中最早存儲(chǔ)的數(shù)據(jù)。其中,定長(zhǎng)隊(duì)列的設(shè)置可根據(jù)需要,一般可設(shè)置為存儲(chǔ)5個(gè)帶寬檢測(cè)結(jié)果即可滿足。步驟301:根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序并發(fā)送給對(duì)端。本步驟中,當(dāng)SIP客戶端A經(jīng)由SIP服務(wù)器向SIP客戶端B發(fā)起會(huì)話請(qǐng)求時(shí),SIP服務(wù)器按照檢測(cè)時(shí)間,根據(jù)SIP客戶端B的最近一次檢測(cè)到的網(wǎng)絡(luò)可用帶寬,對(duì)SDP包(在a字段中包含有按照一定順序排列的SIP客戶端A支持的語(yǔ)音編碼格式)內(nèi)的語(yǔ)音編碼順序進(jìn)行重新排序,并發(fā)給SIP客戶端B。其中,SIP客戶端A向SIP服務(wù)器發(fā)起邀請(qǐng)(INVITE)SIP客戶端B的請(qǐng)求,在SIPINVITE消息中攜帶有SDP包,在SDP包中攜帶有后續(xù)RTP流傳輸?shù)南嚓P(guān)信息,其中在a字段中,SIP客戶端A支持的語(yǔ)音編碼格式按照一定的順序排列。同樣的,在SIP客戶端B返回的200OK響應(yīng)中,也攜帶有SDP包及其SIP客戶端B自身支持的語(yǔ)音編碼格式。本步驟中的根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序具體包括:首先,SIP服務(wù)器檢測(cè)到SIP客戶端A發(fā)起的INVITE請(qǐng)求后,根據(jù)INVITE請(qǐng)求中攜帶的被INVITE的SIP客戶端B的用戶ID,查詢SIP客戶端B的網(wǎng)絡(luò)可用帶寬。具體實(shí)現(xiàn)中可根據(jù)需要采取不同的查詢方法,比如:按照檢測(cè)時(shí)間,選取最近一次檢測(cè)到的網(wǎng)絡(luò)可用帶寬,作為SIP客戶端B當(dāng)前的網(wǎng)絡(luò)可用帶寬,以最大程度上貼近用戶當(dāng)前的網(wǎng)絡(luò)可用帶寬;或者,對(duì)定長(zhǎng)隊(duì)列中SIP客戶端B最近幾次(次數(shù)可以預(yù)先設(shè)置)的網(wǎng)絡(luò)可用帶寬求平均值,以獲得的平均值作為SIP客戶端B當(dāng)前的網(wǎng)絡(luò)可用帶寬,以獲得最近一段時(shí)間內(nèi)SIP客戶端B的平均網(wǎng)絡(luò)可用帶寬。接著,SIP服務(wù)器查詢出SIP客戶端B的網(wǎng)絡(luò)可用帶寬后,將獲得的網(wǎng)絡(luò)可用帶寬在表1中進(jìn)行比對(duì),對(duì)SDP包中的語(yǔ)音編碼優(yōu)先級(jí)進(jìn)行重新排序,并將修改后的SDP包發(fā)送給SIP客戶端B。同樣的,對(duì)于SIP客戶端B返回的200OK響應(yīng),SIP服務(wù)器查詢SIP客戶端A的網(wǎng)絡(luò)可用帶寬,并對(duì)SDP包(在a字段中包含有按照一定順序排列的SIP客戶端B支持的語(yǔ)音編碼格式)中的語(yǔ)音編碼優(yōu)先級(jí)進(jìn)行重新排序,并將修改后的SDP包發(fā)送給SIP客戶端A。步驟302:通話雙方按照接收到的語(yǔ)音編碼順序選擇各自支持的編碼格式對(duì)RTP流進(jìn)行語(yǔ)音編碼。在SIP信令交互過(guò)程中,SIP客戶端A發(fā)起的INVITE請(qǐng)求到達(dá)SIP客戶端B后,SIP客戶端B會(huì)根據(jù)SDP包的語(yǔ)音編碼順序來(lái)查找本地語(yǔ)音編碼順序,換句話說(shuō),SIP客戶端B會(huì)以接收到的語(yǔ)音編碼順序?yàn)閮?yōu)先級(jí)。此時(shí),當(dāng)SDP包中的首個(gè)語(yǔ)音編碼在本地?zé)o法找到即SIP客戶端B不支持時(shí),再對(duì)第二個(gè)語(yǔ)音編碼進(jìn)行本地查找,以此類推;同樣的,SIP客戶端B向SIP客戶端A返回200OK后,SIP客戶端A也是采用相同的方法查找語(yǔ)音編碼的。在步驟301中,由于SIP服務(wù)器查詢的都是SIP消息發(fā)起方對(duì)端的網(wǎng)絡(luò)可用帶寬,這樣,在本步驟中,根據(jù)SIP客戶端對(duì)端的網(wǎng)絡(luò)可用帶寬修改后的SDP包到達(dá)對(duì)端后,適合對(duì)端當(dāng)前網(wǎng)絡(luò)情況的語(yǔ)音編碼被優(yōu)先選擇了,從而保證了SIP客戶端雙方使用到了各自當(dāng)前網(wǎng)絡(luò)可用帶寬下的最優(yōu)的語(yǔ)音編碼格式,滿足了不同的編碼格式對(duì)不同帶寬的需求,從而為用戶提供了高質(zhì)量的語(yǔ)音通話服務(wù)。如果在步驟301中確定出的通話雙方的編碼格式不同,為了更好地保證為用戶提供高質(zhì)量的語(yǔ)音通話服務(wù),本發(fā)明方法進(jìn)一步包括:步驟303:在通話雙方的編碼格式不同時(shí),SIP服務(wù)器對(duì)RTP流進(jìn)行語(yǔ)音編碼轉(zhuǎn)換,將語(yǔ)音編碼格式轉(zhuǎn)換為對(duì)端的編碼格式后傳遞給對(duì)端。SIP服務(wù)器比較通話雙方SIP客戶端的語(yǔ)音編碼格式,如果雙方的編碼格式相同,則控制媒體中繼服務(wù)器對(duì)RTP流進(jìn)行透?jìng)?;如果編碼格式不同,則控制媒體中繼對(duì)RTP流進(jìn)行語(yǔ)音編碼轉(zhuǎn)換:根據(jù)RTP協(xié)議,媒體傳輸開(kāi)始時(shí),SIP客戶端A和SIP客戶端B都會(huì)首先向媒體中繼服務(wù)器發(fā)起RTP流,這樣能夠保證媒體中繼服務(wù)器獲取其新的IP地址和端口。為了進(jìn)一步確保媒體傳輸?shù)臏?zhǔn)確性,此時(shí)SIP服務(wù)器獲取媒體中繼兩側(cè)客戶端的語(yǔ)音編碼格式,當(dāng)兩側(cè)客戶端的語(yǔ)音編碼格式不同時(shí),媒體中繼服務(wù)器將語(yǔ)音編碼格式轉(zhuǎn)換為對(duì)端的編碼格式,這樣,在RTP流傳輸階段,更好地保證了在SIP客戶端兩側(cè)網(wǎng)絡(luò)上始終保持匹配其可用網(wǎng)絡(luò)帶寬的語(yǔ)音編碼格式,從而更好地保證了為用戶提供高質(zhì)量的語(yǔ)音通話服務(wù)。圖4為本發(fā)明VOIP自適應(yīng)語(yǔ)音編碼系統(tǒng)的組成結(jié)構(gòu)示意圖,如圖4所示,至少包括SIP客戶端,SIP服務(wù)器;其中,SIP服務(wù)器,用于檢測(cè)網(wǎng)絡(luò)可用帶寬,并根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序并發(fā)送給對(duì)端的SIP客戶端;SIP客戶端,用于按照接收到的語(yǔ)音編碼順序選擇自身支持的編碼格式對(duì)實(shí)時(shí)傳輸協(xié)議RTP流進(jìn)行語(yǔ)音編碼。具體地,SIP客戶端,用于注冊(cè)到SIP服務(wù)器;接收來(lái)自SIP服務(wù)器的協(xié)商請(qǐng)求,在同意進(jìn)行檢測(cè)時(shí),向SIP服務(wù)器發(fā)送確認(rèn)消息,并設(shè)置網(wǎng)絡(luò)可用帶寬檢測(cè)定時(shí)器,按照協(xié)商請(qǐng)求中攜帶的時(shí)間間隔定期向中的源地址發(fā)送網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求;按照來(lái)自SIP服務(wù)器的語(yǔ)音編碼順序選擇自身支持的編碼格式對(duì)RTP流進(jìn)行語(yǔ)音編碼。SIP服務(wù)器,用于在檢測(cè)到SIP客戶端注冊(cè)時(shí),向SIP客戶端發(fā)送協(xié)商請(qǐng)求;接收到來(lái)自SIP客戶端的網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求,以協(xié)商請(qǐng)求中攜帶的檢測(cè)算法檢測(cè)SIP客戶端網(wǎng)絡(luò)當(dāng)前網(wǎng)絡(luò)可用帶寬,存儲(chǔ)獲得的SIP客戶端的網(wǎng)絡(luò)可用帶寬;根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序并發(fā)送給對(duì)端的SIP客戶端。本發(fā)明系統(tǒng)還包括媒體中繼服務(wù)器,此時(shí),SIP服務(wù)器,還用于在通話雙方的編碼格式不同時(shí),向媒體中繼服務(wù)器發(fā)送語(yǔ)音編碼轉(zhuǎn)換指令;媒體中繼服務(wù)器,用于接收來(lái)自SIP服務(wù)器的語(yǔ)音編碼轉(zhuǎn)換指令,對(duì)通話雙方的RTP流進(jìn)行語(yǔ)音編碼轉(zhuǎn)換,將語(yǔ)音編碼格式轉(zhuǎn)換為對(duì)端的編碼格式后傳遞給對(duì)端?;蛘撸琒IP服務(wù)器,還用于在通話雙方的編碼格式相同時(shí),向媒體中繼服務(wù)器發(fā)送媒體傳輸指令;媒體中繼服務(wù)器,用于接收來(lái)自SIP服務(wù)器的媒體傳輸指令,對(duì)通話雙方的RTP流進(jìn)行透?jìng)?。本發(fā)明SIP服務(wù)器除了包括現(xiàn)有SIP核心處理模塊之外,還至少包括:可用帶寬檢測(cè)模塊、SDP控制模塊;其中,SIP核心處理模塊,用于處理來(lái)自SIP客戶端的交互信息,如注冊(cè)請(qǐng)求,INVITE請(qǐng)求、200OK響應(yīng)等??捎脦挋z測(cè)模塊,用于在檢測(cè)到SIP客戶端注冊(cè)時(shí),向SIP客戶端發(fā)送協(xié)商請(qǐng)求;接收到來(lái)自SIP客戶端的網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求,以預(yù)先設(shè)定的速率向SIP客戶端發(fā)送數(shù)據(jù)包,并根據(jù)SIP客戶端返回?cái)?shù)據(jù)包檢測(cè)SIP客戶端網(wǎng)絡(luò)當(dāng)前網(wǎng)絡(luò)可用帶寬,存儲(chǔ)獲得的SIP客戶端的網(wǎng)絡(luò)可用帶寬;其中,可用帶寬檢測(cè)模塊可以通過(guò)SDP控制模塊檢測(cè)到SIP客戶端注冊(cè),也可以直接從SIP核心處理模塊檢測(cè)到SIP客戶端注冊(cè)(圖4中未示出)。SDP控制模塊,用于在檢測(cè)到SIP客戶端發(fā)起邀請(qǐng)或200OK響應(yīng)時(shí),根據(jù)檢測(cè)到的對(duì)端的網(wǎng)絡(luò)可用帶寬對(duì)語(yǔ)音編碼順序進(jìn)行排序,并經(jīng)由SIP核心處理模塊發(fā)送給對(duì)端的SIP客戶端。本發(fā)明SIP服務(wù)器還包括語(yǔ)音編碼控制模塊,用于在通話雙方的編碼格式不同時(shí),向媒體中繼服務(wù)器發(fā)送語(yǔ)音編碼轉(zhuǎn)換指令;或者,在通話雙方的編碼格式相同時(shí),向媒體中繼服務(wù)器發(fā)送媒體傳輸指令。圖4中,可用帶寬檢測(cè)模塊,具體用于檢測(cè)到來(lái)自SIP客戶端的注冊(cè)消息時(shí),向SIP客戶端發(fā)送協(xié)商請(qǐng)求;接收到來(lái)自SIP客戶端的網(wǎng)絡(luò)可用帶寬檢測(cè)請(qǐng)求,以協(xié)商請(qǐng)求中攜帶的檢測(cè)算法來(lái)檢測(cè)SIP客戶端網(wǎng)絡(luò)當(dāng)前網(wǎng)絡(luò)可用帶寬;存儲(chǔ)獲得的網(wǎng)絡(luò)可用帶寬。SDP控制模塊,具體用于檢測(cè)到SIP客戶端發(fā)起邀請(qǐng)或200OK響應(yīng)消息,根據(jù)消息中攜帶的被邀請(qǐng)或被響應(yīng)的SIP客戶端的用戶ID,查詢?cè)撚脩舻木W(wǎng)絡(luò)可用帶寬,將查詢到的網(wǎng)絡(luò)可用帶寬與預(yù)先設(shè)置的編碼格式所占用的帶寬的音頻編碼標(biāo)準(zhǔn)關(guān)系(如表1所示)進(jìn)行比對(duì),對(duì)SDP包中的語(yǔ)音編碼優(yōu)先級(jí)進(jìn)行重新排序,并經(jīng)由SIP核心處理模塊將修改后的SDP包發(fā)送給SIP客戶端對(duì)端。雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容僅為便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式及細(xì)節(jié)上進(jìn)行任何的修改與變化,但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書(shū)所界定的范圍為準(zhǔn)。