專利名稱:一種VoIP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)控的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)控的方法 及裝置。
技術(shù)背景VoIP (IP電話)是將語(yǔ)音信號(hào)在公眾電話網(wǎng)和因特網(wǎng)之間進(jìn)行轉(zhuǎn)換,IP 技術(shù)允許多個(gè)用戶共用同 一帶寬資源,改變了傳統(tǒng)電話由單個(gè)用戶獨(dú)占 一個(gè) 信道的方式,節(jié)省了用戶使用單獨(dú)信道的費(fèi)用。由于IP電話的經(jīng)濟(jì)實(shí)惠,使 得近幾年IP電話網(wǎng)絡(luò)得到迅速發(fā)展。VolP是建立在IP (網(wǎng)絡(luò)之間互連的協(xié)議)技術(shù)上的分組化、數(shù)字化傳輸 技術(shù),其基本原理是通過語(yǔ)音壓縮算法對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行壓縮編碼處理,然 后把按IP等相關(guān)協(xié)議將語(yǔ)音數(shù)據(jù)進(jìn)行打包,并經(jīng)過IP網(wǎng)絡(luò)把數(shù)據(jù)包傳輸?shù)浇?收地,再把數(shù)據(jù)包串起來(lái),經(jīng)過解碼解壓處理后,恢復(fù)成原來(lái)的語(yǔ)音信號(hào), 從而達(dá)到通過IP網(wǎng)絡(luò)傳送語(yǔ)音數(shù)據(jù)的目的。目前,大多數(shù)的VolP語(yǔ)音監(jiān)聽系統(tǒng)包括數(shù)據(jù)處理設(shè)備,語(yǔ)音記錄設(shè)備, 音頻轉(zhuǎn)換設(shè)備,數(shù)據(jù)庫(kù)設(shè)備和存儲(chǔ)設(shè)備。數(shù)據(jù)處理設(shè)備和語(yǔ)音記錄設(shè)備是雙 網(wǎng)卡主機(jī), 一個(gè)網(wǎng)卡接入被監(jiān)聽的網(wǎng)絡(luò),另一個(gè)網(wǎng)卡與系統(tǒng)其它主機(jī)通信; 數(shù)據(jù)處理設(shè)備根據(jù)過濾規(guī)則從被監(jiān)聽的網(wǎng)絡(luò)采集信令數(shù)據(jù),提取并解析信令 數(shù)據(jù),從中獲取用戶名或用戶ID (帳號(hào))、通信雙方的IP和端口,然后存儲(chǔ) 到存儲(chǔ)設(shè)備中,并通知語(yǔ)音記錄設(shè)備進(jìn)行記錄;語(yǔ)音記錄設(shè)備接收并解析數(shù) 據(jù)處理設(shè)備的通知,將每個(gè)通話的語(yǔ)音流以原始的RTP (實(shí)時(shí)傳輸協(xié)議)包 的形式存儲(chǔ)到存儲(chǔ)設(shè)備中,在每個(gè)通話結(jié)束的時(shí)候通知音頻轉(zhuǎn)換設(shè)備進(jìn)行相 關(guān)通話的音頻轉(zhuǎn)換,將原始的RTP包文件轉(zhuǎn)換后的WAV才各式(一種音頻文件 格式)的語(yǔ)音文件存儲(chǔ)到存儲(chǔ)設(shè)備中。由上述可知,現(xiàn)有技術(shù)存在至少以下問題現(xiàn)有的VolP語(yǔ)音監(jiān)控系統(tǒng)只能在通話結(jié)束后,通過對(duì)語(yǔ)音數(shù)據(jù)的還原來(lái) 實(shí)現(xiàn)監(jiān)聽VolP語(yǔ)音數(shù)據(jù),而不能實(shí)時(shí)監(jiān)聽通信雙方的語(yǔ)音通話內(nèi)容。發(fā)明內(nèi)容本發(fā)明實(shí)施例的提供一種VolP語(yǔ)音實(shí)時(shí)監(jiān)聽的方法及裝置,使其能夠?qū)?IP電話進(jìn)行實(shí)時(shí)語(yǔ)音監(jiān)聽。本發(fā)明實(shí)施例提供一種VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法,包括在接收緩存中保存接收到的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包;所述接收緩存中存儲(chǔ)了符合預(yù)定數(shù)量的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包后,將所 述接收緩存置為播放緩存,并播放所述語(yǔ)音數(shù)據(jù);所述播放緩存中的語(yǔ)音數(shù)據(jù)播放完畢后,將所述播放緩存設(shè)置為所述接 收緩存。本發(fā)明實(shí)施例還提供一種VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的裝置,包括 接收緩存,用于保存接收到的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包; 緩存轉(zhuǎn)換單元,用于在所述接收緩存中存儲(chǔ)了符合預(yù)定數(shù)量的包含所述 語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包后,將所述接收緩存置為播放緩存;以及用于在所述播放 緩存中的所述語(yǔ)音數(shù)據(jù)播放完畢后,將所述播放緩存設(shè)置為所述接收緩存; 語(yǔ)音播放單元,用于播放所述播放緩存中的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包。 由上述技術(shù)方案可看出,在本發(fā)明實(shí)施例中通過設(shè)置接收緩存和播放緩 存,若接收緩存存儲(chǔ)滿包含語(yǔ)音數(shù)據(jù)的RTP包時(shí),對(duì)RTP包進(jìn)行排序并提 取RTP包中的語(yǔ)音數(shù)據(jù),將接收緩存置為播放緩存,播放RTP包中的語(yǔ)音 數(shù)據(jù),而將播放緩存置為接收緩存;若語(yǔ)音數(shù)據(jù)播放完成后,將播放緩存置 為接收緩存,對(duì)RTP包進(jìn)行排序并提取RTP包中語(yǔ)音數(shù)據(jù),將接收緩存置 為播放緩存,通過接收緩存和播放緩存的交替接收和播放語(yǔ)音數(shù)據(jù),實(shí)現(xiàn)對(duì)VoIP語(yǔ)音的實(shí)時(shí)監(jiān)聽,使用戶在監(jiān)聽的過程中能及時(shí)發(fā)現(xiàn)問題。
圖1為本發(fā)明實(shí)施例的VolP語(yǔ)音實(shí)時(shí)監(jiān)聽方法的流程圖;圖2為本發(fā)明實(shí)施例接收緩存存儲(chǔ)接收到的包含語(yǔ)音數(shù)據(jù)的RTP包的流程圖;圖3為本發(fā)明實(shí)施例SIP協(xié)議解析的流程圖; 圖4為本發(fā)明實(shí)施例語(yǔ)音數(shù)據(jù)播放流程圖; 圖5為本發(fā)明實(shí)施例雙緩存接收播放的流程圖; 圖6為本發(fā)明實(shí)施例RTP包排序流程圖; 圖7為本發(fā)明實(shí)施例VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽系統(tǒng)示意圖; 圖8為本發(fā)明實(shí)施例VolP語(yǔ)音實(shí)時(shí)監(jiān)聽裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
在本發(fā)明實(shí)施例中,首先解析接收的網(wǎng)絡(luò)數(shù)據(jù)會(huì)話啟動(dòng)協(xié)議SIP協(xié)議的 請(qǐng)求INVITE的響應(yīng)OK數(shù)據(jù)包,以獲得用戶地址信息,若是需要監(jiān)聽的語(yǔ) 音數(shù)據(jù),則將用戶地址信息對(duì)應(yīng)的包含語(yǔ)音數(shù)據(jù)的RTP包存儲(chǔ)到接收緩存 中;若接收緩存存儲(chǔ)滿RTP包,對(duì)RTP包進(jìn)行排序,然后提取RTP包中的 語(yǔ)音數(shù)據(jù),將接收緩存置為播放緩存,并播放RTP包中的語(yǔ)音數(shù)據(jù),并將播 放緩存置為接收緩存;語(yǔ)音數(shù)據(jù)播放完成后,則將播放緩存置為接收緩存, 用以接收RTP包,對(duì)RTP包進(jìn)行排序和提取語(yǔ)音數(shù)據(jù),將接收緩存置為播 放緩存,通過交替接收和播放語(yǔ)音數(shù)據(jù),從而實(shí)現(xiàn)對(duì)VoIP語(yǔ)音的實(shí)時(shí)監(jiān) 聽。首先介紹本發(fā)明實(shí)施例的VolP語(yǔ)音實(shí)時(shí)監(jiān)聽的方法,如圖1所示,具體 步驟如下步驟11、分配接收緩存和播放緩存,然后執(zhí)行步驟12; 步驟12、接收網(wǎng)絡(luò)數(shù)據(jù),然后執(zhí)行步驟13;步驟13、判斷接收的網(wǎng)絡(luò)數(shù)據(jù)是否是SIP協(xié)議的OK數(shù)據(jù)包,若是,解析 OK數(shù)據(jù)包,并提取用戶地址信息,然后,執(zhí)行步驟14,否則,丟棄網(wǎng)絡(luò)數(shù) 據(jù);在本發(fā)明實(shí)施例中可將用戶地址信息設(shè)置為用戶名、用戶IP地址和端 口號(hào)。步驟14、根據(jù)上述用戶地址信息判斷所接收的VolP語(yǔ)音數(shù)據(jù)是否需要監(jiān) 聽,若是,執(zhí)行步驟15,否則,執(zhí)行步驟12,繼續(xù)接收網(wǎng)絡(luò)數(shù)據(jù);步驟15、獲取上述用戶地址信息對(duì)應(yīng)的包含語(yǔ)音數(shù)據(jù)的RTP包,并存儲(chǔ) 至接收緩存中,然后執(zhí)行步驟16;步驟16、判斷接收緩存是否存儲(chǔ)滿RTP包,若是,執(zhí)行步驟17,否則, 執(zhí)行步驟15,繼續(xù)接收包含語(yǔ)音數(shù)據(jù)的RTP包;步驟17、對(duì)RTP包進(jìn)行排序和提取語(yǔ)音數(shù)據(jù),將接收緩存置為播放緩 存,播放RTP包中的語(yǔ)音數(shù)據(jù),將播放緩存置為接收緩存,接收包含語(yǔ)音數(shù) 據(jù)的RTP包,然后執(zhí)行步驟18;步驟18、播放語(yǔ)音數(shù)據(jù),然后執(zhí)行步驟19;步驟19、判斷語(yǔ)音數(shù)據(jù)是否播放完成,若是,執(zhí)行步驟20,否則,執(zhí)行 步驟18,繼續(xù)播放語(yǔ)音數(shù)據(jù);步驟20、將播放緩存置為接收緩存,接收包含語(yǔ)音數(shù)據(jù)的RTP包;對(duì) RTP包進(jìn)行排序和提取語(yǔ)音數(shù)據(jù),然后將接收緩存置為播放緩存,播放語(yǔ)音 數(shù)據(jù),然后繼續(xù)接收網(wǎng)絡(luò)數(shù)據(jù),執(zhí)行步驟12。由上述步驟可知,在本發(fā)明實(shí)施例中使用接收緩存接收包含語(yǔ)音數(shù)據(jù)的 RTP包,通過播放緩存將接收的語(yǔ)音數(shù)據(jù)進(jìn)行播放,并且通過對(duì)接收緩存和 播放緩存的交替使用,使用戶可對(duì)VolP語(yǔ)音數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控。下面將分別介紹在本發(fā)明實(shí)施例VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽方法中具體步 驟。首先,介紹本發(fā)明實(shí)施例接收緩存存儲(chǔ)接收到的包含語(yǔ)音數(shù)據(jù)的RTP包 的流程圖,如圖2所示,具體步驟如下步驟21、接收網(wǎng)絡(luò)數(shù)據(jù),然后執(zhí)行步驟22;步驟22、判斷接收的網(wǎng)絡(luò)數(shù)據(jù)是否是SIP協(xié)議包,若是,則執(zhí)行步驟 23,否則,執(zhí)行步驟21;步驟23、判斷SIP協(xié)議包是否是應(yīng)答lnvite (請(qǐng)求)的OK (響應(yīng))數(shù)據(jù) 包,若是,執(zhí)行步驟24,否則,丟棄網(wǎng)絡(luò)數(shù)據(jù),然后執(zhí)行步驟21;上述的判斷方法可設(shè)置為通過將接收的數(shù)據(jù)包的特征碼和位置與預(yù)先 設(shè)置的特征碼和位置進(jìn)行匹配,在SIP協(xié)議中,特征碼是指SIP協(xié)議中能標(biāo)識(shí) 包的字符,例如可包括OK、 ring、 trying等,而上述的位置是指特征碼在數(shù) 據(jù)包的從第幾個(gè)字節(jié)開始到第幾個(gè)字節(jié)結(jié)束的位置。步驟24、從OK數(shù)據(jù)包中解析出發(fā)送該數(shù)據(jù)包的用戶名或用戶ID, IP地址 和端口號(hào),然后執(zhí)行步驟25;步驟25、根據(jù)過濾規(guī)則判斷網(wǎng)絡(luò)數(shù)據(jù)是否是要監(jiān)聽的VolP語(yǔ)音數(shù)據(jù),若 是,執(zhí)行步驟26,否則,執(zhí)行步驟21;上述的過濾規(guī)則是,通過判斷獲取的用戶名或用戶ID、 IP地址和端口號(hào) 是否為需要監(jiān)聽的用戶名或用戶ID、 IP地址和端口號(hào)。步驟26、從OK數(shù)據(jù)包中取出通信雙方的IP地址和端口號(hào),然后執(zhí)行步驟27;步驟27、接收IP地址和端口號(hào)對(duì)應(yīng)的RTP包,然后執(zhí)行步驟28;步驟28、初始化40字節(jié)的RTP包的信息頭,在RTP包的信息頭中添加接 收時(shí)間、RTP包長(zhǎng)和接收序號(hào),然后執(zhí)行步驟29;RTP包的長(zhǎng)度包括Ethernet (以太網(wǎng)絡(luò))頭,14字節(jié),IP頭,20字 節(jié),UDP(用戶數(shù)據(jù)報(bào)協(xié)議)頭,8字節(jié),RTP頭,12字節(jié)和RTP數(shù)據(jù)。保存RTP包長(zhǎng),便于取RTP包,保存接收序號(hào)便于RTP包的排序,而接收時(shí)間 可在語(yǔ)音播放時(shí)用。步驟29、把信息頭和接收到的RTP包一起存儲(chǔ)到接收緩存中,繼續(xù)接收 上述IP地址和端口號(hào)對(duì)應(yīng)的RTP包,然后執(zhí)行步驟21 。在存儲(chǔ)RTP包的時(shí)候,先在RTP包的信息頭中存儲(chǔ)接收時(shí)間(例如某 年某月某曰)、RTP包的長(zhǎng)度、RTP包的序號(hào),然后再把RTP包的信息頭與 接收到的RTP數(shù)據(jù)包一起存儲(chǔ)到接收緩存中去。按照上述步驟存儲(chǔ)下一個(gè)接收到的RTP包,并將接收到的RTP包按照 FIFO (先進(jìn)先出)的方式存儲(chǔ)。為了能夠?qū)崿F(xiàn)圖2中的步驟,下面對(duì)上述步驟中使用到的SIP協(xié)議的解 析流程作一介紹。該方法的主要思路是預(yù)先配置語(yǔ)音控制協(xié)議的特征碼和 所在位置,并與所接收的UDP數(shù)據(jù)包中相應(yīng)位置的特征碼進(jìn)行匹配,如果 匹配成功,則繼續(xù)從該UDP數(shù)據(jù)包中提取通信雙方的用戶名、IP地址和端 口號(hào),并將用戶名、IP地址和端口號(hào)與監(jiān)聽的過濾規(guī)則相匹配,如果與過濾 規(guī)則匹配,則通知接收IP地址和端口號(hào)對(duì)應(yīng)的RTP包。如圖3所示,為本 發(fā)明實(shí)施例SIP協(xié)議解析的流程圖,具體步驟如下步驟31、接收網(wǎng)絡(luò)數(shù)據(jù)包,然后執(zhí)行步驟32;步驟32、判斷是否是UDP數(shù)據(jù)包,若是,執(zhí)行步驟33,否則,執(zhí)行步驟31;UDP數(shù)據(jù)包包括UDP頭和UDP的數(shù)據(jù)部分;步驟33、判斷UDP數(shù)據(jù)包的校驗(yàn)和是否正確,若是,執(zhí)行步驟34,否 則,丟棄網(wǎng)絡(luò)數(shù)據(jù),然后執(zhí)行步驟31;UDP數(shù)據(jù)包的校驗(yàn)的方法是計(jì)算16位的二進(jìn)制和,首先將校驗(yàn)和字段 (16位)置0,將每個(gè)16位的反碼相加,若是奇數(shù)字節(jié)即最后未到16字節(jié),則以0補(bǔ)充,結(jié)果存在校驗(yàn)和字段中,因接收端包含了之前的校驗(yàn)和,若傳 輸中沒有任何差錯(cuò),則接收端計(jì)算的校驗(yàn)和該為全1,否則有錯(cuò)。步驟34、從UDP數(shù)據(jù)包的數(shù)據(jù)部分開始,讀入14字節(jié),然后執(zhí)行步驟35;步驟35、從14字節(jié)中,查找是否有200 OK字符串,若有,執(zhí)行步驟 36,否則,丟棄網(wǎng)絡(luò)數(shù)據(jù),然后執(zhí)行步驟31;步驟36、讀入U(xiǎn)DP數(shù)據(jù)包的剩余部分,查找是否有INVITE字符串,若 有,提取網(wǎng)絡(luò)數(shù)據(jù)的特征碼和用戶名或用戶ID,執(zhí)行步驟37,否則,丟棄網(wǎng) 絡(luò)數(shù)據(jù),然后執(zhí)行步驟31;步驟37、根據(jù)過濾規(guī)則判斷特征碼和用戶名或用戶ID是否為需要監(jiān)聽的 VolP語(yǔ)音數(shù)據(jù),若是,執(zhí)行步驟38,否則,丟棄網(wǎng)絡(luò)數(shù)據(jù),然后執(zhí)行步驟 31;步驟38、從UDP數(shù)據(jù)包的剩余部分提取通信雙方的IP地址和端口號(hào),然 后執(zhí)行步驟39;步驟39、根據(jù)IP地址和端口號(hào)判斷是否與監(jiān)聽的過濾規(guī)則相匹配,若 是,執(zhí)行步驟39,否則,丟棄網(wǎng)絡(luò)數(shù)據(jù),然后執(zhí)行步驟31;步驟40、開始接收IP地址和端口號(hào)對(duì)應(yīng)的包含語(yǔ)音數(shù)據(jù)的RTP包,然后 執(zhí)行步驟31 。本發(fā)明實(shí)施例采用的VoIP協(xié)議解析技術(shù),主要針對(duì)基于SIP協(xié)議的 VolP語(yǔ)音數(shù)據(jù)。如果需要對(duì)其它非SIP.標(biāo)準(zhǔn)通信協(xié)議的語(yǔ)音數(shù)據(jù)進(jìn)行監(jiān)聽, 可預(yù)先設(shè)置相應(yīng)新的協(xié)議解析方法。由上述步驟可知,在SIP協(xié)議解析過程中,由于只用分析SIP協(xié)議中 INVITE的OK數(shù)據(jù)包,降低網(wǎng)絡(luò)數(shù)據(jù)的處理量,有效的提高了實(shí)時(shí)監(jiān)聽的效 率。通過圖2和圖3的介紹,可使用戶將需要監(jiān)聽的包含語(yǔ)音數(shù)據(jù)的RTP包存 儲(chǔ)到接收緩存中,由圖1描述的步驟可知,若接收緩存存儲(chǔ)滿RTP包,就將接 收緩存置為播放緩存,將RTP包中的語(yǔ)音數(shù)據(jù)提取出來(lái),并調(diào)用相應(yīng)的編碼 解碼器將語(yǔ)音數(shù)據(jù)還原為原始的語(yǔ)音數(shù)據(jù),然后將解碼后的語(yǔ)音數(shù)據(jù)播放出來(lái)。下面就介紹如何播放語(yǔ)音數(shù)據(jù),如圖4所示,為本發(fā)明實(shí)施例語(yǔ)音播放 流程圖,具體步驟如下步驟41、從播放緩存中讀入包含語(yǔ)音數(shù)據(jù)的RTP包,然后執(zhí)行步驟42;步驟42、讀入RTP數(shù)據(jù)包的信息頭,從信息頭中提取RTP包的長(zhǎng)度和 音頻編碼解碼的類型,然后執(zhí)行步驟43;RTP數(shù)據(jù)包的信息頭是指在RTP數(shù)據(jù)包前加一段內(nèi)存,記錄獲取RTP 包的時(shí)間,RTP包的長(zhǎng)度以及RTP包的排序;步驟43、根據(jù)獲得的RTP數(shù)據(jù)包的長(zhǎng)度和音頻編碼解碼的類型,讀入 語(yǔ)音數(shù)據(jù)并解碼,然后執(zhí)行步驟44;本步驟中的讀入語(yǔ)音數(shù)據(jù)并解碼的過程首先提取出播放緩存中第 一個(gè) RTP包的語(yǔ)音數(shù)據(jù)長(zhǎng)度,根據(jù)音頻編碼解碼器的編號(hào),確定所用的音頻編碼 解碼器,再?gòu)牟シ啪彺嬷刑崛〕稣Z(yǔ)音數(shù)據(jù),調(diào)用相應(yīng)的語(yǔ)音編碼解碼器,把 播放緩存中的語(yǔ)音數(shù)據(jù)解碼為原始的語(yǔ)普數(shù)據(jù),然后按照上面的步驟把下一 段語(yǔ)音數(shù)據(jù)解碼為原始的語(yǔ)音數(shù)據(jù)。步驟44、判斷接收緩存中是否還有語(yǔ)音數(shù)據(jù),若有,則執(zhí)行步驟41, 否則,執(zhí)行步驟45;步驟45、把解碼后的原始語(yǔ)音數(shù)據(jù)存儲(chǔ)到臨時(shí)PCM (脈沖編碼調(diào)制) 文件中,然后執(zhí)行步驟46;步驟46、把PCM文件加上WAV (微軟開發(fā)的一種聲音文件格式)文件頭,調(diào)用WAV播放器播放語(yǔ)音數(shù)據(jù)。本發(fā)明實(shí)施例可適用一些常用的音頻編碼解碼類型,例如g.729, g.711, g.723等。如果被監(jiān)聽的VoIP語(yǔ)音數(shù)據(jù)為新的音頻編碼解碼類型, 只需要在本發(fā)明實(shí)施例中添加新的語(yǔ)音編碼解碼類型即可,1吏本發(fā)明實(shí)施例 具有較好的擴(kuò)展性。通過上述流程,可將接收的語(yǔ)音數(shù)據(jù)經(jīng)過解碼后,通過播放器播放語(yǔ)音 數(shù)據(jù)內(nèi)容,為了實(shí)現(xiàn)對(duì)VoIP語(yǔ)音數(shù)據(jù)的實(shí)時(shí)監(jiān)聽,在本發(fā)明實(shí)施例中接收 緩存和播放緩交替接收和播放語(yǔ)音數(shù)據(jù),下面介紹本發(fā)明實(shí)施例雙緩存接收 播放的流程,如圖5所示,具體步驟如下步驟51、通過接收緩存存儲(chǔ)接收到的包含語(yǔ)音數(shù)據(jù)的RTP數(shù)據(jù)包,將 播放緩存閑置,然后執(zhí)行步驟52;步驟52、判斷接收緩存是否存儲(chǔ)滿RTP數(shù)據(jù)包,若是,執(zhí)行步驟53, 否則,執(zhí)行步驟51;判斷接收緩存是否存儲(chǔ)滿RTP數(shù)據(jù)包的方法是接收緩存的大小固定 的,對(duì)存儲(chǔ)到接收緩存的數(shù)據(jù)包進(jìn)行累計(jì),超過接收緩存的大小,就認(rèn)為已 經(jīng)存儲(chǔ)滿。步驟53、把接收到的RTP數(shù)據(jù)包進(jìn)行排序,并把RTP數(shù)據(jù)包中的語(yǔ)音 數(shù)據(jù)按照發(fā)送的順序提取出來(lái),然后執(zhí)行步驟54;步驟54、將接收緩存置為播放緩存,并將播放緩存置為接收緩存,然后 執(zhí)行步驟55;上述的順序提取,就是按照RTP數(shù)據(jù)包存儲(chǔ)時(shí)執(zhí)行的先進(jìn)先出順序來(lái)提取。步驟55、播放從播放緩存中提取語(yǔ)音數(shù)據(jù),然后執(zhí)行步驟56; 步驟56、判斷語(yǔ)音數(shù)據(jù)是否播放完成,若是,執(zhí)行步驟57,否則,執(zhí) 行步驟55,繼續(xù)播放語(yǔ)音數(shù)據(jù);步驟57、把播放緩存清空,把接收到的RTP數(shù)據(jù)包進(jìn)行排序,并把 RTP數(shù)據(jù)包中的語(yǔ)音數(shù)據(jù)按照發(fā)送的順序提取出來(lái),將播放緩存置為接收緩 存,接收RTP數(shù)據(jù)包,將接收緩緩存置為播放緩存,然后執(zhí)行步驟54,直 到通話結(jié)束為止;播放緩存播放完語(yǔ)音消息后,先把播放緩存清空,并使其接收特定IP地 址和端口號(hào)的RTP包,然后對(duì)接收緩存中的數(shù)據(jù)進(jìn)行處理,把接收緩存中的 RTP包根據(jù)RTP包中的序號(hào)進(jìn)行排序,并根據(jù)排序的結(jié)果把RTP包中的語(yǔ) 音數(shù)據(jù)和相關(guān)信息(語(yǔ)音數(shù)據(jù)長(zhǎng)度和音頻編碼解碼類型)放到接收緩存的相 應(yīng)位置。最后把接收緩存交給語(yǔ)音播放模塊進(jìn)行處理。為了能夠使接收的RTP包按照發(fā)送方發(fā)送的順序排序,在上述步驟對(duì) RTP包進(jìn)行了排序,如圖6所示,為本發(fā)明實(shí)施例RTP包排序流程圖,具 體步驟如下步驟61、讀取RTP包;步驟62、查找Sequence Number (序列號(hào))最小的包;然后執(zhí)行步驟62;步驟63、把RTP包中的語(yǔ)音數(shù)據(jù)、標(biāo)記語(yǔ)音數(shù)據(jù)大小的short類型的數(shù)據(jù) 和標(biāo)記語(yǔ)音編碼類型的char類型的數(shù)據(jù)按照FIFO的方式寫到一個(gè)緩存中,然 后執(zhí)行步驟64;步驟64、對(duì)已提取語(yǔ)音數(shù)據(jù)的RTP包做標(biāo)記,然后執(zhí)行步驟65; 步驟65、按照序列號(hào)遞增1的方式繼續(xù)提取并保存語(yǔ)音數(shù)據(jù),然后執(zhí)行 步驟66;步驟66、判斷序列號(hào)是不是上一個(gè)序列號(hào)順序遞增1的序列號(hào),若是, 繼續(xù)寫入,執(zhí)行步驟63,否則,標(biāo)記此序列號(hào),執(zhí)行步驟67;步驟67、在未標(biāo)記的RTP數(shù)據(jù)包中查找序列號(hào)順序遞增的包,然后執(zhí)行 步驟68;步驟68、在未提取語(yǔ)音數(shù)據(jù)的RTP包中查找標(biāo)記的序列號(hào),如果找到, 則轉(zhuǎn)到步驟63,否則,則轉(zhuǎn)到步驟62、 63、 64,然后在執(zhí)行步驟69;步驟69、判斷是否還有未提取語(yǔ)音數(shù)據(jù)的RTP包,若是,執(zhí)行步驟63, 否則,提取語(yǔ)音數(shù)據(jù)結(jié)束。由上述步驟可知,接收緩存接收包含語(yǔ)音數(shù)據(jù)的RTP包,播放緩存播放 語(yǔ)音數(shù)據(jù),交替接收和播放包換語(yǔ)音數(shù)據(jù)的RTP包,使用戶可以實(shí)時(shí)監(jiān)聽語(yǔ) 音數(shù)據(jù)。由于上述的方法實(shí)施例都可以通過裝置來(lái)實(shí)現(xiàn),所以,本發(fā)明還提供了 幾個(gè)裝置實(shí)施例。首先,介紹本發(fā)明實(shí)施例VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽系統(tǒng),系統(tǒng)組成如圖7 所示,圖中系統(tǒng)包括鏡像交換機(jī)、旁路服務(wù)器和監(jiān)聽客戶端,其中,鏡像交換機(jī),用于把被監(jiān)聽的網(wǎng)絡(luò)數(shù)據(jù)鏡像到旁路服務(wù)器。由于被監(jiān)聽網(wǎng)絡(luò)的數(shù)據(jù)流量比較大,可在上述鏡像交換機(jī)中設(shè)置一過濾 裝置,即采用端口號(hào)和特征碼過濾的方法,過濾掉一部分不需要的網(wǎng)絡(luò)數(shù) 據(jù),然后把與被監(jiān)聽內(nèi)容相關(guān)的數(shù)據(jù)送到旁路服務(wù)器;旁路服務(wù)器,可設(shè)置一VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽裝置,用以解析SIP妙議 INVITE的OK數(shù)據(jù)包,從OK數(shù)據(jù)包中提取出通信雙方的用戶名或用戶ID、通 信雙方的IP地址和端口號(hào)。如果上述用戶地址信息符合過濾的規(guī)則,就接收 通信雙方的IP地址和端口號(hào)對(duì)應(yīng)的包含語(yǔ)音數(shù)據(jù)的RTP包。等接收緩存存儲(chǔ) 滿后,對(duì)RTP包進(jìn)行排序和提取語(yǔ)音數(shù)據(jù),將接收緩存置為播放緩存,將播 放緩存置為接收緩存,繼續(xù)接收RTP包,并調(diào)用相應(yīng)的編碼解碼器,把語(yǔ)音 數(shù)據(jù)還原為原始的語(yǔ)音數(shù)據(jù),直接通過聲卡播放出來(lái)。在播放語(yǔ)音數(shù)據(jù)的同 時(shí),可通過錄音模塊將通話雙方的語(yǔ)音錄制為語(yǔ)音文件,存儲(chǔ)到相應(yīng)的服務(wù) 器中,供以后查詢。上述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的裝置可包括接收緩存,緩存切換單 元,以及語(yǔ)音播放單元,如圖8所示,為本發(fā)明實(shí)施例的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí) 監(jiān)聽的裝置,具體結(jié)構(gòu)如下(1 )接收緩存,用于保存接收到的'包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包;(2) 緩存轉(zhuǎn)換單元,用于在所述接收緩存中存儲(chǔ)了符合預(yù)定數(shù)量包含所 述語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包后,將所述接收緩存置為播放緩存;以及用于在所述播 放緩存中的所述語(yǔ)音數(shù)據(jù)播放完畢后,將所述播放緩存設(shè)置為接收緩存;(3) 語(yǔ)音播放單元,用于播放所述播放緩存中的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包??蛇x的,在上述VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽裝置中,還可包括 判斷模塊一,用于判斷所述接收緩存是否存儲(chǔ)滿所述包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包,若是,發(fā)出通知,否則,通知所述接收緩存繼續(xù)接收所述包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包;判斷模塊二,用于判斷是否播放完所述播放緩存中的所述包含語(yǔ)音數(shù)據(jù) 的數(shù)據(jù)包,若是,發(fā)出通知,否則,通知所述語(yǔ)音播放單元繼續(xù)播放所述包 含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包??蛇x的,在上述VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽裝置中,還可包括數(shù)據(jù)包判斷模塊,用于判斷網(wǎng)絡(luò)數(shù)據(jù)是否是會(huì)話啟動(dòng)協(xié)議SIP的請(qǐng)求 INVITE的響應(yīng)OK數(shù)據(jù)包,若是發(fā)出通知,否則,丟棄網(wǎng)絡(luò)數(shù)據(jù);數(shù)據(jù)解析模塊用于根據(jù)所述判斷模塊一的通知,從所述OK數(shù)據(jù)包中提 取用戶地址信息;監(jiān)聽判斷模塊,用于根據(jù)所述用戶地址信息判斷網(wǎng)絡(luò)數(shù)據(jù)是否需要監(jiān) 聽,若是,發(fā)出通知所述接收緩存接收所述用戶地址信息對(duì)應(yīng)的包含語(yǔ)音數(shù) 據(jù)的實(shí)時(shí)傳輸協(xié)議RTP包,否則,通知繼續(xù)接收所述網(wǎng)絡(luò)數(shù)據(jù)。可選的,在上述VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽裝置中,還可包括排序、提取模塊用于對(duì)所述數(shù)據(jù)包按照發(fā)送的順序排序,并從所述數(shù) 據(jù)包中中提取出所述語(yǔ)音數(shù)據(jù)??蛇x的,在上述VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽裝置中,還可包括 錄音模塊,用于對(duì)在所述播放緩存模塊播放的所述語(yǔ)音數(shù)據(jù)進(jìn)行錄音。 在本發(fā)明實(shí)施例中,在接收到網(wǎng)絡(luò)數(shù)據(jù)后,通過數(shù)據(jù)包判斷模塊判斷網(wǎng) 絡(luò)數(shù)據(jù)是否是會(huì)話啟動(dòng)協(xié)議SIP的請(qǐng)求INVITE的響應(yīng)OK數(shù)據(jù)包,若是,則通 知數(shù)據(jù)解析模塊從上述OK數(shù)據(jù)包中提取用戶地址信息,然后,監(jiān)聽判斷模 塊,根據(jù)上述用戶地址信息判斷網(wǎng)絡(luò)數(shù)據(jù)是否是需要監(jiān)聽,若是,則通知接 收緩存接收上述用戶地址信息對(duì)應(yīng)的包含語(yǔ)音數(shù)據(jù)的實(shí)時(shí)傳輸協(xié)議RTP包, 通過判斷模塊一判斷接收緩存是否存儲(chǔ)滿實(shí)時(shí)傳輸協(xié)議RTP包,若是,則通 知排序、提取模塊,對(duì)實(shí)時(shí)傳輸協(xié)議RTP包進(jìn)行排序并提取出語(yǔ)音數(shù)據(jù),然 后,通知緩存切換單元,將接收緩存置為所述播放緩存,通過判斷模塊二判 斷語(yǔ)音數(shù)據(jù)是否播放完成,若是,則通知排序、提取模塊,對(duì)實(shí)時(shí)傳輸協(xié)議 RTP包進(jìn)行排序并提取出語(yǔ)音數(shù)據(jù),然后,通知將所述播放緩存置為接收緩 存。在播放語(yǔ)音數(shù)據(jù)時(shí),可通過錄音模塊,對(duì)在所述播放緩存模塊播放的所 述語(yǔ)音數(shù)據(jù)進(jìn)行錄音,供以后查詢。由上述實(shí)施例可知,通過接收緩存接收包含語(yǔ)音數(shù)據(jù)的RTP包,播放緩 存播放語(yǔ)音數(shù)據(jù),交替接收和播放接收的語(yǔ)音數(shù)據(jù),使用戶可以實(shí)時(shí)監(jiān)聽語(yǔ) 音數(shù)據(jù),并且在VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽裝置中設(shè)置錄音模塊,可將語(yǔ)音數(shù)據(jù) 進(jìn)行保存供以后查詢^f吏用。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不 局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可 輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明 的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1. 一種VoIP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法,其特征在于,包括在接收緩存中保存接收到的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包;所述接收緩存中存儲(chǔ)了符合預(yù)定數(shù)量的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包后,將所述接收緩存置為播放緩存,并播放所述語(yǔ)音數(shù)據(jù);所述播放緩存中的語(yǔ)音數(shù)據(jù)播放完畢后,將所述播放緩存設(shè)置為所述接收緩存。
2、 根據(jù)權(quán)利要求1所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法,其特征在于, 在接收包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包之前,所述方法還包括配置兩個(gè)緩存,分別用于作為所述接收緩存和所述播放緩存,在所述播 放緩存中所述語(yǔ)音數(shù)據(jù)播放完畢后將所述播放緩存設(shè)置為所述接收緩存。
3、 根據(jù)權(quán)利要求1所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法,其特征在于, 所述接收包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包之前,所述方法還包括判斷接收到的網(wǎng)絡(luò)數(shù)據(jù)是否是會(huì)話啟動(dòng)協(xié)議SIP的請(qǐng)求INVITE的響應(yīng)OK 數(shù)據(jù)包,若是,從所述響應(yīng)OK數(shù)據(jù)包中提取用戶地址信息,否則,丟棄所述 網(wǎng)絡(luò)數(shù)據(jù)。
4、 根據(jù)權(quán)利要求3所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法,其特征在于, 所述接收包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包的方法包括判斷接收的所述網(wǎng)絡(luò)數(shù)據(jù)是否需要監(jiān)聽,若是,獲取所述用戶地址信息 對(duì)應(yīng)的所述包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包,并將所述包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包存儲(chǔ)至 所述接收緩存,否則,繼續(xù)接收所述網(wǎng)絡(luò)數(shù)據(jù)。
5、 根據(jù)權(quán)利要求4所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法,其特征在于, 所述用戶地址信息包括用戶名、用戶IP地址和端口號(hào)。
6、 根據(jù)權(quán)利要求1所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法,其特征在于,所述將所述接收緩存置為播放緩存之前,所述方法還包括 對(duì)所述數(shù)據(jù)包進(jìn)行排序并提取所述語(yǔ)音數(shù)據(jù)。
7、 根據(jù)權(quán)利要求1所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法,其特征在于, 所述對(duì)所述數(shù)據(jù)包進(jìn)行排序并提取所述語(yǔ)音數(shù)據(jù)的方法包括查找序列號(hào)最小的所述語(yǔ)音數(shù)據(jù)的lt據(jù)包;按照所述序列號(hào)順序遞增1的方式,提取并保存所述語(yǔ)音數(shù)據(jù)。
8、 根據(jù)權(quán)利要求1所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法,其特征在于, 所述根據(jù)判斷接收的所述網(wǎng)絡(luò)數(shù)據(jù)是否需要監(jiān)聽的方法為判斷所述用戶地址信息是否符合過濾規(guī)則,若是,則認(rèn)為所述網(wǎng)絡(luò)數(shù)據(jù) 需要監(jiān)聽,否則,繼續(xù)接收所述網(wǎng)絡(luò)數(shù)據(jù)。
9、 一種VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的裝置,其特征在于,包括 接收緩存,用于保存接收到的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包; 緩存轉(zhuǎn)換單元,用于在所述接收緩存中存儲(chǔ)了符合預(yù)定數(shù)量的包含所述語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包后,將所述接收緩存置為播放緩存;以及用于在所述播放 緩存中的所述語(yǔ)音數(shù)據(jù)播放完畢后,將所述播放緩存設(shè)置為所述接收緩存; 語(yǔ)音播放單元,用于播放所述播放緩存中的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包。
10、 根據(jù)權(quán)利要求9所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的裝置,其特征在 于,還包括判斷模塊一,用于判斷所述接收緩存是否存儲(chǔ)滿所述包含語(yǔ)音數(shù)據(jù)的 數(shù)據(jù)包,若是,發(fā)出通知,否則,通知所述接收緩存繼續(xù)存儲(chǔ)接收到的所述 包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包;判斷模塊二,用于判斷是否播放完所述播放緩存中的所述包含語(yǔ)音數(shù)據(jù) 的數(shù)據(jù)包,若是,發(fā)出通知,否則,通知所述語(yǔ)音播放單元繼續(xù)播放所述包 含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包。
11、 根據(jù)權(quán)利要求10所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的裝置,其特征在于,還包括數(shù)據(jù)包判斷模塊,用于判斷網(wǎng)絡(luò)數(shù)據(jù)是否是會(huì)話啟動(dòng)協(xié)議SIP的請(qǐng)求 INVITE的響應(yīng)OK數(shù)據(jù)包,若是發(fā)出通知,否則,丟棄網(wǎng)絡(luò)數(shù)據(jù);數(shù)據(jù)解析模塊用于根據(jù)所述數(shù)據(jù)包判斷模塊的通知,從所述OK數(shù)據(jù)包 中提取用戶地址信息。
12、 根據(jù)權(quán)利要求11所述的VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的裝置,其特征在 于,還包括監(jiān)聽判斷模塊,用于根據(jù)所述數(shù)據(jù)解析模塊提取出的所述用戶地址信息 判斷所述網(wǎng)絡(luò)數(shù)據(jù)是否需要監(jiān)聽,若是,發(fā)出通知,否則,通知繼續(xù)接收所 述網(wǎng)絡(luò)數(shù)據(jù)。
13、 根據(jù)權(quán)利要求12所述VolP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的裝置,其特征在于, 還包括排序、提取模塊用于對(duì)所述數(shù)據(jù)包按照發(fā)送的順序排序,并從所述數(shù) 據(jù)包中提取出所述語(yǔ)音數(shù)據(jù)。
全文摘要
本發(fā)明提供一種VoIP語(yǔ)音數(shù)據(jù)實(shí)時(shí)監(jiān)聽的方法及裝置,屬于通信技術(shù)領(lǐng)域,該方法包括解析接收的網(wǎng)絡(luò)數(shù)據(jù)會(huì)話啟動(dòng)協(xié)議SIP中請(qǐng)求INVITE的響應(yīng)OK數(shù)據(jù)包,以獲得用戶地址信息,若是需要監(jiān)聽的語(yǔ)音數(shù)據(jù),則將用戶地址信息對(duì)應(yīng)的包含語(yǔ)音數(shù)據(jù)的數(shù)據(jù)包存儲(chǔ)到接收緩存中;若接收緩存存儲(chǔ)滿數(shù)據(jù)包,則對(duì)數(shù)據(jù)包進(jìn)行排序,然后提取數(shù)據(jù)包中的語(yǔ)音數(shù)據(jù),將接收緩存置為播放緩存,并播放數(shù)據(jù)包中的語(yǔ)音數(shù)據(jù),將播放緩存置為接收緩存;語(yǔ)音數(shù)據(jù)播放完成后,則將播放緩存置為接收緩存,用以接收數(shù)據(jù)包,對(duì)數(shù)據(jù)包進(jìn)行排序和提取語(yǔ)音數(shù)據(jù),將接收緩存置為播放緩存,通過交替接收和播放語(yǔ)音數(shù)據(jù),從而實(shí)現(xiàn)對(duì)VoIP語(yǔ)音的實(shí)時(shí)監(jiān)聽。
文檔編號(hào)H04M7/00GK101247432SQ20071011923
公開日2008年8月20日 申請(qǐng)日期2007年7月18日 優(yōu)先權(quán)日2007年7月18日
發(fā)明者朱彥軍 申請(qǐng)人:北京高信達(dá)網(wǎng)絡(luò)科技有限公司