一種實現(xiàn)數(shù)據(jù)包重組的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)包重組的方法和裝置,該方法包括:網(wǎng)絡(luò)設(shè)備在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道;在VOIP終端向非VOIP終端發(fā)送經(jīng)過冗余處理的RTP數(shù)據(jù)包時,網(wǎng)絡(luò)設(shè)備將該RTP數(shù)據(jù)包轉(zhuǎn)換為非冗余的RTP數(shù)據(jù)包發(fā)送給非VOIP終端;或者,在非VOIP終端向VOIP終端發(fā)送經(jīng)過未做冗余處理的RTP數(shù)據(jù)包時,將該數(shù)據(jù)包轉(zhuǎn)換為攜帶冗余幀的RTP數(shù)據(jù)包發(fā)送給VOIP終端。應(yīng)用本發(fā)明實施例,提高了VOIP終端和非VOIP終端之間進行通話的質(zhì)量。
【專利說明】一種實現(xiàn)數(shù)據(jù)包重組的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,特別涉及一種實現(xiàn)數(shù)據(jù)包重組的方法和裝置。
【背景技術(shù)】
[0002]在基于IP的語音傳輸(Voice over Internet Protocol, VoIP)網(wǎng)絡(luò)電話的通話過程中,音頻和視頻等媒體流通常采用實時傳輸協(xié)議(Real-Time Transport Protocol, RTP)數(shù)據(jù)包經(jīng)過互聯(lián)網(wǎng)等IP網(wǎng)絡(luò)傳輸。而在互聯(lián)網(wǎng)傳輸中,丟包是最常見的問題之一,導(dǎo)致電話的聲音斷斷續(xù)續(xù)和視頻卡頓等現(xiàn)象,嚴(yán)重影響VoIP電話的通信質(zhì)量。冗余傳輸技術(shù)是最主要的抗丟包技術(shù),常見的冗余技術(shù)有前向糾錯(forward error correct1n, FEC)等。
[0003]但目前的冗余技術(shù)是針對主、被叫雙方的終端都支持冗余處理的應(yīng)用場景,SPVoIP業(yè)務(wù)中的VOIP客戶端到VOIP客戶端的使用場景(C2C)。而對于VOIP客戶端(Client)與終端的原生電話(Phone),即非VOIP客戶端,的互通場景(簡稱C2P或P2C),由于Phone端通常是現(xiàn)有的設(shè)備,包括傳統(tǒng)電路域的固定話機、手機、以及數(shù)據(jù)域的SIP硬終端等,通常是不支持冗余技術(shù)的,也難以升級,所以不能充分利用現(xiàn)有冗余技術(shù)來提高話音質(zhì)量。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例提供一種數(shù)據(jù)包重組的方法和裝置以解決在非VOIP終端不支持冗余技術(shù)的情況下,無法提高話音質(zhì)量的問題。
[0005]第一方面,一種數(shù)據(jù)包重組的方法,包括:
[0006]網(wǎng)絡(luò)設(shè)備在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道;
[0007]接收所述VOIP終端通過所述媒體通道向所述非VOIP終端發(fā)送的經(jīng)過冗余處理的RTP數(shù)據(jù)包;
[0008]獲取所述RTP數(shù)據(jù)包中的媒體幀以及所述媒體幀的序號;
[0009]根據(jù)歷史上記錄的所述媒體通道中已發(fā)送過的媒體幀的序號,從獲取的媒體幀中區(qū)分出已發(fā)送過的媒體幀和未發(fā)送過的媒體幀;
[0010]將未發(fā)送過的媒體幀分別打包為RTP數(shù)據(jù)包,并將打包后的RTP數(shù)據(jù)包發(fā)送給所述非VOIP終端,記錄下所述發(fā)送的媒體幀的序號。
[0011]在第一方面的第一種可能的實現(xiàn)方式中,所述將所述打包后的RTP數(shù)據(jù)包發(fā)送給所述非VOIP終端具體包括:將所述打包后的RTP數(shù)據(jù)包按照所述RTP數(shù)據(jù)包中的媒體幀的序號由低到高順序發(fā)送給所述非VOIP終端。
[0012]結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述方法還包括:創(chuàng)建與所述媒體通道對應(yīng)的列表用于記錄所述媒體通道中已發(fā)送過的媒體幀的序號;
[0013]所述記錄下所述發(fā)送的媒體幀的序號具體包括:將所述發(fā)送的媒體幀的序號記錄在所述列表中。
[0014]結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述方法還包括:根據(jù)所述列表的長度和所述列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將所述列表中已過期的媒體幀的序號刪除。
[0015]第二方面,一種數(shù)據(jù)包重組的方法,包括:
[0016]網(wǎng)絡(luò)設(shè)備在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道,;
[0017]接收所述非VOIP終端通過所述媒體通道向所述VOIP終端發(fā)送的未經(jīng)冗余處理的RTP數(shù)據(jù)包;
[0018]獲取所述RTP數(shù)據(jù)包中的媒體幀以及所述媒體幀的序號,并從緩存區(qū)中讀取所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀,所述緩存區(qū)與所述媒體通道對應(yīng),并保存有歷史接收到的媒體幀;
[0019]將從所述RTP數(shù)據(jù)包中獲取的媒體幀與從所述緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包,并將打包后的RTP數(shù)據(jù)包發(fā)送給所述VOIP終端;
[0020]在所述緩存區(qū)中緩存從所述RTP數(shù)據(jù)包中獲取的媒體幀。
[0021]在第二方面的第一種可能的實現(xiàn)方式中,所述從所述緩存區(qū)中讀取所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀包括:
[0022]根據(jù)所述媒體幀的序號和預(yù)先設(shè)置的冗余倍數(shù)確定所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀的序號;
[0023]以確定出的預(yù)設(shè)數(shù)量的媒體幀的序號從所述緩存區(qū)中讀取對應(yīng)的媒體幀。
[0024]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述方法還包括:在從所述緩存區(qū)中讀取對應(yīng)的媒體幀的過程中忽略讀取失敗的媒體幀。
[0025]結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述方法還包括:
[0026]創(chuàng)建與所述緩存區(qū)對應(yīng)的列表用于記錄所述緩存區(qū)中緩存的媒體幀的序號,所述緩存區(qū)中緩存的媒體幀的位置與所述列表中記錄的所述媒體幀的序號的位置相對應(yīng);
[0027]所述以確定出的預(yù)定數(shù)量的媒體幀的序號從所述緩存區(qū)中讀取對應(yīng)的媒體幀具體包括:
[0028]在所述列表中查找所述確定出的預(yù)定數(shù)量的媒體幀的序號,確定查找到的所述序號的位置,并從緩存區(qū)的對應(yīng)位置讀取所述序號對應(yīng)的媒體幀。
[0029]結(jié)合第二方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述方法還包括:
[0030]根據(jù)所述列表的長度和所述列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將所述列表中已過期的媒體幀的序號刪除,并對應(yīng)刪除所述緩存區(qū)中已過期的媒體幀。
[0031]第三方面,一種實現(xiàn)數(shù)據(jù)包重組的裝置,包括:
[0032]創(chuàng)建單元,用于在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道;
[0033]接收單元,用于接收所述VOIP終端通過所述媒體通道向所述非VOIP終端發(fā)送的經(jīng)過冗余處理的RTP數(shù)據(jù)包;
[0034]解析單元,用于獲取所述接收單元接收到的RTP數(shù)據(jù)包中的媒體幀以及所述媒體幀的序號,并提供給重組單元;
[0035]所述重組單元,用于根據(jù)歷史上記錄的所述媒體通道中已發(fā)送過的媒體幀的序號,從獲取的媒體幀中區(qū)分出已發(fā)送過的媒體幀和未發(fā)送過的媒體幀;將未發(fā)送過的媒體幀分別打包為RTP數(shù)據(jù)包,通過發(fā)送單元發(fā)送給所述非VOIP終端,并記錄下所述發(fā)送的媒體幀的序號;
[0036]所述發(fā)送單元,用于將打包后的所述RTP數(shù)據(jù)包發(fā)送給所述非VOIP終端。
[0037]在第三方面的第一種可能的實現(xiàn)方式中,所述發(fā)送單元具體用于將所述打包后的RTP數(shù)據(jù)包按照所述RTP數(shù)據(jù)包中的媒體幀的序號由低到高順序發(fā)送給所述非VOIP終端。
[0038]結(jié)合第三方面或第三方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述創(chuàng)建單元還用于在創(chuàng)建與所述媒體通道對應(yīng)的列表用于記錄所述媒體通道中已發(fā)送過的媒體幀的序號;
[0039]所述重組單元在記錄所述發(fā)送的媒體幀的序號時,將所述發(fā)送的媒體幀的序號在所述列表中。
[0040]結(jié)合第三方面或第三方面的第一種可能或第三方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述裝置還包括:
[0041]刪除單元,用于根據(jù)所述列表的長度和所述列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將所述列表中已過期的媒體幀的序號刪除。
[0042]第四方面,一種實現(xiàn)數(shù)據(jù)包重組的裝置,包括:
[0043]創(chuàng)建單元,用于在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道;
[0044]接收單元,接收所述非VOIP終端通過所述媒體通道向所述VOIP終端發(fā)送的未經(jīng)冗余處理的RTP數(shù)據(jù)包;
[0045]解析單元,用于獲取所述接收單元接收到的RTP數(shù)據(jù)包中的媒體幀以及所述媒體幀的序號,并提供給重組單元;
[0046]所述重組單元,用于根據(jù)從所述解析單元獲取的媒體幀的序號從緩存區(qū)中讀取所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀,與所述媒體通道對應(yīng)的,并保存有歷史接收到的媒體幀;將從所述解析單元獲取的媒體幀與從所述緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包,通過發(fā)送單元發(fā)送給所述非VOIP終端,并在緩存區(qū)中緩存從所述解析單元獲取的媒體幀;
[0047]所述發(fā)送單元,用于將所述重組單元打包后的RTP數(shù)據(jù)包發(fā)送給所述VOIP客戶端。
[0048]在第四方面的第一種可能的實現(xiàn)方式中,所述重組單元包括:
[0049]確定子單元,用于根據(jù)所述解析單元獲取的媒體幀的序號和預(yù)先設(shè)置的冗余倍數(shù)確定所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀的序號;
[0050]讀取子單元,用于以所述確定子單元確定出的預(yù)設(shè)數(shù)量的媒體幀的序號從所述緩存區(qū)中讀取對應(yīng)的媒體幀;
[0051]打包子單元,用于將從所述解析單元獲取的媒體幀與從所述緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包;
[0052]緩存子單元,用于在緩存區(qū)中緩存從所述解析單元中獲取的媒體幀。
[0053]結(jié)合第四方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述讀取子單元還用于在從所述緩存區(qū)中讀取對應(yīng)的媒體幀的過程中忽略讀取失敗的媒體幀。
[0054]結(jié)合第四方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述創(chuàng)建單元還用于創(chuàng)建與所述緩存區(qū)對應(yīng)的列表用于記錄所述緩存區(qū)中緩存的媒體幀的序號,所述緩存區(qū)中緩存的媒體幀的位置與所述列表中記錄的所述媒體幀的序號的位置相對應(yīng);
[0055]所述讀取子單元具體用于在所述列表中查找所述確定子單元確定出的預(yù)定數(shù)量的媒體幀的序號,確定查找到的所述序號的位置,并從緩存區(qū)的對應(yīng)位置讀取所述序號對應(yīng)的媒體幀,其中,在所述查找過程中忽略未查找到的序號。
[0056]結(jié)合第四方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述裝置還包括:
[0057]刪除單元,用于根據(jù)所述列表的長度和所述列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將所述列表中已過期的媒體幀的序號刪除,并對應(yīng)刪除所述緩存區(qū)中已過期的媒體幀。
[0058]本發(fā)明實施例在易發(fā)生網(wǎng)絡(luò)丟包的VOIP終端側(cè)采用冗余技術(shù)對媒體幀傳輸,減少了互聯(lián)網(wǎng)中丟包對媒體幀傳輸產(chǎn)生的影響,并由網(wǎng)絡(luò)設(shè)備對冗余數(shù)據(jù)包和非冗余數(shù)據(jù)包進行轉(zhuǎn)換,在可靠性較高的電信網(wǎng)中采用非冗余數(shù)據(jù)包進行傳輸,使非VOIP終端可以正確解碼或編碼。從而提高了 VOIP終端和非VOIP終端之間的通話質(zhì)量。
【專利附圖】
【附圖說明】
[0059]為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0060]圖1是VOIP終端與非VOIP終端進行通話的網(wǎng)絡(luò)結(jié)構(gòu)圖;
[0061]圖2是本發(fā)明實施例提供的數(shù)據(jù)包重組方法的流程圖;
[0062]圖3是本發(fā)明另一實施例提供的數(shù)據(jù)包重組方法的流程圖;
[0063]圖4是本發(fā)明實施例提供將冗余數(shù)據(jù)包轉(zhuǎn)換為非冗余數(shù)據(jù)包的示意圖;
[0064]圖5是本發(fā)明另一實施例提供的數(shù)據(jù)包重組方法的流程圖;
[0065]圖6是本發(fā)明另一實施例提供的數(shù)據(jù)包重組方法的流程圖;
[0066]圖7是本發(fā)明實施例提供將非冗余數(shù)據(jù)包轉(zhuǎn)換為冗余數(shù)據(jù)包的示意圖;
[0067]圖8是本發(fā)明另一實施例提供的數(shù)據(jù)包重組裝置的結(jié)構(gòu)示意圖;
[0068]圖9是本發(fā)明另一實施例提供的數(shù)據(jù)包重組裝置的結(jié)構(gòu)示意圖;
[0069]圖10是本發(fā)明另一實施例提供的數(shù)據(jù)包重組裝置的結(jié)構(gòu)示意圖;
[0070]圖11是本發(fā)明另一實施例提供的數(shù)據(jù)包重組裝置的結(jié)構(gòu)示意圖;
[0071]圖12是本發(fā)明實施例提供的數(shù)據(jù)包重組裝置的硬件結(jié)構(gòu)示意圖。
【具體實施方式】
[0072]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0073]本發(fā)明實施例中,將通過VOIP客戶端進行通話的終端稱之為VOIP終端。反之,未通過VOIP客戶端進行通話的的終端則稱之為非VOIP終端。其中,VOIP終端可以是計算機、平板電腦或手機等終端。非VOIP終端可以是固定電話、手機或SIP硬終端等終端。VOIP終端與非VOIP終端的主要區(qū)別在于是否通過VOIP客戶端進行通話。以手機為例,在手機采用VOIP客戶端進行呼叫通話時,手機是VOIP終端;當(dāng)手機未采用VOIP客戶端,而是采用手機的原生電話系統(tǒng)進行通話時,手機是非VOIP客戶端。
[0074]下面通過圖1對VOIP終端與非VOIP終端進行通話的網(wǎng)絡(luò)結(jié)構(gòu)進行說明。如圖1所示,在VOIP終端與非VOIP終端進行通話的網(wǎng)絡(luò)中包括互聯(lián)網(wǎng)(internet)和運營商提供的公用陸地移動網(wǎng)(public land mobile network, PLMN)或公用交互電話網(wǎng)(publicswitched telephone network,PSTN)。VOIP 終端接入到 internet 網(wǎng)中,通過 internet 網(wǎng)發(fā)送或接收數(shù)據(jù)。非VOIP終端接入到電信網(wǎng)絡(luò)PLMN/PSTN中,通過PLMN/PSTN網(wǎng)絡(luò)發(fā)送或接收數(shù)據(jù)。其中,在VOIP終端與非VOIP終端進行通話的網(wǎng)絡(luò)中還包括用于在互聯(lián)網(wǎng)和電信網(wǎng)絡(luò)間實現(xiàn)互通的網(wǎng)絡(luò)設(shè)備,如VOIP軟交換設(shè)備和/或落地網(wǎng)關(guān)。本發(fā)明實施例的方案可以在VOIP軟交換設(shè)備上實現(xiàn),也可以在落地網(wǎng)關(guān)上實現(xiàn)。
[0075]具體的,在VOIP終端與非VOIP終端的呼叫過程中,如果是音頻呼叫,網(wǎng)絡(luò)設(shè)備為VOIP終端與非VOIP終端建立兩條不同方向的音頻媒體通道,一條從VOIP終端到非VOIP終端,另一條從非VOIP終端到VOIP終端。如果是視頻呼叫,則除了建立兩條音頻媒體通道外,還可以建立兩條不同方向的視頻媒體通道用于傳輸視頻。VOIP終端在媒體通道建立后,將本端的音頻或視頻媒體經(jīng)過internet網(wǎng)絡(luò)傳輸?shù)骄W(wǎng)絡(luò)設(shè)備(V0IP軟交換設(shè)備和/或落地網(wǎng)關(guān)),再由網(wǎng)絡(luò)設(shè)備經(jīng)過電信網(wǎng)絡(luò)傳輸?shù)椒荲OIP終端。
[0076]由于互聯(lián)網(wǎng)的傳輸可靠性較差,容易發(fā)生丟包,而非VOIP終端又不支持冗余技術(shù),因此,本發(fā)明實施例提供了一種在網(wǎng)絡(luò)設(shè)備(如,VOIP軟交換設(shè)備或落地網(wǎng)關(guān))進行數(shù)據(jù)包重組的方案,由網(wǎng)絡(luò)設(shè)備對傳輸?shù)臄?shù)據(jù)包在冗余和非冗余之間進行轉(zhuǎn)換,實現(xiàn)在互聯(lián)網(wǎng)中采用冗余技術(shù)傳輸?shù)臄?shù)據(jù),提高互聯(lián)網(wǎng)的抗丟包能力,而對在電信網(wǎng)中傳輸?shù)臄?shù)據(jù)不采用冗余技術(shù),讓非VOIP終端可以正確解碼或編碼。
[0077]本發(fā)明實施例中的冗余是指在發(fā)送當(dāng)前媒體幀的數(shù)據(jù)包中攜帶上已發(fā)送過的媒體幀,其中,需要攜帶的已發(fā)送過的媒體幀由冗余倍數(shù)決定。本發(fā)明實施例中的數(shù)據(jù)包為RTP數(shù)據(jù)包。
[0078]圖2為本發(fā)明實施例提供的數(shù)據(jù)包重組的方法的流程圖,本實施例描述從VOIP終端到非VOIP終端的方向的數(shù)據(jù)重組方法,具體包括:
[0079]S200,網(wǎng)絡(luò)設(shè)備在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道。其中,VOIP終端為通過VOIP客戶端來進行該通話的終端。
[0080]在VOIP終端和非VOIP終端的呼叫建立過程中,網(wǎng)絡(luò)設(shè)備分別建立從VOIP終端到非VOIP終端方向的媒體通道和從非VOIP終端到VOIP終端方向的媒體通道。本實施例為了方便對VOIP終端向非VOIP終端發(fā)送數(shù)據(jù)包進行說明,因此,以建立VOIP終端到非VOIP終端方向的媒體通道為例進行說明。
[0081]S202,網(wǎng)絡(luò)設(shè)備接收VOIP終端通過該媒體通道向非VOIP終端發(fā)送的經(jīng)過冗余處理的RTP數(shù)據(jù)包。
[0082]在媒體通道建立后,VOIP終端對本端的媒體幀進行采集,并按照預(yù)設(shè)的冗余倍數(shù)將采集的媒體幀打包為RTP數(shù)據(jù)包。其中,對媒體幀的冗余處理可采用現(xiàn)有冗余技術(shù)來實現(xiàn),這里不再贅述。
[0083]S204,網(wǎng)絡(luò)設(shè)備獲取所述RTP數(shù)據(jù)包中的媒體幀以及媒體幀的序號。
[0084]網(wǎng)絡(luò)設(shè)備在接收到VOIP終端發(fā)送的RTP數(shù)據(jù)包后,對接收到的RTP數(shù)據(jù)包進行解析,獲得RTP數(shù)據(jù)包中的媒體幀以及媒體幀的序號。
[0085]S206,網(wǎng)絡(luò)設(shè)備根據(jù)歷史上記錄的該媒體通道中已發(fā)送過的媒體幀的序號,從獲取的媒體幀中區(qū)分出已發(fā)送過的媒體幀和未發(fā)送過的媒體幀。
[0086]具體的,網(wǎng)絡(luò)設(shè)備會對該媒體通道中發(fā)送過的媒體幀的序號進行記錄。在網(wǎng)絡(luò)設(shè)備解析出媒體幀和媒體幀的序號后,將解析出的媒體幀的序號與歷史記錄的該媒體通道中已發(fā)送過的媒體巾貞的序號進行匹配,若匹配到相同的序號,貝1J表明該媒體巾貞已發(fā)送過;若未匹配到相同的序號,則表明該媒體幀沒有發(fā)送過。
[0087]S208,網(wǎng)絡(luò)設(shè)備將未發(fā)送過的媒體幀分別打包為RTP數(shù)據(jù)包,并將打包后的RTP數(shù)據(jù)包發(fā)送給非VOIP終端,記錄下發(fā)送的媒體幀的序號。
[0088]由于非VOIP終端不支持RTP數(shù)據(jù)包中攜帶冗余媒體幀,因為非VOIP終端無法解析攜帶多個媒體幀的RTP數(shù)據(jù)包。因此,在打包發(fā)送給非VOIP終端的RTP數(shù)據(jù)包時,將每個媒體幀分別打包。
[0089]如果獲取的媒體幀屬于已發(fā)送過的媒體幀,則說明該媒體幀是冗余的媒體幀。此情況下,可將獲取的媒體幀中屬于已發(fā)送過的媒體幀丟棄。
[0090]網(wǎng)絡(luò)設(shè)備在創(chuàng)建媒體通道時,還可以創(chuàng)建與該媒體通道對應(yīng)的列表用于記錄已發(fā)送過的媒體幀的序號。本發(fā)明實施例中的列表并不特指表結(jié)構(gòu),還可以包括隊列或堆棧等數(shù)據(jù)結(jié)構(gòu)的線性表,可以通過數(shù)組或鏈表來實現(xiàn)。
[0091]網(wǎng)絡(luò)設(shè)備在每次給非VOIP終端發(fā)送媒體幀時,都記錄下該次發(fā)送的媒體幀的序號,以便下次接收到RTP數(shù)據(jù)包時對RTP數(shù)據(jù)包中的冗余媒體幀進行區(qū)分。
[0092]本發(fā)明實施例在易發(fā)生網(wǎng)絡(luò)丟包的VOIP終端側(cè)采用冗余技術(shù)對媒體幀進行傳輸,即采用在數(shù)據(jù)包中攜帶冗余的媒體幀的方式進行傳輸,減少了在互聯(lián)網(wǎng)中的丟包,并由網(wǎng)絡(luò)設(shè)備將經(jīng)過冗余處理的數(shù)據(jù)包轉(zhuǎn)換為非冗余的數(shù)據(jù)包,使非VOIP終端可以正確解碼。從而在非VOIP終端不支持冗余技術(shù)的情況下,提高了話音質(zhì)量。而且,網(wǎng)絡(luò)設(shè)備在將經(jīng)過冗余處理的數(shù)據(jù)包轉(zhuǎn)換為非冗余的數(shù)據(jù)包時,無需將所有媒體幀緩存下來再轉(zhuǎn)換,而是通過記錄下已發(fā)送的媒體幀的序號,對每個數(shù)據(jù)包進行實時判斷并轉(zhuǎn)換,實現(xiàn)了即到即轉(zhuǎn)。因此,本發(fā)明實施例提供的方案在轉(zhuǎn)換時增加的延時也非常小。
[0093]為了提高非VOIP終端的解析效率,在本發(fā)明的一個實施例中,步驟S208中的將打包后的RTP數(shù)據(jù)包發(fā)送給非VOIP終端可以具體包括:將所述打包后的RTP數(shù)據(jù)包按照所述RTP數(shù)據(jù)包中的媒體幀的序號由低到高順序發(fā)送給非VOIP終端。
[0094]在本發(fā)明另一實施例中,網(wǎng)絡(luò)設(shè)備還可以將列表中已過期的媒體幀的序號刪除。從而節(jié)約網(wǎng)絡(luò)設(shè)備的存儲資源。具體的,網(wǎng)絡(luò)設(shè)備可以根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,然后將該列表中已過期的媒體幀的序號刪除。其中,根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號可以采用算法來實現(xiàn)。舉例說明,假設(shè)該算法為M-N+1,其中,N為用于記錄已發(fā)送媒體幀的序號的列表長度,M為列表中記錄的最新的媒體幀的序號,則網(wǎng)絡(luò)設(shè)備將序號小于或等于M-N+1的媒體幀確定為過期媒體幀。通過本實施例中的方法可以實時確定過期媒體幀的序號。
[0095]下面通過具體實施例來對圖2所示的從VOIP終端到非VOIP終端方向的數(shù)據(jù)重組方法做更詳細的說明,本實施例中假設(shè)冗余倍數(shù)為k (k為整數(shù),常用取值有0,1,2,其中O表示沒有冗余)。如圖3所示,圖3為從VOIP終端到非VOIP終端方向的數(shù)據(jù)重組方法,該方法包括:
[0096]S300, VOIP終端發(fā)起對非VOIP終端的呼叫。
[0097]S302,網(wǎng)絡(luò)設(shè)備在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道。
[0098]本實施例為了方便對VOIP終端向非VOIP終端發(fā)送數(shù)據(jù)包進行說明,因此,以建立VOIP終端到非VOIP終端方向的媒體通道為例進行說明。
[0099]S304,網(wǎng)絡(luò)設(shè)備創(chuàng)建對應(yīng)媒體通道的列表用于記錄該媒體通道中已發(fā)送過的媒體中貞的序號。
[0100]本實施例將網(wǎng)絡(luò)設(shè)備創(chuàng)建的列表記為listl,該列表的長度記為N (N為正整數(shù))。其中,列表的長度可以靈活設(shè)置,范圍通常為10?200。需要說明的是,本發(fā)明實施例中的列表并不是特指表結(jié)構(gòu),而是還可包括堆棧、隊列等數(shù)據(jù)結(jié)構(gòu)的線性表。
[0101]S306,網(wǎng)絡(luò)設(shè)備接收VOIP終端通過該媒體通道向非VOIP終端發(fā)送的經(jīng)過冗余處理的RTP數(shù)據(jù)包。
[0102]由于本實施例中冗余倍數(shù)為k,因此,VOIP終端在進行冗余處理時,除了在RTP數(shù)據(jù)包中攜帶當(dāng)前要發(fā)送的媒體幀,還同時攜帶當(dāng)前媒體幀之前的k個媒體幀。如果當(dāng)前媒體幀之前不足k個媒體幀,則在RTP數(shù)據(jù)包中攜帶當(dāng)前幀之前的所有媒體幀。下面舉例進行說明,假設(shè)有媒體幀Aci, A1, A2, A3, A4......Am,其中k=2 (即2倍冗余),發(fā)送A1幀時,由于A1
之前不足3個媒體幀,因此,RTP數(shù)據(jù)包中僅攜帶Aci, A1,其中Aci為冗余媒體幀。發(fā)送八2幀時,RTP數(shù)據(jù)包中攜帶A0, A1, A2,其中,Atl, A1為冗余媒體幀。發(fā)送A3幀時,RTP數(shù)據(jù)包中攜帶A1, A2, A3,其中,A1, A2為冗余媒體幀,依次類推,每個幀都會進行2倍冗余。
[0103]S308,網(wǎng)絡(luò)設(shè)備解析數(shù)據(jù)包,得到數(shù)據(jù)包中的媒體幀以及該媒體幀的序號。
[0104]S310,網(wǎng)絡(luò)設(shè)備將得到的媒體幀序號與列表中記錄的已發(fā)送過的媒體幀序號進行匹配,若在列表中匹配到相同的序號,則執(zhí)行S312 ;若在列表中未匹配到相同的序號,則執(zhí)行 S314。
[0105]S312,網(wǎng)絡(luò)設(shè)備將匹配到相同序號的媒體幀丟棄。
[0106]如果在列表中匹配到相同序號,則說明該媒體幀是冗余的媒體幀,因此,將該媒體幀丟棄。
[0107]S314,網(wǎng)絡(luò)設(shè)備將未匹配到相同序號媒體幀分別打包為獨立的RTP數(shù)據(jù)包,并將打包后的RTP數(shù)據(jù)包發(fā)送給非VOIP終端,在列表中記錄下發(fā)送的媒體幀的序號。
[0108]S316,網(wǎng)絡(luò)設(shè)備刪除列表中過期的媒體幀的序號。
[0109]網(wǎng)絡(luò)設(shè)備在將媒體幀的序號記錄到列表時,還可以進一步對列表中過期的媒體幀序號進行刪除。其中,網(wǎng)絡(luò)設(shè)備可以根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號來確定列表中過期的媒體幀。具體的,假設(shè)列表中記錄的最新的媒體幀的序號為M,則可將序號不大于M-N+1的媒體幀認為是過期媒體幀。通過此方式計算過期媒體幀,可以在每記錄一個媒體幀的序號就判斷一次,從而可以實時的將列表早期記錄的序號刪除。例如,假設(shè)列表的長度N=50,當(dāng)M=50時(此時列表已經(jīng)被存滿),網(wǎng)絡(luò)設(shè)備將小于等于I的媒體幀序號刪除。當(dāng)然,M-N+1僅是一個舉例,本領(lǐng)域技術(shù)人員也可以根據(jù)該例子想到其它的計算方式,比如也可以采用M-N+2來實現(xiàn)。
[0110]為了便于理解,下面進行舉例描述。如圖4所示,圖4為將冗余數(shù)據(jù)包轉(zhuǎn)換為非冗余數(shù)據(jù)包的示意圖。假設(shè)VOIP終端發(fā)出A、B、C三個數(shù)據(jù)包,其中,數(shù)據(jù)包A攜帶序號為5,6,7的三個媒體幀,數(shù)據(jù)包B攜帶序號為6,7,8的三個媒體幀,數(shù)據(jù)包C攜帶序號為7,8,9的三個媒體幀。由于網(wǎng)絡(luò)丟包問題,導(dǎo)致數(shù)據(jù)包B丟失。網(wǎng)絡(luò)設(shè)備(VOIP軟交換設(shè)備或落地網(wǎng)關(guān))僅接收到A和C兩個數(shù)據(jù)包。其中,數(shù)據(jù)包A先到達網(wǎng)絡(luò)設(shè)備。
[0111]在上述情況下,當(dāng)網(wǎng)絡(luò)設(shè)備(VOIP軟交換設(shè)備或落地網(wǎng)關(guān))接收到數(shù)據(jù)包C時,解析得到序號分別為7,8,9的三個媒體幀。由于序號幀7在數(shù)據(jù)包A也攜帶有,因此,網(wǎng)絡(luò)設(shè)備可以從列表中匹配到該幀的序號,從而確定該幀是已發(fā)送過的媒體幀。網(wǎng)絡(luò)設(shè)備將幀7丟棄。對于序號為8的媒體幀,由于數(shù)據(jù)包B丟失,因此數(shù)據(jù)包C到達網(wǎng)絡(luò)設(shè)備時,網(wǎng)絡(luò)設(shè)備是首次收到幀8,網(wǎng)絡(luò)設(shè)備在列表中無法匹配到該幀的序號。因此,網(wǎng)絡(luò)設(shè)備將該幀獨立打包發(fā)送給非VOIP終端。對于序號為9的媒體幀,網(wǎng)絡(luò)設(shè)備也是首次收到,因此,網(wǎng)絡(luò)設(shè)備也將幀9獨立打包發(fā)送給非VOIP終端。
[0112]通過上述方式,本發(fā)明實施例提供的方案可以成功抵御互聯(lián)網(wǎng)的丟包問題。
[0113]下面對從非VOIP終端到VOIP終端的方向的數(shù)據(jù)重組方法進行說明,如圖5所示,圖5為本發(fā)明實施例提供的數(shù)據(jù)包重組的方法的流程圖,具體包括:
[0114]S500,網(wǎng)絡(luò)設(shè)備在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道。
[0115]在VOIP終端和非VOIP終端的呼叫建立過程中,網(wǎng)絡(luò)設(shè)備分別建立從VOIP終端到非VOIP終端方向的媒體通道和從非VOIP終端到VOIP終端方向的媒體通道。本實施例描述從非VOIP終端到VOIP終端的方向的數(shù)據(jù)重組方法,因此,本實施例以從非VOIP終端到VOIP終端的方向的媒體通道為例進行說明。
[0116]網(wǎng)絡(luò)設(shè)備在建立媒體通道時還可以創(chuàng)建與該媒體通道對應(yīng)的緩存區(qū)用于緩存接收到的媒體幀。
[0117]S502,網(wǎng)絡(luò)設(shè)備接收非VOIP終端通過該媒體通道向VOIP終端發(fā)送的未經(jīng)冗余處理的RTP數(shù)據(jù)包。
[0118]在媒體通道建立后,非VOIP終端對本端的媒體幀進行采集,并將采集的媒體幀分別打包為獨立的RTP數(shù)據(jù)包。由于非VOIP終端不支持對媒體幀的冗余處理,因此,在打包時,每個RTP數(shù)據(jù)包中攜帶一個媒體幀。
[0119]S504,網(wǎng)絡(luò)設(shè)備獲取該RTP數(shù)據(jù)包中的媒體幀以及該媒體幀的序號,并根據(jù)該媒體幀的序號從緩存區(qū)中讀取該媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀。其中,該緩存區(qū)與媒體通道對應(yīng),并保存有歷史接收到的媒體幀的
[0120]其中,從緩存區(qū)中讀取該媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀具體可包括:
[0121]網(wǎng)絡(luò)設(shè)備根據(jù)RTP數(shù)據(jù)包中的媒體幀的序號和預(yù)先設(shè)置的冗余倍數(shù)確定該媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀的序號;以確定出的媒體幀的序號從緩存區(qū)中讀取對應(yīng)的媒體幀。
[0122]進一步的,網(wǎng)絡(luò)設(shè)備在從所述緩存區(qū)中讀取對應(yīng)的媒體幀的過程中可忽略讀取失敗的媒體幀。
[0123]由于數(shù)據(jù)包到達網(wǎng)絡(luò)設(shè)備的時間有先后,有可能會存在序號在前的媒體幀后到達網(wǎng)絡(luò)設(shè)備的情況,因此,網(wǎng)絡(luò)設(shè)備在緩存區(qū)中無法找到該媒體幀,導(dǎo)致讀取失敗。在此情況下,網(wǎng)絡(luò)設(shè)備可以繼續(xù)執(zhí)行后續(xù)操作,忽略讀取失敗的媒體幀。
[0124]S506,網(wǎng)絡(luò)設(shè)備將從RTP數(shù)據(jù)包中獲取的媒體幀與從緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包,并將打包后的RTP數(shù)據(jù)包發(fā)送給所述VOIP終端。
[0125]S508,網(wǎng)絡(luò)設(shè)備在緩存區(qū)中緩存從RTP數(shù)據(jù)包中獲取的媒體幀。
[0126]本發(fā)明實施例中,網(wǎng)絡(luò)設(shè)備將非VOIP終端發(fā)送的非冗余的數(shù)據(jù)包轉(zhuǎn)換為經(jīng)過冗余處理的數(shù)據(jù)包,然后通過互聯(lián)網(wǎng)發(fā)送給VOIP終端,使得在非VOIP終端不支持冗余技術(shù)的情況下,仍可采用冗余技術(shù)來提高話音質(zhì)量。
[0127]為了提高從緩存區(qū)讀取需要進行冗余處理的媒體幀的效率,在本發(fā)明的一個實施例中,網(wǎng)絡(luò)設(shè)備還可以創(chuàng)建用于記錄緩存區(qū)中緩存的媒體幀的序號的列表。其中,緩存區(qū)中緩存的媒體幀的位置與列表中記錄的該媒體幀的序號的位置相對應(yīng)。網(wǎng)絡(luò)設(shè)備以確定出的預(yù)定數(shù)量的媒體幀的序號從緩存區(qū)中讀取對應(yīng)的媒體幀具體可以包括:在列表中查找確定出的預(yù)定數(shù)量的媒體幀的序號,確定查找到的序號的位置,并從緩存區(qū)的對應(yīng)位置讀取該序號對應(yīng)的媒體幀。其中,在查找過程中如果有查找不到的序號,則忽略該序號。由于在列表中進行查找速度比在緩存區(qū)中查找的速度更快,因此可以提高讀取待進行冗余處理的媒體幀的效率。
[0128]上述實施例中,查找到的序號的位置是指該序號相對列表起始處的偏移位置。緩存區(qū)中緩存的媒體幀的位置與列表中記錄的該媒體幀的序號的位置相對應(yīng)是指該媒體幀在緩存區(qū)中相對該緩存區(qū)起始位置的偏移位置與該媒體幀的序號在列表中的偏移位置相同。
[0129]在本發(fā)明另一實施例中,網(wǎng)絡(luò)設(shè)備還可以將列表中已過期的媒體幀序號和緩存區(qū)中媒體幀刪除,從而節(jié)約網(wǎng)絡(luò)設(shè)備的存儲資源。網(wǎng)絡(luò)設(shè)備可以根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,然后將該列表中已過期的媒體幀的序號刪除和緩存區(qū)中對應(yīng)的媒體幀刪除。其中,根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號可以采用算法來實現(xiàn)。舉例說明,假設(shè)該算法為M-N+1,其中,N為用于記錄緩存區(qū)中緩存的媒體幀的序號的列表的長度,M為列表中記錄的最新的媒體幀的序號,則網(wǎng)絡(luò)設(shè)備將序號小于或等于M-N+1的媒體幀確定為過期媒體幀。網(wǎng)絡(luò)設(shè)備確定出過期媒體幀的序號后,從列表中查找過期媒體幀的序號,并根據(jù)查找到的序號找到緩存區(qū)中對應(yīng)的媒體幀,刪除列表中的該序號和緩存區(qū)中對應(yīng)的媒體幀。通過本實施例中的方法可以實時確定過期媒體幀的序號。
[0130]下面通過具體實施例來對圖5所示的從非VOIP終端到VOIP終端方向的數(shù)據(jù)重組方法做更詳細的說明。本實施例中假設(shè)冗余倍數(shù)為k (k為整數(shù),常用取值有0,1,2,其中O表示沒有冗余)。如圖6所示,圖6為從非VOIP終端到VOIP終端方向的數(shù)據(jù)重組方法,該方法包括:
[0131]S600,非VOIP終端發(fā)起對VOIP終端的呼叫。
[0132]S602,網(wǎng)絡(luò)設(shè)備在非VOIP終端和VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道。
[0133]本實施例為了方便對非VOIP終端向VOIP終端發(fā)送數(shù)據(jù)包進行說明,因此,以建立非VOIP終端到VOIP終端方向的媒體通道為例進行說明。
[0134]S604,網(wǎng)絡(luò)設(shè)備創(chuàng)建與該媒體通道對應(yīng)的緩存區(qū)用于緩存接收到的媒體幀,并創(chuàng)建用于記錄該緩存區(qū)中緩存的媒體幀的序號的列表。
[0135]其中,緩存區(qū)中緩存的媒體幀的位置與列表中記錄的該媒體幀的序號的位置相對應(yīng)。即媒體幀在緩存區(qū)中相對該緩存區(qū)起始位置的偏移位置與該媒體幀的序號在列表中的偏移位置相同。
[0136]本實施例中網(wǎng)絡(luò)設(shè)備創(chuàng)建的列表記為list2,該列表的長度記為N (N為正整數(shù))。其中,列表的長度可以靈活設(shè)置,范圍通常為10?200。需要說明的是,本發(fā)明實施例中的列表并不是特指表結(jié)構(gòu),而是還可包括堆棧、隊列等數(shù)據(jù)結(jié)構(gòu)的線性表。
[0137]S606,網(wǎng)絡(luò)設(shè)備接收非VOIP終端通過媒體通道向VOIP終端發(fā)送的未經(jīng)冗余處理的RTP數(shù)據(jù)包。
[0138]在媒體通道建立后,非VOIP終端對本端的媒體幀進行采集,并將采集的媒體幀分別打包為RTP數(shù)據(jù)包。由于非VOIP終端不支持對媒體幀的冗余處理,因此,在打包時,每個RTP數(shù)據(jù)包中攜帶一個媒體幀。
[0139]S608,獲取接收到的RTP數(shù)據(jù)包中的媒體幀和該媒體幀的序號。
[0140]網(wǎng)絡(luò)設(shè)備從接收的RTP數(shù)據(jù)包中解析出媒體幀和該媒體幀的序號。
[0141]S610,根據(jù)從RTP數(shù)據(jù)包中解析出的媒體幀的序號和預(yù)先設(shè)置的冗余倍數(shù)確定該媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀的序號。
[0142]其中,解析出的媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀為解析出的媒體幀之前的k(k為冗余倍數(shù))個媒體幀。步驟S610中的根據(jù)解析出的媒體幀的序號和預(yù)先設(shè)置的冗余倍數(shù)確定解析出的媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀的序號具體包括:將解析出的媒體幀的序號分別減去I至k所得到的序號則為需進行冗余處理的媒體幀的序號。舉例說明,假設(shè)解析得到的媒體幀的序號為An,則An之前的k個媒體幀的序號分別為An-1,An-2,……,An_k。其中’序號為八匸^八,〗,……,An-k的媒體幀則為解析出的媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀。
[0143]S612,在列表中查找確定出的預(yù)設(shè)數(shù)量的媒體幀的序號,當(dāng)列表中不存在查找的序號時則執(zhí)行步驟S614 ;當(dāng)列表中存在查找的序號時則執(zhí)行步驟S616。
[0144]S614,忽略未查找到的序號。
[0145]當(dāng)列表中不存在查找的序號時,若該序號不是最后一個需要進行冗余處理的媒體幀的序號,則網(wǎng)絡(luò)設(shè)備忽略掉該序號,繼續(xù)在列表中查找其它需要進行冗余處理的媒體幀的序號;若該序號是最后一個需要進行冗余處理的媒體幀的序號,則結(jié)果查找流程。
[0146]S616,確定查找到的序號的位置,并從緩存區(qū)的對應(yīng)位置讀取所述序號對應(yīng)的媒體幀。
[0147]具體的,網(wǎng)絡(luò)設(shè)備先確定該序號在列表中的偏移位置,然后在緩存區(qū)的相應(yīng)偏移位置處獲取對應(yīng)的媒體幀。
[0148]S618,將從RTP數(shù)據(jù)包中獲取的媒體幀與從緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包,將打包后的RTP數(shù)據(jù)包發(fā)送給所述VOIP終端。
[0149]S620,在緩存區(qū)中緩存從RTP數(shù)據(jù)包中獲取的媒體幀,并在列表中記錄該媒體幀的序號。
[0150]其中,緩存區(qū)中緩存的媒體幀的位置與列表中記錄的該媒體幀的序號的位置相對應(yīng)。
[0151]S622,網(wǎng)絡(luò)設(shè)備刪除列表中過期的媒體幀的序號以及緩存區(qū)中對應(yīng)的過期媒體幀。
[0152]網(wǎng)絡(luò)設(shè)備在緩存媒體幀以及媒體幀的序號時,還可以進一步對過期的媒體幀和該媒體幀的序號進行刪除。其中,網(wǎng)絡(luò)設(shè)備可以根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號來確定列表中過期的媒體幀。具體的,假設(shè)列表中記錄的最新的媒體幀的序號為M,則可將序號不大于M-N+1的媒體幀認為是過期媒體幀。通過此方式計算過期媒體幀,可以在每記錄一個媒體幀的序號就判斷一次,從而可以實時的將列表早期記錄的序號以及緩存區(qū)中與該序號對應(yīng)的媒體幀刪除。例如,假設(shè)列表的長度N=50,當(dāng)M=50時,網(wǎng)絡(luò)設(shè)備將序號為I的媒體幀序號以及緩存區(qū)中對應(yīng)的媒體幀刪除。當(dāng)然,M-N+1僅是一個舉例,本領(lǐng)域技術(shù)人員也可以根據(jù)該例子想到其它的計算方式,比如也可以采用M-N+2來實現(xiàn)。
[0153]為了便于理解,下面進行舉例描述。如圖7所示,圖7為將非冗余數(shù)據(jù)包轉(zhuǎn)換為冗余數(shù)據(jù)包的示意圖。假設(shè)采用2倍冗余(即k=2,每個數(shù)據(jù)包除攜帶當(dāng)前的媒體幀,還需同時攜帶之前的兩個媒體幀),非VOIP終端發(fā)出數(shù)據(jù)包C,其中,數(shù)據(jù)包C中攜帶序號為9的媒體幀。假設(shè)網(wǎng)絡(luò)設(shè)備在接收到數(shù)據(jù)包C之前,還接收到分別攜帶序號為7和8的數(shù)據(jù)包A和數(shù)據(jù)包B,并對序號為7和8的媒體幀進行了緩存。
[0154]在上述情況下,當(dāng)網(wǎng)絡(luò)設(shè)備接收到數(shù)據(jù)包C時,根據(jù)數(shù)據(jù)包C中的媒體幀的序號和要采用的冗余倍數(shù)計算需要進行冗余處理的媒體幀的序號,即用數(shù)據(jù)包C中的媒體幀的序號9分別減去I至k(本實施例中k=2),得到需要進行冗余處理的媒體幀的序號分別為7和8。因此,在記錄有緩存區(qū)中緩存的媒體幀的序號的列表中查找序號7和8。假設(shè)查找到的序號7和8在列表中的位置分別為第3和第4個位置(即相對列表起始位置的偏移量為分別為3和4),則在緩存區(qū)的第3和第4個位置讀取出相應(yīng)的媒體幀。將讀取出的序號為7和8的媒體幀與接收到的序號為9的媒體幀打包為一個RTP數(shù)據(jù)包,其中,RTP數(shù)據(jù)包中的媒體幀7和媒體幀8為冗余幀。然后將打包后的RTP數(shù)據(jù)包發(fā)送給VOIP終端。
[0155]通過上述方式,本發(fā)明實施例提供的方案可以成功抵御互聯(lián)網(wǎng)的丟包問題。
[0156]上述方法實施例中的網(wǎng)絡(luò)設(shè)備可以是圖1所示網(wǎng)絡(luò)架構(gòu)中的VOIP軟交換設(shè)備或落地網(wǎng)關(guān)等設(shè)備。網(wǎng)絡(luò)設(shè)備為實現(xiàn)數(shù)據(jù)包重組功能的裝置。如圖8所示,圖8為本發(fā)明實施例提供的實現(xiàn)數(shù)據(jù)包重組的裝置800的結(jié)構(gòu)示意圖,本實施例中數(shù)據(jù)包重組為將冗余數(shù)據(jù)包重組為非冗余數(shù)據(jù)包,該裝置800可以包括:
[0157]創(chuàng)建單元801,用于在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道。其中,VOIP終端為通過VOIP客戶端來進行該通話的終端。
[0158]接收單元802,用于接收VOIP終端通過創(chuàng)建單元801創(chuàng)建的媒體通道向非VOIP終端發(fā)送的經(jīng)過冗余處理的RTP數(shù)據(jù)包。
[0159]解析單元803,用于獲取接收單元802接收到的RTP數(shù)據(jù)包中的媒體幀以及該媒體幀的序號,提供給重組單元804。
[0160]重組單元804,用于根據(jù)歷史記錄的所述媒體通道中已發(fā)送過的媒體幀的序號,從獲取的媒體幀中區(qū)分出已發(fā)送過的媒體幀和未發(fā)送過的媒體幀;將未發(fā)送過的媒體幀分別打包為獨立的RTP數(shù)據(jù)包,并通過發(fā)送單元805將打包后的RTP數(shù)據(jù)包發(fā)送給非VOIP終端,記錄下發(fā)送的媒體幀的序號。
[0161]發(fā)送單元805,用于將重組單元804打包后的RTP數(shù)據(jù)包發(fā)送給非VOIP終端。
[0162]其中,創(chuàng)建單元801在創(chuàng)建媒體通道時可以分別建立從VOIP終端到非VOIP終端方向的媒體通道和從非VOIP終端到VOIP終端方向的媒體通道。圖8所示實施例為了方便對VOIP終端向非VOIP終端發(fā)送數(shù)據(jù)包進行說明,因此,以建立VOIP終端到非VOIP終端方向的媒體通道為例進行說明。
[0163]接收單元802接收到RTP數(shù)據(jù)包之后,將該RTP數(shù)據(jù)包發(fā)送到解析單元803進行解析。解析單元803解析出RTP數(shù)據(jù)包中攜帶的媒體幀以及該媒體幀的序號,然后提供給重組單元804進行數(shù)據(jù)包重組。
[0164]其中,重組單元804進行數(shù)據(jù)包重組即是將RTP數(shù)據(jù)包從冗余數(shù)據(jù)包重組為非冗余數(shù)據(jù)包。具體的,重組單元804接收到解析單元803解析出的媒體幀和媒體幀的序號后,將解析出的媒體幀的序號與歷史記錄的該媒體通道中已發(fā)送過的媒體幀的序號進行匹配,若匹配到相同的序號,貝1J表明該媒體巾貞已發(fā)送過;若未匹配到相同的序號,貝1J表明該媒體中貞沒有發(fā)送過。重組單元804將已發(fā)送過的媒體幀丟棄,將未發(fā)送過的媒體幀分別打包為獨立的RTP數(shù)據(jù)包,并將打包后的RTP數(shù)據(jù)包通過發(fā)送單元805發(fā)送給非VOIP終端,記錄下發(fā)送的媒體幀的序號。
[0165]本發(fā)明實施例中,創(chuàng)建單元801在創(chuàng)建媒體通道時,還可以創(chuàng)建與該媒體通道對應(yīng)的列表用于記錄已發(fā)送過的媒體幀的序號。重組單元804可以從該列表中獲取歷史上記錄的該媒體通道中已發(fā)送過的媒體幀的序號。在發(fā)送媒體幀時,重組單元804在列表中記錄下發(fā)送的媒體幀的序號,以便下次接收到RTP數(shù)據(jù)包時對RTP數(shù)據(jù)包中的冗余媒體幀進行區(qū)分。本發(fā)明實施例中的列表并不特指表結(jié)構(gòu),還可以包括隊列或堆棧等數(shù)據(jù)結(jié)構(gòu)的線性表,可以通過數(shù)組或鏈表來實現(xiàn)。
[0166]為了提高非VOIP終端的解析效率,發(fā)送單元805在發(fā)送RTP數(shù)據(jù)包時可以將打包后的RTP數(shù)據(jù)包按照該RTP數(shù)據(jù)包中的媒體幀的序號由低到高順序發(fā)送給非VOIP終端。
[0167]在本發(fā)明另一實施例中,如圖9所示,為了節(jié)約資源,裝置800還可以進一步包括:刪除單元806,用于根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將列表中已過期的媒體幀的序號刪除。其中,刪除單元806可以通過算法實時確定過期媒體幀的序號。舉例說明,假設(shè)該算法為M-N+1,其中,N為用于記錄已發(fā)送媒體幀的序號的列表長度,M為列表中記錄的最新的媒體幀的序號,則刪除單元806將序號小于或等于M-N+1的媒體幀確定為過期媒體幀。
[0168]需要說明的是,用于存儲已發(fā)送的媒體幀的序號的列表可以位于裝置800內(nèi)部,也可以裝置800外部。當(dāng)該列表位于裝置800內(nèi)部時,如圖9所示,裝置800還可包括:存儲單元807,用于存儲創(chuàng)建單元801創(chuàng)建的列表。
[0169]本發(fā)明實施例在易發(fā)生網(wǎng)絡(luò)丟包的VOIP終端側(cè)采用冗余技術(shù)對媒體幀進行傳輸,即采用在數(shù)據(jù)包中攜帶冗余的媒體幀的方式進行傳輸,減少了在互聯(lián)網(wǎng)中的丟包,并由網(wǎng)絡(luò)設(shè)備將經(jīng)過冗余處理的數(shù)據(jù)包轉(zhuǎn)換為非冗余的數(shù)據(jù)包,使非VOIP終端可以正確解碼。從而在非VOIP終端不支持冗余技術(shù)的情況下,提高了話音質(zhì)量。而且,網(wǎng)絡(luò)設(shè)備在將經(jīng)過冗余處理的數(shù)據(jù)包轉(zhuǎn)換為非冗余的數(shù)據(jù)包時,無需將所有媒體幀緩存下來再轉(zhuǎn)換,而是通過記錄下已發(fā)送的媒體幀的序號,對每個數(shù)據(jù)包進行實時判斷并轉(zhuǎn)換,實現(xiàn)了即到即轉(zhuǎn)。因此,本發(fā)明實施例提供的方案在轉(zhuǎn)換時增加的延時也非常小。
[0170]圖8和圖9所示實施例中的各單元的功能的具體實現(xiàn)可參考方法實施例部分,這里不再贅述。
[0171]另外,網(wǎng)絡(luò)設(shè)備作為實現(xiàn)數(shù)據(jù)包重組功能的裝置,也可以實現(xiàn)將非冗余數(shù)據(jù)包重組為冗余數(shù)據(jù)包,如圖10所示,圖10為本發(fā)明實施例提供的實現(xiàn)數(shù)據(jù)包重組的裝置10的結(jié)構(gòu)示意圖,本實施例中數(shù)據(jù)包重組為將非冗余數(shù)據(jù)包重組為冗余數(shù)據(jù)包,該裝置10可以包括:
[0172]創(chuàng)建單元1001,用于在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道。其中,VOIP終端為通過VOIP客戶端來進行通話的終端。
[0173]接收單元1002,接收非VOIP終端通過創(chuàng)建單元1001創(chuàng)建的媒體通道向VOIP終端發(fā)送的未經(jīng)冗余處理的RTP數(shù)據(jù)包。
[0174]解析單元1003,用于獲取接收單元1002接收到的RTP數(shù)據(jù)包中的媒體幀和該媒體幀的序號,提供給重組單元1004。
[0175]重組單元1004,用于根據(jù)解析單元1003解析出的媒體幀的序號從緩存區(qū)中讀取該媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀,其中,該緩存區(qū)與所述媒體通道對應(yīng)的,并保存有歷史接收到的媒體幀;將從解析單元1003中獲取的媒體幀與從緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包,通過發(fā)送單元1005發(fā)送給所述非VOIP終端,并在緩存區(qū)中緩存從解析單元1003中獲取的媒體幀。
[0176]發(fā)送單元1005,用于將重組單元1004打包后的RTP數(shù)據(jù)包發(fā)送給所述VOIP客戶端。
[0177]其中,創(chuàng)建單元1001在建立媒體通道時可以分別建立從VOIP終端到非VOIP終端方向的媒體通道和從非VOIP終端到VOIP終端方向的媒體通道。圖10所示實施例為了方便對非VOIP終端向VOIP終端發(fā)送數(shù)據(jù)包進行說明,因此,是以建立非VOIP終端到VOIP終端方向的媒體通道為例進行說明的。
[0178]創(chuàng)建單元1001在建立媒體通道時,還可以創(chuàng)建與該媒體通道對應(yīng)的緩存區(qū)用于緩存待進行冗余處理的媒體幀。
[0179]本發(fā)明實施例中,網(wǎng)絡(luò)設(shè)備將非VOIP終端發(fā)送的非冗余的數(shù)據(jù)包轉(zhuǎn)換為經(jīng)過冗余處理的數(shù)據(jù)包,然后通過互聯(lián)網(wǎng)發(fā)送給VOIP終端,使得在非VOIP終端不支持冗余技術(shù)的情況下,仍可采用冗余技術(shù)來提高話音質(zhì)量。
[0180]下面對重組單元1004的具體結(jié)構(gòu)進行進一步的說明。如圖11所示,在本發(fā)明另一實施例所示的進行數(shù)據(jù)包重組的裝置10的結(jié)構(gòu)示意圖11中,重組單元1004具體可包括:
[0181]確定子單元10041,用于根據(jù)從解析單元1003獲取的媒體幀的序號和預(yù)先設(shè)置的冗余倍數(shù)確定該媒體幀的序號之前預(yù)設(shè)數(shù)量的的媒體幀的序號。
[0182]讀取子單元10042,用于以確定子單元10041確定出的預(yù)設(shè)數(shù)量的媒體幀的序號從緩存區(qū)中讀取對應(yīng)的媒體幀;
[0183]打包子單元10043,用于將從解析單元1003獲取的媒體幀與從緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包;
[0184]緩存子單元10044,用于在緩存區(qū)中緩存從解析單元1003獲取的媒體幀。
[0185]其中,讀取子單元10042在在從緩存區(qū)中讀取對應(yīng)的媒體幀的過程中可以忽略讀取失敗的媒體幀。
[0186]為了提高從緩存區(qū)讀取需要進行冗余處理的媒體幀的效率,在本發(fā)明的一個實施例中,創(chuàng)建單元1001還用于創(chuàng)建與緩存區(qū)對應(yīng)的列表用于記錄該緩存區(qū)中緩存的媒體幀的序號。其中,緩存區(qū)中緩存的媒體幀的位置與該列表中記錄的媒體幀的序號的位置相對應(yīng)。在此情況下,讀取子單元10042具體用于在列表中查找確定出的預(yù)設(shè)數(shù)量的媒體幀的序號,確定查找到的序號的位置,并從緩存區(qū)的對應(yīng)位置讀取該序號對應(yīng)的媒體幀。其中,讀取子單元10042在查找過程中可以忽略未查找到的序號。
[0187]由于數(shù)據(jù)包到達網(wǎng)絡(luò)設(shè)備的時間有先后,有可能會存在序號在前的媒體幀后到達裝置10的情況,因此,讀取子單元10042在緩存區(qū)中無法找到該媒體幀,導(dǎo)致讀取失敗。在此情況下,讀取子單元10042可以繼續(xù)執(zhí)行后續(xù)操作,忽略讀取失敗的媒體幀。
[0188]上述實施例中,查找到的序號的位置是指該序號相對列表起始處的偏移位置。緩存區(qū)中緩存的媒體幀的位置與列表中記錄的該媒體幀的序號的位置相對應(yīng)是指該媒體幀在緩存區(qū)中相對該緩存區(qū)起始位置的偏移位置與該媒體幀的序號在列表中的偏移位置相同。
[0189]在本發(fā)明另一實施例中,裝置10還可以查找列表中已過期的媒體幀的序號以及緩存區(qū)中已過期的媒體幀,將已過期的媒體幀序號和媒體幀刪除,從而節(jié)約網(wǎng)絡(luò)設(shè)備的存儲資源。因此,如圖11所示,裝置10還可以包括:刪除單元1006,用于根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將列表中已過期的媒體幀的序號以及緩存區(qū)中已過期的媒體幀刪除。
[0190]刪除單元1006可以通過算法實時確定過期媒體幀的序號。舉例說明,假設(shè)該算法為M-N+1,其中,N為用于記錄緩存區(qū)中緩存的媒體幀的序號的列表的長度,M為列表中記錄的最新的媒體幀的序號,則刪除單元1006將序號小于或等于M-N+1的媒體幀確定為過期媒體幀。刪除單元1006確定出過期媒體幀的序號后,從列表中查找過期媒體幀的序號,并根據(jù)查找到的序號找到緩存區(qū)中對應(yīng)的媒體幀,刪除列表中的該序號和緩存區(qū)中對應(yīng)的媒體幀。
[0191]需要說明的是,用于存儲媒體幀的緩存區(qū)和記錄已發(fā)送的媒體幀的序號的列表可以位于裝置10內(nèi)部,也可以裝置800外部。當(dāng)該緩存區(qū)和列表位于裝置10內(nèi)部時,如圖11所示,裝置10還可包括:存儲單元1007。創(chuàng)建單元1001將緩存區(qū)和列表創(chuàng)建在存儲單元1007 中。
[0192]圖10和圖11所示實施例中的各單元的功能的具體實現(xiàn)可參考方法實施例部分,這里不再贅述。
[0193]需要說明的是,本發(fā)明實施例中的網(wǎng)絡(luò)設(shè)備可基于計算機系統(tǒng)的硬件結(jié)構(gòu)來實現(xiàn),如圖12所述,網(wǎng)絡(luò)設(shè)備的硬件結(jié)構(gòu)可以包括存儲器1201、通信接口 1202,處理器1203和總線1204。
[0194]其中,處理器1203、存儲器1201和通信接口 1202通過總線1204通信連接。
[0195]存儲器1201可以是只讀存儲器(Read Only Memory, ROM),靜態(tài)存儲設(shè)備,動態(tài)存儲設(shè)備或者隨機存取存儲器(Random Access Memory, RAM)。存儲器1201可以存儲操作系統(tǒng)和其他應(yīng)用程序的指令以及應(yīng)用數(shù)據(jù)。存儲器1201中存儲的指令由處理器1203來運行執(zhí)行。
[0196]通信接口 1202用來實現(xiàn)網(wǎng)絡(luò)設(shè)備與其他設(shè)備或通信網(wǎng)絡(luò)(例如但不限于PLMN/PSTN,互聯(lián)網(wǎng)等)之間的通信。
[0197]處理器1203可以采用通用的中央處理器(Central Processing Unit, CPU),微處理器,應(yīng)用專用集成電路(Applicat1n Specific Integrated Circuit, ASIC),或者一個或多個集成電路,用于執(zhí)行相關(guān)程序。
[0198]本發(fā)明實施例中,處理器1203用于執(zhí)行存儲器1201中的指令。
[0199]總線1204可包括一通路,在各個部件(例如處理器1203、存儲器1201和通信接口1202)之間傳送信息。
[0200]其中,當(dāng)網(wǎng)絡(luò)設(shè)備用在將冗余數(shù)據(jù)包重組為非冗余數(shù)據(jù)包的實施例中時,圖12所示的網(wǎng)絡(luò)設(shè)備中的處理器1203、存儲器1201和通信接口 1202的具體實現(xiàn)如下:
[0201]通信接口 1202,用于在處理器1203的控制下在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道;接收VOIP終端通過該媒體通道向非VOIP終端發(fā)送的經(jīng)過冗余處理的RTP數(shù)據(jù)包。
[0202]處理器1203,用于通過通信接口 1202建立VOIP終端和非VOIP終端間的媒體通道;獲取通信接口 1202接收到的RTP數(shù)據(jù)包中的媒體幀以及該媒體幀的序號;根據(jù)歷史上記錄的所述媒體通道中已發(fā)送過的媒體幀的序號,從獲取的媒體幀中區(qū)分出已發(fā)送過的媒體幀和未發(fā)送過的媒體幀;將未發(fā)送過的媒體幀分別打包為獨立的RTP數(shù)據(jù)包,并通過通信接口 1202將打包后的RTP數(shù)據(jù)包發(fā)送給非VOIP終端,以及在存儲器1201中記錄下發(fā)送的媒體幀的序號。
[0203]通信接口 1202,還用于將處理器1203打包的RTP數(shù)據(jù)包發(fā)送給非VOIP終端。
[0204]其中,通信接口 1202接收到RTP數(shù)據(jù)包之后,將該RTP數(shù)據(jù)包發(fā)送到處理器1203進行解析。處理器1203解析出RTP數(shù)據(jù)包中攜帶的媒體幀以及該媒體幀的序號,然后進行數(shù)據(jù)包重組。
[0205]處理器1203進行數(shù)據(jù)包重組即是將RTP數(shù)據(jù)包從冗余數(shù)據(jù)包重組為非冗余數(shù)據(jù)包。具體的,處理器1203解析出的媒體幀和媒體幀的序號后,將解析出的媒體幀的序號與歷史記錄的該媒體通道中已發(fā)送過的媒體幀的序號進行匹配,若匹配到相同的序號,則表明該媒體幀已發(fā)送過;若未匹配到相同的序號,則表明該媒體幀沒有發(fā)送過。處理器1203將已發(fā)送過的媒體幀丟棄,將未發(fā)送過的媒體幀分別打包為獨立的RTP數(shù)據(jù)包,并將打包后的RTP數(shù)據(jù)包通過通信接口 1202發(fā)送給非VOIP終端,以及在存儲器1201中記錄下發(fā)送的媒體幀的序號。
[0206]處理器1203可以在存儲器1201中創(chuàng)建與該媒體通道對應(yīng)的列表用于記錄已發(fā)送過的媒體幀的序號。處理器1203可以從該列表中獲取歷史上記錄的該媒體通道中已發(fā)送過的媒體幀的序號。而且,在發(fā)送媒體幀時,處理器1203可以在列表中記錄下發(fā)送的媒體幀的序號,以便下次接收到RTP數(shù)據(jù)包時對RTP數(shù)據(jù)包中的冗余媒體幀進行區(qū)分。本發(fā)明實施例中的列表并不特指表結(jié)構(gòu),還可以包括隊列或堆棧等數(shù)據(jù)結(jié)構(gòu)的線性表,可以通過數(shù)組或鏈表來實現(xiàn)。
[0207]存儲器1201用于存儲處理器1203創(chuàng)建的列表。
[0208]進一步的,為了節(jié)約資源,處理器1203還可以根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將列表中已過期的媒體幀的序號刪除。
[0209]上述實施例是網(wǎng)絡(luò)設(shè)備將冗余數(shù)據(jù)包重組為非冗余數(shù)據(jù)包的實施例。在本發(fā)明另一實施例中,網(wǎng)絡(luò)設(shè)備還可以實現(xiàn)將非冗余數(shù)據(jù)包重組為冗余數(shù)據(jù)包,本實施例中,圖12所示的網(wǎng)絡(luò)設(shè)備中的處理器1203、存儲器1201和通信接口 1202的具體實現(xiàn)如下:
[0210]通信接口 1202,用于在處理器1203的控制下在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道;接收非VOIP終端通過該媒體通道向VOIP終端發(fā)送的未經(jīng)冗余處理的RTP數(shù)據(jù)包。
[0211]處理器1203,用于通過通信接口 1202建立VOIP終端和非VOIP終端間的媒體通道;用于獲取通信接口 1202接收到的RTP數(shù)據(jù)包中的媒體幀和該媒體幀的序號;根據(jù)獲取的媒體幀的序號從緩存區(qū)中讀取該媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀,其中,該緩存區(qū)與所述媒體通道對應(yīng),并保存有歷史接收到的媒體幀;將獲取的媒體幀與從緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包,通過通信接口 1202發(fā)送給所述非VOIP終端,并在緩存區(qū)中緩存從通信接口 1202獲取RTP數(shù)據(jù)包中的媒體幀。
[0212]通信接口 1202,還用于將處理器1203打包的RTP數(shù)據(jù)包發(fā)送給VOIP終端。
[0213]其中,處理器1203根據(jù)獲取的媒體幀的序號從緩存區(qū)中讀取該媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀的具體實現(xiàn)如下:
[0214]處理器1203根據(jù)獲取的媒體幀的序號和預(yù)先設(shè)置的冗余倍數(shù)確定該媒體幀的序號之前預(yù)設(shè)數(shù)量的的媒體幀的序號;以確定出的預(yù)設(shè)數(shù)量的媒體幀的序號從緩存區(qū)中讀取對應(yīng)的媒體幀;將獲取的媒體幀與從緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包;并在緩存區(qū)中緩存獲取的媒體幀。
[0215]其中,處理器1203在從緩存區(qū)中讀取對應(yīng)的媒體幀的過程中可以忽略讀取失敗的媒體幀。
[0216]為了提高從緩存區(qū)讀取需要進行冗余處理的媒體幀的效率,在本發(fā)明的一個實施例中,處理器1203還用于創(chuàng)建與緩存區(qū)對應(yīng)的列表用于記錄該緩存區(qū)中緩存的媒體幀的序號。其中,緩存區(qū)中緩存的媒體幀的位置與該列表中記錄的媒體幀的序號的位置相對應(yīng)。在此情況下,處理器1203以確定出的預(yù)設(shè)數(shù)量的媒體幀的序號從緩存區(qū)中讀取對應(yīng)的媒體幀的具體實現(xiàn)如下:處理器1203可在列表中查找確定出的預(yù)設(shè)數(shù)量的媒體幀的序號,確定查找到的序號的位置,并從緩存區(qū)的對應(yīng)位置讀取該序號對應(yīng)的媒體幀。其中,處理器1203在查找過程中可以忽略未查找到的序號。
[0217]由于數(shù)據(jù)包到達網(wǎng)絡(luò)設(shè)備的時間有先后,有可能會存在序號在前的媒體幀后到達的情況,因此,處理器1203在緩存區(qū)中無法找到該媒體幀,導(dǎo)致讀取失敗。在此情況下,處理器1203可以繼續(xù)執(zhí)行后續(xù)操作,忽略讀取失敗的媒體幀。
[0218]上述實施例中,查找到的序號的位置是指該序號相對列表起始處的偏移位置。緩存區(qū)中緩存的媒體幀的位置與列表中記錄的該媒體幀的序號的位置相對應(yīng)是指該媒體幀在緩存區(qū)中相對該緩存區(qū)起始位置的偏移位置與該媒體幀的序號在列表中的偏移位置相同。
[0219]在本發(fā)明另一實施例中,為了節(jié)約存儲資源,處理器1203還可以根據(jù)列表的長度和列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將列表中已過期的媒體幀的序號以及緩存區(qū)中已過期的媒體幀刪除。
[0220]需要說明的是,處理器1203創(chuàng)建的列表以及緩存區(qū)都可位于存儲器1201中。
[0221]通過以上的實施例的描述,本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,包括如上述方法實施例的步驟,所述的存儲介質(zhì),如:R0M/RAM、磁碟、光盤等。
[0222]以上所述,僅為本發(fā)明的具體實施例,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以權(quán)利要求的保護范圍為準(zhǔn)。
【權(quán)利要求】
1.一種數(shù)據(jù)包重組的方法,其特征在于,包括: 網(wǎng)絡(luò)設(shè)備在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道; 接收所述VOIP終端通過所述媒體通道向所述非VOIP終端發(fā)送的經(jīng)過冗余處理的RTP數(shù)據(jù)包; 獲取所述RTP數(shù)據(jù)包中的媒體幀以及所述媒體幀的序號; 根據(jù)歷史上記錄的所述媒體通道中已發(fā)送過的媒體幀的序號,從獲取的媒體幀中區(qū)分出已發(fā)送過的媒體幀和未發(fā)送過的媒體幀; 將未發(fā)送過的媒體幀分別打包為RTP數(shù)據(jù)包,并將打包后的RTP數(shù)據(jù)包發(fā)送給所述非VOIP終端,記錄下所述發(fā)送的媒體幀的序號。
2.如權(quán)利要求1所述的方法,其特征在于,所述將所述打包后的RTP數(shù)據(jù)包發(fā)送給所述非VOIP終端具體包括:將所述打包后的RTP數(shù)據(jù)包按照所述RTP數(shù)據(jù)包中的媒體幀的序號由低到高順序發(fā)送給所述非VOIP終端。
3.如權(quán)利要求1或2任一項所述的方法,其特征在于,所述方法還包括:創(chuàng)建與所述媒體通道對應(yīng)的列表用于記錄所述媒體通道中已發(fā)送過的媒體幀的序號; 所述記錄下所述發(fā)送的媒體幀的序號具體包括:將所述發(fā)送的媒體幀的序號記錄在所述列表中。
4.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括: 根據(jù)所述列表的長度和所述列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將所述列表中已過期的媒體幀的序號刪除。
5.一種數(shù)據(jù)包重組的方法,其特征在于,包括: 網(wǎng)絡(luò)設(shè)備在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道; 接收所述非VOIP終端通過所述媒體通道向所述VOIP終端發(fā)送的未經(jīng)冗余處理的RTP數(shù)據(jù)包; 獲取所述RTP數(shù)據(jù)包中的媒體幀以及所述媒體幀的序號,并從緩存區(qū)中讀取所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀;所述緩存區(qū)與所述媒體通道對應(yīng),并保存有歷史接收到的媒體幀; 將從所述RTP數(shù)據(jù)包中獲取的媒體幀與從所述緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包,并將打包后的RTP數(shù)據(jù)包發(fā)送給所述VOIP終端; 在所述緩存區(qū)中緩存從所述RTP數(shù)據(jù)包中獲取的媒體幀。
6.如權(quán)利要求5所述的方法,其特征在于,所述從所述緩存區(qū)中讀取所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀包括: 根據(jù)所述媒體幀的序號和預(yù)先設(shè)置的冗余倍數(shù)確定所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀的序號; 以確定出的預(yù)設(shè)數(shù)量的媒體幀的序號從所述緩存區(qū)中讀取對應(yīng)的媒體幀。
7.如權(quán)利要求6所述的方法,其特征在于,所述方法還包括:在從所述緩存區(qū)中讀取對應(yīng)的媒體幀的過程中忽略讀取失敗的媒體幀。
8.如權(quán)利要求7所述的方法,其特征在于,所述方法還包括: 創(chuàng)建與所述緩存區(qū)對應(yīng)的列表用于記錄所述緩存區(qū)中緩存的媒體幀的序號,所述緩存區(qū)中緩存的媒體幀的位置與所述列表中記錄的所述媒體幀的序號的位置相對應(yīng); 所述以確定出的預(yù)定數(shù)量的媒體幀的序號從所述緩存區(qū)中讀取對應(yīng)的媒體幀具體包括: 在所述列表中查找所述確定出的預(yù)定數(shù)量的媒體幀的序號,確定查找到的所述序號的位置,并從緩存區(qū)的對應(yīng)位置讀取所述序號對應(yīng)的媒體幀。
9.如權(quán)利要求8所述的方法,其特征在于,所述方法還包括: 根據(jù)所述列表的長度和所述列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將所述列表中已過期的媒體幀的序號刪除,并對應(yīng)刪除所述緩存區(qū)中已過期的媒體幀。
10.一種實現(xiàn)數(shù)據(jù)包重組的裝置,其特征在于,包括: 創(chuàng)建單元,用于在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道; 接收單元,用于接收所述VOIP終端通過所述媒體通道向所述非VOIP終端發(fā)送的經(jīng)過冗余處理的RTP數(shù)據(jù)包; 解析單元,用于獲取所述接收單元接收到的RTP數(shù)據(jù)包中的媒體幀以及所述媒體幀的序號,并提供給重組單元; 所述重組單元,用于根據(jù)歷史上記錄的所述媒體通道中已發(fā)送過的媒體幀的序號,從獲取的媒體幀中區(qū)分出已發(fā)送過的媒體幀和未發(fā)送過的媒體幀;將未發(fā)送過的媒體幀分別打包為RTP數(shù)據(jù)包,通過發(fā)送單元發(fā)送給所述非VOIP終端,并記錄下所述發(fā)送的媒體幀的序號; 所述發(fā)送單元,用于將打包后的所述RTP數(shù)據(jù)包發(fā)送給所述非VOIP終端。
11.如權(quán)利要求10所述的裝置,其特征在于,所述發(fā)送單元具體用于將所述打包后的RTP數(shù)據(jù)包按照所述RTP數(shù)據(jù)包中的媒體幀的序號由低到高順序發(fā)送給所述非VOIP終端。
12.如權(quán)利要求10或11所述的裝置,其特征在于,所述創(chuàng)建單元還用于在創(chuàng)建與所述媒體通道對應(yīng)的列表用于記錄所述媒體通道中已發(fā)送過的媒體幀的序號; 所述重組單元在記錄所述發(fā)送的媒體幀的序號時,將所述發(fā)送的媒體幀的序號在所述列表中。
13.如權(quán)利要求10-12任一項所述的裝置,其特征在于,所述裝置還包括: 刪除單元,用于根據(jù)所述列表的長度和所述列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將所述列表中已過期的媒體幀的序號刪除。
14.一種實現(xiàn)數(shù)據(jù)包重組的裝置,其特征在于,包括: 創(chuàng)建單元,用于在VOIP終端和非VOIP終端間建立用于傳輸RTP數(shù)據(jù)包的媒體通道; 接收單元,接收所述非VOIP終端通過所述媒體通道向所述VOIP終端發(fā)送的未經(jīng)冗余處理的RTP數(shù)據(jù)包; 解析單元,用于獲取所述接收單元接收到的RTP數(shù)據(jù)包中的媒體幀以及所述媒體幀的序號,并提供給重組單元; 所述重組單元,用于根據(jù)從所述解析單元獲取的媒體幀的序號從緩存區(qū)中讀取所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀,所述緩存區(qū)與所述媒體通道對應(yīng),并保存有歷史接收到的媒體幀;將從所述解析單元獲取的媒體幀與從所述緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包,通過發(fā)送單元發(fā)送給所述非VOIP終端,并在緩存區(qū)中緩存從所述解析單元獲取的媒體幀; 所述發(fā)送單元,用于將所述重組單元打包后的RTP數(shù)據(jù)包發(fā)送給所述VOIP客戶端。
15.如權(quán)利要求14所述的裝置,其特征在于,所述重組單元包括: 確定子單元,用于根據(jù)所述解析單元獲取的媒體幀的序號和預(yù)先設(shè)置的冗余倍數(shù)確定所述媒體幀的序號之前預(yù)設(shè)數(shù)量的媒體幀的序號; 讀取子單元,用于以所述確定子單元確定出的預(yù)設(shè)數(shù)量的媒體幀的序號從所述緩存區(qū)中讀取對應(yīng)的媒體幀; 打包子單元,用于將從所述解析單元獲取的媒體幀與從所述緩存區(qū)中讀取的媒體幀打包為一個RTP數(shù)據(jù)包; 緩存子單元,用于在緩存區(qū)中緩存從所述解析單元中獲取的媒體幀。
16.如權(quán)利要求15所述的裝置,其特征在于,所述讀取子單元還用于在從所述緩存區(qū)中讀取對應(yīng)的媒體幀的過程中忽略讀取失敗的媒體幀。
17.如權(quán)利要求16所述的裝置,其特征在于,所述創(chuàng)建單元還用于創(chuàng)建與所述緩存區(qū)對應(yīng)的列表用于記錄所述緩存區(qū)中緩存的媒體幀的序號,所述緩存區(qū)中緩存的媒體幀的位置與所述列表中記錄的所述媒體幀的序號的位置相對應(yīng); 所述讀取子單元具體用于在所述列表中查找所述確定子單元確定出的預(yù)定數(shù)量的媒體幀的序號,確定查找到的所述序號的位置,并從緩存區(qū)的對應(yīng)位置讀取所述序號對應(yīng)的媒體幀,其中,在所述查找過程中忽略未查找到的序號。
18.如權(quán)利要求17所述的裝置,其特征在于,所述裝置還包括: 刪除單元,用于根據(jù)所述列表的長度和所述列表中記錄的最新的媒體幀的序號確定過期的媒體幀的序號,將所述列表中已過期的媒體幀的序號刪除,并對應(yīng)刪除所述緩存區(qū)中已過期的媒體幀。
【文檔編號】H04L29/06GK104283863SQ201310294052
【公開日】2015年1月14日 申請日期:2013年7月12日 優(yōu)先權(quán)日:2013年7月12日
【發(fā)明者】周文 申請人:華為技術(shù)有限公司