杜奇才,鄧誠剛,劉 熒,林嘉宇
(1.特種作戰(zhàn)學院,廣州510500;2.廣東中科軍民融合產(chǎn)業(yè)研究院,廣州510070;3.國防科學技術大學,長沙410073;4.長沙芯洗數(shù)字科技有限公司,長沙410073)
基于Android平臺的VoIP設計實現(xiàn)*
杜奇才1,鄧誠剛2,劉 熒3,林嘉宇4
(1.特種作戰(zhàn)學院,廣州510500;2.廣東中科軍民融合產(chǎn)業(yè)研究院,廣州510070;3.國防科學技術大學,長沙410073;4.長沙芯洗數(shù)字科技有限公司,長沙410073)
隨著移動通信技術和嵌入式系統(tǒng)的飛速發(fā)展,基于智能終端的VoIP在個人、商業(yè)組織和政府中的應用日趨廣泛。在智能終端中,Android操作系統(tǒng)以其開放性和靈活性,深受廣大用戶和廠商的青睞,在全球市場已占據(jù)絕對優(yōu)勢地位。因此,基于Android平臺設計實現(xiàn)VoIP系統(tǒng),具有廣泛的應用前景。介紹了PJSIP協(xié)議框架結(jié)構,分析了語音通信和即時消息收發(fā)流程,并以Android系統(tǒng)為運行平臺,設計實現(xiàn)了VoIP系統(tǒng)。利用開源服務器FreeSwitch進行測試,該系統(tǒng)能夠在不同版本的Android智能手機運行,并能夠在3G/4G以及WIFI網(wǎng)絡環(huán)境中進行穩(wěn)定的語音通話與即時信息傳輸,結(jié)果表明該系統(tǒng)具有良好的功能性與穩(wěn)定性。
VoIP系統(tǒng);Android平臺;PJSIP協(xié)議;智能手機;語音通信;即時消息
隨著移動通信技術和嵌入式系統(tǒng)的發(fā)展,基于智能終端的VoIP在個人、商業(yè)組織和政府中得到了廣泛應用。通訊市場研究公司Infonetics Research的數(shù)據(jù)顯示,2012年全球移動VoIP用戶數(shù)猛增550%以上,超過6.4億,并預計2012年到2017年VoLTE用戶數(shù)的年均復合增長率為145%,2017年移動VoIP和VoLTE服務市場總值將達到160億美元[1]。在智能終端中,Android設備憑借較高的性價比及平臺的開放性,得到了眾多手機廠商、移動開發(fā)者及終端用戶的青睞。最新數(shù)據(jù)表明,2016年第二季度,An-droid在中國智能手機市場的份額達到了81.4%[2]。因此,將VoIP與Android兩者結(jié)合,并引入市場,具有巨大的潛在價值。
基于Android平臺和PJSIP開源協(xié)議,實現(xiàn)了一個具備語音通信和即時消息收發(fā)功能的VoIP系統(tǒng),并利用開源服務器FreeSwitch進行了功能測試。測試結(jié)果表明,該系統(tǒng)能夠很好的完成會話的發(fā)起、應答、通信等功能,基本滿足了設計要求,具有一定的實用性。
VoIP[3]是通過IP網(wǎng)絡實時傳送語音數(shù)據(jù)的一種通訊方式,目前有多種標準信令協(xié)議支持VoIP的部署和實施,其中SIP是使用最為廣泛的協(xié)議,具有簡單、靈活、易于移植的特點,非常適合基于Android操作系統(tǒng)的VoIP開發(fā)。
2.1 SI P協(xié)議選擇
SIP[4]是由互聯(lián)網(wǎng)工程任務組IETF創(chuàng)建的VoIP通話連接協(xié)議標準,是一種基于文本的應用層協(xié)議,用來建立、修改和終止會話或多媒體電話。常見的開源SIP協(xié)議主要有ReSIProcate、sipX、JAIN、oSIP和PJSIP等[5]。ReSIProcate兼容性好,應用程序比較穩(wěn)定,但移植性比較差,不太適合開發(fā)終端軟件。sipX兼容大多數(shù)操作系統(tǒng),但缺乏開發(fā)文檔。JAIN使用JAVA開發(fā),效率較低。oSIP與PJSIP都是采用C語言開發(fā),具有很高的可移植性以及高效的處理能力,但PJSIP具有更清晰的API,更好的移植性,以及更詳細的開發(fā)文檔,并且PJSIP封裝有NAT穿越的庫,非常適合用于開發(fā)跨網(wǎng)段的SIP應用。
2.2 PJSI P協(xié)議分析
PJSIP架構清晰,功能齊全,各子模塊層次結(jié)構如圖1所示[6]。
圖1 PJSIP結(jié)構框圖
從圖1可以看出,PJSUA-LIB為抽象功能最高層,它集成了下層的所有功能到API,便于程序調(diào)用;PJMDEDIA-CODEC和PJMEDIA實現(xiàn)了所有的音視頻處理,包括音視頻編解碼以及傳輸;PJSIP-UA是INVITE會話的一個高層抽象,該庫也實現(xiàn)了 SIP客戶端的注冊和呼叫轉(zhuǎn)移功能;PJSIP-SIMPLE提供對IM和Presence功能的支持;PJSIP-CORE是PJSIP庫的內(nèi)核,它包含了SIP Endpoint,負責管理應用程序中所有SIP對象、消息的分析、傳輸管理和模塊管理、無狀態(tài)操作等;PJLIB-UTIL提供一些輔助功能,如文本掃描、XML和STUN等;PJLIB是一個平臺抽象的框架庫,它為上層調(diào)用提供一個與操作系統(tǒng)無關的系統(tǒng)服務。
從以上分析可以看出,PJSIP作為基于SIP的一個多媒體通信框架提供了非常清晰的API,實現(xiàn)了SIP、SDP、RTP、STUN、TURN和ICE等功能,同時支持語音、視頻、狀態(tài)呈現(xiàn)和即時通訊等功能,而且編譯后庫文件所占內(nèi)存空間極小,使其非常適合用于Android平臺的VoIP開發(fā)。
2.3 系統(tǒng)總體架構
Android[7]是一種基于Linux的自由及開放源代碼的操作系統(tǒng),自頂向下分成4個層次,即應用層、應用框架層、組件庫層和虛擬機、Linux內(nèi)核層。Android系統(tǒng)的最大優(yōu)點在于只需在應用層做開發(fā)即可,而不需要特別在意下層設計。因此在VoIP開發(fā)過程中,遵循NDK框架開發(fā)規(guī)范,將系統(tǒng)分為4層,如圖2所示。
圖2 VoIP總體框架
其中,JAVA應用層使用JAVA語言開發(fā),完成界面設計以及用戶與系統(tǒng)的交互,通過調(diào)用JNI接口實現(xiàn)VoIP的注冊、語音通話、即時消息收發(fā)、聯(lián)系人管理等功能。JAVA本地接口層是JAVA應用層與PJSIP協(xié)議碼層之間的橋梁,通過JNI定義PJSUA-LIB等函數(shù)的本地接口,使得應用層能夠加載動態(tài)庫so文件,來實現(xiàn)SIP具體功能。PJSIP協(xié)議層主要包含封裝完整的PJSIP協(xié)議棧源碼,通過編譯可以生成動態(tài)庫so文件。內(nèi)核驅(qū)動層一般由驅(qū)動程序的開發(fā)廠商實現(xiàn),包含音頻驅(qū)動、網(wǎng)絡驅(qū)動等相關程序。
系統(tǒng)設計目標是在基于Android的智能手機上利用VoIP實現(xiàn)用戶登錄與注冊、語音通話、即時消息收發(fā)、聯(lián)系人管理等功能。
根據(jù)功能需求,在JAVA應用層中,主要圍繞Android組件進行。其中:
Activity:完成VoIP界面UI顯示;
Intent:主要實現(xiàn)VoIP系統(tǒng)Activity和Activity之間的切換與交互;
Service:完成VoIP系統(tǒng)Activity和后臺之間的聯(lián)系以及進程間的通信;
Content Provider:完成數(shù)據(jù)保存及共享,主要保存參數(shù)設置、用戶狀態(tài)、聯(lián)系人數(shù)據(jù)等信息;
Broadcast:主要完成在VoIP系統(tǒng)內(nèi)信息的廣播,一般會和Content Provider結(jié)合,如當數(shù)據(jù)改變時,則攜帶信息發(fā)送廣播,當所有已注冊的廣播接收器接收到內(nèi)容之后進行解析并進行相應操作。
需要說明的是,PJSIP協(xié)議層為底層C函數(shù),這些C函數(shù)編譯生成so庫,由JAVA層通過JNI調(diào)用。為方便Android調(diào)用,又將JAVA層的SIP服務進一步封裝成Android中的標準service,進而實現(xiàn)Android層對PJSIP的調(diào)用,實現(xiàn)語音與短信的通信傳輸。
下面結(jié)合PJSIP協(xié)議底層函數(shù),重點針對語音通信實現(xiàn)及即時消息收發(fā)流程介紹其功能實現(xiàn)。
3.1 語音通信實現(xiàn)
VoIP系統(tǒng)的語音通話實現(xiàn)主要包括三個步驟:語音采集與播放、壓縮與編碼和打包與傳輸。在利用PJSIP協(xié)議進行語音通話設計時,主要利用PJMEDIA和PJMEDIA-CODEC相關函數(shù)實現(xiàn)語音的處理與傳輸。
當用戶在VoIP界面撥號呼叫后,系統(tǒng)通過Android service中的方法調(diào)用,利用JNI進入PjSipService中的 makecall函數(shù),進而最終調(diào)用 pjsua. call_make_call()建立通話。
當通話建立后,發(fā)送端Android智能手機從MIC獲取語音信號,并通過conference bridge與Codec連接,Codec根據(jù)選擇的編碼方式進行encode,接著,編碼過的Payload加上RTP Header與UDP Header封裝成UDP語音包。
接收端,當收到UDP語音包后,首先將UDP Header和RTP Header拿掉,接著放到jitter buffer內(nèi)暫存,由Codec依據(jù)兩端協(xié)商好的編解碼算法進行解碼,并由conference bridge將解碼出的語音信號通過sound裝置播放出來。語音信號的發(fā)送與接收如圖3所示。
圖3 VoIP語音信號處理流程
在語音通話過程中,jitter buffer的作用是對媒體流進行緩沖,從而處理由于網(wǎng)絡原因而造成的抖動和丟包現(xiàn)象。經(jīng)過jitter buffer處理的媒體流被Codec編解碼處理后,由conference bridge進行參數(shù)調(diào)整,如時鐘速率、聲道等,隨之由音頻設備端口進入音頻設備,由播放器Speaker播放出語音。
3.2 即時消息收發(fā)的實現(xiàn)
即時消息收發(fā)也是VoIP的基本功能之一,SIP利用一個擴展的請求消息來實現(xiàn)即時消息機制,在其請求消息體中攜帶即時消息內(nèi)容。SIP的即時消息機制通常采用類似于尋呼器的工作模式,在這個模式里,每一條即時消息發(fā)送和接收都是一個單獨過程,與其它消息的處理沒有必然的上下文聯(lián)系。PJSIP中的PJSIP-SIMPLE提供了對即時消息通信的支持,本系統(tǒng)使用該模塊實現(xiàn)即時消息收發(fā)。
發(fā)送端,當用戶在VoIP界面點擊短信發(fā)送后,系統(tǒng)Activity組件調(diào)用Android service,進入SipService中的消息發(fā)送方法,從而利用JNI進入PjSip Service中的sendMessage()函數(shù),在該函數(shù)內(nèi)部進一步調(diào)用 pjsua.im_send(),即最終通過調(diào)用pjsua. im_send()函數(shù)完成消息發(fā)送。即時消息發(fā)送流程如圖4所示。
圖4 VoIP即時消息發(fā)送流程
其中,pjsua.im_send()函數(shù)定義如下:PJ_DEF
(pj_status_t)pjsua_im_send(pjsua_acc_idconst pj_tr_t*to,const pj_tr_t*mime_type,const pj_tr_t*content,const pjsua_msg_data*msg_data,void*user_data)
參數(shù)acc_id是發(fā)送消息的賬戶ID;to為路由地址,包含用戶名和下一跳路由地址,格式一般是<sip:用戶名@IP地址:端口>,端口為空,則默認使用 5060;mime_type是消息的互聯(lián)網(wǎng)媒體類型;content是消息的內(nèi)容;msg_data是在消息頭部中要添加的頭域列表,可選;user_data是用戶數(shù)據(jù),可選。
接收端,可以利用pager2()函數(shù)來實現(xiàn)信息接收,其參數(shù)不再贅述。
FreeSwitch是一個功能強大的VoIP開源軟交換機,以軟件形式提供了完善的專用交換機功能,兼容多種主流協(xié)議,包括SIP、H.323等,可實現(xiàn)撥號通信、會議電話、互動式語音應答、語音信箱、會話記錄等業(yè)務功能[8]。在Windows Server 2008操作系統(tǒng)中利用FreeSwitch 1.6版本構建服務器,分別在三臺Android版本為4.0.3、4.2.1和6.0的智能手機上安裝VoIP系統(tǒng),并進行聯(lián)網(wǎng)測試,在WIFI及3G/4G網(wǎng)絡下三臺手機之間均可進行正常語音與即時消息通信,系統(tǒng)運行穩(wěn)定,達到了預期設計目標。
利用PJSIP開源協(xié)議設計實現(xiàn)了基于Android的VoIP系統(tǒng),并重點分析了PJSIP實現(xiàn)語音通信和即時消息收發(fā)的工作流程,為后續(xù)在此基礎上實現(xiàn)語音與即時消息加密打下了良好基礎。實驗證明該系統(tǒng)性能穩(wěn)定、運行可靠,在此基礎上豐富離線消息收發(fā)、通話加密等功能,將進一步拓展其實用性。
[1]Infonetics Research raises VoLTE forecast.Over-the-top mobile VoIP subscribers nearing 1 billion mark(2013) [EB/OL].http://www.infonetics.com/pr/2013/MobileVoIPServices-and-Subscribers-Market-Highlights.asp.
[2]Kantar Worldpanel ComTech.Smartphone OS sales market share[EB/OL].http://www.kantarworldpanel.com/global/smartphone-os-market-share.
[3]文松松.基于SIP協(xié)議的語音對講系統(tǒng)的設計與實現(xiàn)[D].成都:西南交通大學,2013. Wen Songsong.Design and implementation ofvoice intercom systembased on SIP protocol[D].Chengdu:Southwest JiaotongUniversity,2013.
[4]Rosenberg J,Schulzrinne H,Camarillo G,et al.SIP:Session Initiation Protocol[S].RFC3261,IETF,2002.
[5]凌小榮.基于SIP網(wǎng)絡音視頻通信的研究與實現(xiàn) [D].廣州:華南理工大學,2014. Ling Xiaorong.Research and implementation of Internet audio/video communication based on SIP[D].Guangzhou:South China UniversityofTechnology,2014.
[6]Benny Prijono.PJSIP-Open Source SIP Stack[EB/OL]. http://www.pisip.org.
[7]王冉.基于Android的多媒體及相關技術的研究與應用[D].北京:北京郵電大學,2013. Wang Ran.Research and implementation of multimedia technologybased on Android[D].Beijing:BeijingUniversity ofPosts and Telecommunications,2013.
[8]FreeSwitch[EB/OL].https://freeswitch.org.
Design and Implementation of VoIP Based on Android Platform
Du Qicai1,Deng Chenggang2,Liu Ying3,Lin Jiayu4
(1.Special Operations Academy,Guangzhou 510500,China;2.Guangdong Zhongke Research Institute of Civil-military Integration Industry,Guangzhou 510070,China;3.School of Electronic Science and Engineering,Changsha 410073,China; 4.Changsha Xinxi Digital Technology Co.,Ltd.,Changsha 410073,China)
As the rapid development of the mobile communication and embedded systems,Voice over Internet Protocol(VoIP)on smart mobile devices has become increasingly popular among individuals, business organizations and governments.For the smart mobile devices,the Android OS,which has been attracted by customers and manufactures due to its openness and flexibility,has occupied the absolute dominant position on the global market.So,it has wide market prospect to design and implement the VoIP based on Android platform.This paper introduces the architecture of PJSIP stack,analyzes the communication flow of voice and instant message,uses Android system as a running platform,and realizes the system of voice call in the Internet.After testing this system through the open source server FreeSwitch,it can run on smart phones using different variations of Android,and also support stable voice call and instant message transmission in 3G,4G and WIFI network.The result shows that it has good functionality and stability.
VoIP system;Android platform;PJSIP stack;Smart phones;Voice communication;Instant message
10.3969/j.issn.1002-2279.2017.02.010
TP393
A
1002-2279-(2017)02-0041-04
廣東省科技裝備動員項目《軍用智能手機端到端保密通信系統(tǒng)》
杜奇才(1981-),男,山東省滕州市人,碩士研究生,講師,主研方向:偵察裝備技術、信息與通信技術。
2016-08-31