5] 步驟S615,媒體網(wǎng)關(guān)從answer消息中獲取SRTP密鑰信息保存下來,該密鑰用來解 密來自WebRTC客戶端的SRTP媒體流;
[0096] 步驟S616,媒體網(wǎng)關(guān)獲取對(duì)應(yīng)MS客戶端代理的候選地址,替換掉answer消息中 的候選地址,并監(jiān)聽相應(yīng)的第一端口,該第一端口用來同MS客戶端建立P2P連接;
[0097] 步驟S617,媒體網(wǎng)關(guān)將answer消息中的編解碼信息替換為MS客戶端支持且媒體 網(wǎng)關(guān)能夠進(jìn)行編解碼的媒體格式;
[0098] 步驟S618,媒體網(wǎng)關(guān)將answer信息返回給信令網(wǎng)關(guān);
[0099] 步驟S619,信令網(wǎng)關(guān)將roap協(xié)議的answer消息轉(zhuǎn)換為sip協(xié)議的200ok消息,最 終路由給IMS客戶端;
[0100] 步驟S620,MS客戶端收到200ok消息,此時(shí),由于MS客戶端以及其對(duì)應(yīng)的agent 都具有對(duì)方的候選地址信息,二者若連通性檢驗(yàn)通過則P2P連接建立成功;
[0101] 步驟S621,MS客戶端發(fā)送ack消息給信令網(wǎng)關(guān),經(jīng)由信令網(wǎng)關(guān)轉(zhuǎn)換成roap協(xié)議 的ok消息,最終路由給WebRTC客戶端,WebRTC客戶端與IMS客戶端媒體協(xié)商完成。
[0102] 媒體協(xié)商完成后,二者可以按照協(xié)商好的媒體格式通過建立的P2P連接向媒體網(wǎng) 關(guān)發(fā)送本地媒體流。例如,媒體網(wǎng)關(guān)收到WebRTC客戶端發(fā)送的媒體流后,會(huì)根據(jù)密鑰信息 將SRTP媒體流解密成RTP媒體流,并按照同WebRTC客戶端協(xié)商的媒體編解碼對(duì)媒體流進(jìn) 行解碼,按照同MS客戶端協(xié)商的媒體編解碼對(duì)媒體流進(jìn)行編碼,最后發(fā)送給MS客戶端。 或者,媒體網(wǎng)關(guān)收到MS客戶端發(fā)送的媒體流后,會(huì)按照同MS客戶端協(xié)商的媒體編解碼對(duì) 媒體流進(jìn)行解碼,按照同WebRTC客戶端協(xié)商的媒體編解碼對(duì)媒體流進(jìn)行編碼,然后根據(jù)密 鑰信息將RTP媒體流轉(zhuǎn)換成SRTP媒體流,最后發(fā)送給WebRTC客戶端。
[0103] 需要說明的是,對(duì)于信令網(wǎng)關(guān)向MS客戶端發(fā)送的消息,該消息先到達(dá)MS系統(tǒng)中 的查詢呼叫會(huì)話控制功能單元(I-CSCF),查詢呼叫會(huì)話控制功能單元通過查詢HSS(歸屬 用戶服務(wù)器)獲得路由信息,然后該消息依次經(jīng)過MS系統(tǒng)的服務(wù)呼叫會(huì)話控制功能單元 (S-CSCF)和代理呼叫會(huì)話控制功能單元(P-CSCF),最終路由到MS客戶端。
[0104] 圖7為本發(fā)明媒體網(wǎng)關(guān)一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,如圖7所示,本實(shí)施例的媒體網(wǎng) 關(guān)包括:
[0105] 協(xié)商模塊701,用于接收第一系統(tǒng)的第一客戶端發(fā)送的第一客戶端支持的媒體編 解碼信息和候選地址信息,其中,媒體網(wǎng)關(guān)上設(shè)有第一系統(tǒng)的第一客戶端代理和第二系統(tǒng) 的第二客戶端代理;將接收到的信息替換為第二客戶端代理的候選地址信息以及媒體網(wǎng)關(guān) 和第二客戶端均支持的媒體編解碼信息,并發(fā)送給第二客戶端;接收第二客戶端發(fā)送的第 二客戶端支持的媒體編解碼信息和候選地址信息,以便第二客戶端與其代理獲取到對(duì)方的 候選地址信息并進(jìn)行連通性檢測(cè);將接收到的信息替換為第一客戶端代理的候選地址信息 以及媒體網(wǎng)關(guān)和第一客戶端均支持的媒體編解碼信息,并發(fā)送給第一客戶端,以便第一客 戶端與其代理獲取到對(duì)方的候選地址信息并進(jìn)行連通性檢測(cè);以及
[0106] 媒體傳輸模塊702,用于根據(jù)其與第一客戶端和第二客戶端建立的連接以及協(xié)商 的媒體編解碼信息進(jìn)行媒體流的傳輸和轉(zhuǎn)換。
[0107] 在一個(gè)實(shí)施例中,媒體傳輸模塊702具體用于:通過媒體網(wǎng)關(guān)與第一客戶端建立 的連接接收到第一客戶端發(fā)送的媒體流后,按照與第一客戶端協(xié)商的媒體編解碼信息對(duì)媒 體流進(jìn)行解碼,然后按照與第二客戶端協(xié)商的媒體編解碼信息對(duì)解碼得到的媒體流進(jìn)行編 碼,并通過媒體網(wǎng)關(guān)與第二客戶端建立的連接將編碼后的媒體流傳送給第二客戶端;或者, 通過媒體網(wǎng)關(guān)與第二客戶端建立的連接接收到第二客戶端發(fā)送的媒體流后,按照與第二客 戶端協(xié)商的媒體編解碼信息對(duì)媒體流進(jìn)行解碼,然后按照與第一客戶端協(xié)商的媒體編解碼 信息對(duì)解碼得到的媒體流進(jìn)行編碼,并通過媒體網(wǎng)關(guān)與第一客戶端建立的連接將編碼后的 媒體流傳送給第一客戶端。
[0108] 在一個(gè)實(shí)施例中,第一系統(tǒng)和第二系統(tǒng)例如分別為WebRTC系統(tǒng)和IMS系統(tǒng)。
[0109] 圖8為本發(fā)明媒體網(wǎng)關(guān)再一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,媒體網(wǎng)關(guān)還包括:協(xié)議轉(zhuǎn)換 模塊803,用于接收WebRTC系統(tǒng)的客戶端發(fā)送的安全實(shí)時(shí)傳輸協(xié)議SRTP和實(shí)時(shí)傳輸協(xié)議RTP轉(zhuǎn)換用的密鑰信息,并將來自WebRTC系統(tǒng)的媒體流使用該密鑰信息解密處理后傳送給 MS系統(tǒng),或?qū)碜訫S系統(tǒng)的媒體流使用該密鑰信息加密處理后傳送給WebRTC系統(tǒng)。
[0110] 如圖8所示,媒體網(wǎng)關(guān)還包括:連接管理模塊804,用于同信令網(wǎng)關(guān)建立socket連 接,收發(fā)來自信令網(wǎng)關(guān)的消息。
[0111] 如圖8所示,媒體網(wǎng)關(guān)還包括:會(huì)話管理模塊805,用于根據(jù)會(huì)話的標(biāo)識(shí)字段管理 維護(hù)多個(gè)多媒體會(huì)話。
[0112] 信令網(wǎng)關(guān)可以按照下表所示對(duì)應(yīng)關(guān)系實(shí)現(xiàn)R0AP消息與SIP消息的轉(zhuǎn)換:
[0113] 表 1
[0114]
[0115] 信令網(wǎng)關(guān)還可以利用中間消息完成R0AP消息和SIP消息的轉(zhuǎn)換方案,從而在消息 轉(zhuǎn)換過程中可以避免對(duì)R0AP消息或SIP消息本身的解析。
[0116] 在一個(gè)實(shí)施例中,信令網(wǎng)關(guān)將R0AP消息轉(zhuǎn)換為SIP消息包括:信令網(wǎng)關(guān)將R0AP消 息封裝成R0AP中間消息;信令網(wǎng)關(guān)根據(jù)R0AP中間消息的通用消息頭修改R0AP會(huì)話狀態(tài); 信令網(wǎng)關(guān)將R0AP中間消息轉(zhuǎn)換為SIP中間消息;信令網(wǎng)關(guān)根據(jù)SIP中間消息的通用消息頭 修改SIP會(huì)話狀態(tài);信令網(wǎng)關(guān)將SIP中間消息解封裝成SIP消息。
[0117] 在一個(gè)實(shí)施例中,信令網(wǎng)關(guān)將SIP消息轉(zhuǎn)換為R0AP消息包括:信令網(wǎng)關(guān)將SIP消 息封裝成SIP中間消息;信令網(wǎng)關(guān)根據(jù)SIP中間消息的通用消息頭修改SIP會(huì)話狀態(tài);信令 網(wǎng)關(guān)將SIP中間消息轉(zhuǎn)換為R0AP中間消息;信令網(wǎng)關(guān)根據(jù)R0AP中間消息的通用消息頭修 改R0AP會(huì)話狀態(tài);信令網(wǎng)關(guān)將R0AP中間消息解封裝成R0AP消息。
[0118] 在一個(gè)實(shí)施例中,信令網(wǎng)關(guān)將R0AP消息封裝成R0AP中間消息包括:信令網(wǎng)關(guān)確定 R0AP消息的消息類型和消息名稱,并從R0AP消息中提取會(huì)話參數(shù),根據(jù)R0AP消息的消息類 型和消息名稱設(shè)置R0AP中間消息的通用消息頭,根據(jù)會(huì)話參數(shù)設(shè)置R0AP中間消息的控制 消息頭,將R0AP消息作為R0AP中間消息的消息體。
[0119] 在一個(gè)實(shí)施例中,信令網(wǎng)關(guān)將R0AP中間消息轉(zhuǎn)換為SIP中間消息包括:信令網(wǎng)關(guān) 將R0AP中間消息的消息體中的R0AP消息轉(zhuǎn)換為相應(yīng)的SIP消息,根據(jù)SIP消息的消息類 型和消息名稱設(shè)置SIP中間消息的通用消息頭,根據(jù)R0AP中間消息的控制消息頭中的會(huì)話 參數(shù)設(shè)置SIP中間消息的控制消息頭,將SIP消息作為SIP中間消息的消息體。
[0120] 在一個(gè)實(shí)施例中,信令網(wǎng)關(guān)將SIP消息封裝成SIP中間消息包括:信令網(wǎng)關(guān)確定 SIP消息的消息類型和消息名稱,并從SIP消息中提取會(huì)話參數(shù),根據(jù)SIP消息的消息類型 和消息名稱設(shè)置SIP中間消息的通用消息頭,根據(jù)會(huì)話參數(shù)設(shè)置SIP中間消息的控制消息 頭,將SIP消息作為SIP中間消息的消息體。
[0121] 在一個(gè)實(shí)施例中,信令網(wǎng)關(guān)將SIP中間消息轉(zhuǎn)換為R0AP中間消息包括:信令網(wǎng)關(guān) 將SIP中間消息的消息體中的SIP消息轉(zhuǎn)換為相應(yīng)的R0AP消息,根據(jù)R0AP消息的消息類 型和消息名稱設(shè)置R0AP中間消息的通用消息頭,根據(jù)SIP中間消息的控制消息頭中的會(huì)話 參數(shù)設(shè)置R0AP中間消息的控制消息頭,將R0AP消息作為R0AP中間消息的消息體。
[0122] 在一個(gè)實(shí)施例中,信令網(wǎng)關(guān)根據(jù)R0AP中間消息的通用消息頭修改R0AP會(huì)話狀態(tài) 包括:信令網(wǎng)關(guān)根據(jù)當(dāng)前R0AP會(huì)話狀態(tài)以及R0AP中間消息的通用消息頭中的消息名稱修 改R0AP會(huì)話狀態(tài)。
[0123] 在一個(gè)實(shí)施例中,信令網(wǎng)關(guān)根據(jù)SIP中間消息的通用消息頭修改SIP會(huì)話狀態(tài)包 括:信令網(wǎng)關(guān)根據(jù)當(dāng)前SIP會(huì)話狀態(tài)以及SIP中間消息的通用消息頭中的消息名稱修改 SIP會(huì)話狀態(tài)。
[0124] 信令網(wǎng)關(guān)可以包括:實(shí)時(shí)通信接入模塊、會(huì)話發(fā)起接入模塊、消息轉(zhuǎn)發(fā)模塊、消息 映射模塊、實(shí)時(shí)通信消息處理模塊、以及會(huì)話發(fā)起消息處理模塊。
[0125] 在信令網(wǎng)關(guān)將R0AP消息轉(zhuǎn)換為S