Android平臺下基于Wi―Fi的可視化VoIP通話(huà)系統設計
我們將客戶(hù)端軟件架構分成了UI層、Engine層、SIP層和網(wǎng)絡(luò )傳輸層4個(gè)部分,各層主要實(shí)現的功能如下:
①UI層。主要負責界面顯示模塊和界面事件的傳遞。
②Engine層。這一層是軟件的核心處理層,它啟動(dòng)各種服務(wù)、初始化軟件參數、處理各種UI事件、維持配置文件信息和保存全局屬性變量。其中包括UserAgenProfile(用戶(hù)配置文件屬性),UserAgent(用戶(hù)事件處理),VoIPEngine(核心處理中所有的UI事件、參數設計、服務(wù)
的啟動(dòng)都由此文件調度),以及RegisterAgent(注冊服務(wù)處理)。
③SIP層。提供所有的SIP消息模型,所有SIP消息的處理流程,包括發(fā)送、接收、封裝、解碼等等。
④網(wǎng)絡(luò )傳輸層。提供音頻、視頻信息的處理,此模塊對音頻、視頻進(jìn)行即時(shí)編解碼,同時(shí)發(fā)送數據。
3.2 客戶(hù)端軟件主要功能模塊的實(shí)現
3.2.1 通話(huà)功能模塊的實(shí)現
通話(huà)功能是系統的核心模塊,該模塊負責實(shí)現通話(huà)的整個(gè)流程,包括了注冊服務(wù)器、會(huì )話(huà)的發(fā)起和接收以及會(huì )話(huà)的結束。通話(huà)模塊的流程如圖3所示。
本文引用地址:http://dyxdggzs.com/article/153444.htm
首先,客戶(hù)端軟件進(jìn)行系統資源以及配置文件的初始化。初始化工作完成后,從主線(xiàn)程里創(chuàng )建一個(gè)SIP消息監聽(tīng)線(xiàn)程。該線(xiàn)程用來(lái)監聽(tīng)和處理SIP消息,創(chuàng )建子線(xiàn)程成功后,主線(xiàn)程向服務(wù)器發(fā)起注冊請求,待客戶(hù)端注冊成功后即可發(fā)起和接收會(huì )話(huà)進(jìn)行語(yǔ)音、視頻通信,會(huì )話(huà)結束后,伴隨著(zhù)Activity的結束。在此過(guò)程中,主線(xiàn)程發(fā)出了一個(gè)結束信號給SIP消息監聽(tīng)線(xiàn)程,SIP消息監聽(tīng)線(xiàn)程收到這個(gè)結束信號后調用finish()方法退出,等待用戶(hù)的下一次呼叫操作。
3.2.2 媒體流管理模塊的實(shí)現
在本系統中,媒體流管理模塊用來(lái)實(shí)現通話(huà)過(guò)程中音視頻的實(shí)時(shí)采集、編碼和播放功能,為了便于系統的調用,設計中實(shí)現了幾個(gè)主要的功能函數StartMediaStream()、StopMediaStream()、InitMediaChannel(),分別完成開(kāi)啟音視頻操作、關(guān)閉音視頻操作、媒體流通道的初始化。為了具體實(shí)現媒體流的管理功能,系統需要向下調用RTP/RTCP庫、音視頻編解碼、采集播放等接口。使用RTP/RTCP協(xié)議是目前解決流媒體實(shí)時(shí)傳輸問(wèn)題的最好辦法,RTP負責流媒體數據的發(fā)送和接收,而RTCP負責提供數據分發(fā)質(zhì)量反饋信息。
對于編解碼庫的加載,系統中采用了JNI技術(shù)實(shí)現了底層C/C++與上層Java的通信,具體的函數語(yǔ)句如下:
static{
System.loadLibrary(“Mediacodec”);
}
其中,Mediacodec是視頻編解碼動(dòng)態(tài)鏈接庫的名稱(chēng),源文件為Mediacodec.so,通過(guò)以上方法,我們實(shí)現了底層和上層應用之間的通信。
4 封裝與測試
為了能夠在Android操作系統的智能手機和平板電腦上面方便地移植和使用該系統,在實(shí)現了各模塊的功能后,還需將上面所有的模塊進(jìn)行封裝。Android SDK本身就提供了一些很有用的工具。由于本文的重點(diǎn)環(huán)節不在于Android SDK上,所以我們采用集成開(kāi)發(fā)工具——集成在Eclipse中的ADT插件來(lái)對整個(gè)系統進(jìn)行封裝。在工程libs(如果不存在則新建)目錄下新建一個(gè)名為armeabi的目錄,將Eclipse中編譯生成的.so庫文件放到該目錄下。ADT在封裝資源時(shí)會(huì )自動(dòng)將該庫文件封裝到apk文件中,apk是Android手機操作系統中應用程序的封裝形式,在所有Android平臺中均能使用。將封裝后的apk包安裝到Android手機、PDA或虛擬機中。
系統測試環(huán)境由OpenSIPS服務(wù)器和安裝有可視化VoIP通話(huà)軟件的移動(dòng)終端組成。測試結果表明,系統運行穩定,性能良好,通話(huà)過(guò)程中無(wú)明顯回音,圖像清晰流暢,語(yǔ)音和視頻能夠保持同步。由于本系統運行在局域網(wǎng)內,通話(huà)延遲基本為零,充分滿(mǎn)足了可視化VoIP通話(huà)系統的要求。
結語(yǔ)
本文中所設計的可視化VoIP通話(huà)系統屬于無(wú)線(xiàn)局域網(wǎng)領(lǐng)域的應用。系統在無(wú)線(xiàn)局域網(wǎng)內具有信令處理穩定、通話(huà)無(wú)時(shí)延、視頻清晰流暢、語(yǔ)音視頻同步性高等優(yōu)點(diǎn),在實(shí)際應用中具有潛在的市場(chǎng)價(jià)值。但本系統仍然有許多的不足之處,比如說(shuō)信令不夠完善、服務(wù)過(guò)于單一等缺點(diǎn)。
c++相關(guān)文章:c++教程
評論