鄒田 周到
【摘要】本文利用SIP協(xié)議在Windows系統(tǒng)平臺(tái)上實(shí)現(xiàn)了一個(gè)音視頻通信方案,該方案使用PJSIP協(xié)議棧,配合多媒體處理開源框架FFMPEG,DirectShow,視頻渲染開源框架SDL。
【關(guān)鍵詞】SIP協(xié)議PJSIP協(xié)議棧音視頻通信FFMPEGSDL
一、SIP簡(jiǎn)述
SIP稱為會(huì)話初始化協(xié)議,是由Internet工程任務(wù)組IETF于1999年提出的一個(gè)實(shí)現(xiàn)實(shí)時(shí)通信應(yīng)用的信令協(xié)議。這里,會(huì)話是指用戶之間的實(shí)時(shí)數(shù)據(jù)交換。SIP協(xié)議作用于建立、修改、釋放多媒體會(huì)話。其中,會(huì)話可以是不同的數(shù)據(jù),例如:數(shù)字化后的音、視頻數(shù)據(jù)等。因此,SIP的應(yīng)用具有很大的靈活性。
二、設(shè)計(jì)方案
SIP的主要部件包括用戶代理、代理服務(wù)器、重定向服務(wù)器以及注冊(cè)服務(wù)器。SIP呼叫建立正是依賴這些功能實(shí)體來實(shí)現(xiàn)。用戶代理由用戶代理客戶端和用戶代理服務(wù)器組成。前者只用于初始SIP請(qǐng)求,并負(fù)責(zé)發(fā)起呼叫;后者主要實(shí)現(xiàn)呼叫的接收并做出相應(yīng)的響應(yīng)。代理服務(wù)器具有解析能力,主要用于接收用戶代理發(fā)來的請(qǐng)求,根據(jù)網(wǎng)絡(luò)策略將請(qǐng)求發(fā)給相應(yīng)的服務(wù)器,并根據(jù)服務(wù)器的應(yīng)答對(duì)用戶做出響應(yīng),也可以將收到的消息做適當(dāng)?shù)男薷暮笤侔l(fā)出。重定向服務(wù)器將獲得的呼叫的下一跳地址信息告訴呼叫方,呼叫方由此地址直接向下一跳發(fā)出申請(qǐng),而重定向服務(wù)器則退出這個(gè)呼叫控制過程。注冊(cè)服務(wù)器用來完成用戶代理服務(wù)器的登錄。在SIP系統(tǒng)中所有的用戶代理服務(wù)器都要在網(wǎng)絡(luò)上注冊(cè)、登錄,以便用戶代理客戶通過服務(wù)器能找到。
基于SIP協(xié)議的音視頻終端的實(shí)現(xiàn)主要由信令控制協(xié)議-SIP協(xié)議協(xié)同音視頻處理模塊、媒體傳輸控制模塊、界面控制模塊這四個(gè)模塊。在整個(gè)設(shè)計(jì)中,界面控制建立起用戶與底層實(shí)現(xiàn)的橋梁,主要使用C#來進(jìn)行相應(yīng)的界面布局。信令控制模塊由SIP協(xié)議來實(shí)現(xiàn),用于實(shí)現(xiàn)呼叫建立、更新會(huì)話和拆除會(huì)話等功能,并向界面控制模塊提供一些必要的接口。音視頻處理模塊主要實(shí)現(xiàn)的音視頻數(shù)據(jù)的采集、多媒體數(shù)據(jù)流編解碼、圖片渲染、音頻播放。媒體控制協(xié)議由RTP/RTCP協(xié)議來實(shí)現(xiàn),RTP主要負(fù)責(zé)流媒體數(shù)據(jù)的封裝,以及媒體流的實(shí)時(shí)傳輸,而RTCP主要負(fù)責(zé)不同通信實(shí)體之間交換控制信息,管理傳輸?shù)馁|(zhì)量,提供流量的控制以及擁塞控制等服務(wù)。
2.1SIP通信控制模塊
在信令控制控制中,本設(shè)計(jì)采用開源的PJSIP協(xié)議棧。首先是因?yàn)镻JSIP的代碼層次非常的清晰,從低級(jí)到高級(jí)都提供很方便的接口調(diào)用以供開發(fā),而且對(duì)接口提供了詳細(xì)豐富的文檔說明和相當(dāng)多的測(cè)試案例,大大縮短開發(fā)周期;其次,它高度的可移植性也為開發(fā)人員帶來了極大的便利,只需要編譯一次就可以在多種平臺(tái)上運(yùn)行;再次,它高效的性能也保證了在低配置的終端也能帶來良好的通話體驗(yàn)。最后,PJSIP支持多種SIP功能及擴(kuò)展功能,例如多人會(huì)話、即時(shí)消息、IMS等等。
2.2音視頻處理模塊設(shè)計(jì)
由于是基于windows系統(tǒng)平臺(tái)開發(fā),所以音視頻數(shù)據(jù)的采集都采用Windows自帶的API函數(shù)庫。音頻的采集和播放采用的就是Windows Multimedia API,waveInXXX類的函數(shù)用于采集,waveOutXXX類函數(shù)用于播放。而視頻的采集采用的是Windows的DirectShow,運(yùn)用DirectShow我們可以很方便的從支持WDM驅(qū)動(dòng)模型的采集卡上捕獲數(shù)據(jù),并且進(jìn)行相應(yīng)的后期處理乃至存儲(chǔ)到文件中。視頻的渲染則是采用SDL來完成,SDL是一個(gè)跨平臺(tái)的音視頻渲染庫,可以實(shí)現(xiàn)Linux,MAC,IOS,Android以及windows平臺(tái)的音視頻渲染。
音視頻數(shù)據(jù)的數(shù)據(jù)量通常比較大,未經(jīng)過壓縮編碼的視頻在因特網(wǎng)上的傳輸效率十分低下,而且占用大量的網(wǎng)絡(luò)資源,造成網(wǎng)絡(luò)堵塞。音視頻編碼方面,本設(shè)計(jì)采用開源框架FFMPEG,這是一款非常強(qiáng)大的視頻處理的開源框架。它支持豐富的視頻編解碼種類如VP8,H.263,H.264等,編解碼效率高效。音頻的編解碼主要實(shí)現(xiàn)了G711,G729,iLBC,Speex等標(biāo)準(zhǔn)。
三、結(jié)束語
SIP協(xié)議簡(jiǎn)單、通用性好,而且移植性強(qiáng)等特點(diǎn)得到大家的關(guān)注?;赟IP協(xié)議的軟交換新技術(shù)的研究和應(yīng)用,將使視頻通信進(jìn)入一個(gè)新的發(fā)展和應(yīng)用時(shí)期。
參考文獻(xiàn)
[1] BUR GOODE.Voice Over Internet Protocol.ProCeeding of the IEEE.2003
[2]司瑞峰,韓心慧,龍勤,潘愛民. SIP標(biāo)準(zhǔn)中的核心技術(shù)與研究進(jìn)展.軟件學(xué)報(bào). 2005
[3]白建軍,彭暉,田敏. SIP揭秘.北京:人民郵電大學(xué). 2003
[4] RFC3261.Session Initiation protocol.2002
[5]高深. SIP協(xié)議研究及其在視頻通信中的應(yīng)用.哈爾濱工業(yè)大學(xué). 2008