天天看點

IMSDroid開源VOIP用戶端研究

支援視訊的開源SIP用戶端不多,IMSDroid看起來不錯,準備研究下。(另外還有SIPDroid和linphone了,SIPDroid好像不支援視訊,linphone怎麼樣? )。

有幾個問題考慮:

1) IMSDroid的架構,哪些部分使用C/C++實作,及資料流?

2) 編解碼是否可以使用硬體編碼器?

3) 回聲抑制問題?

4) 網絡傳輸NAT問題?

下載下傳源碼,源碼目錄下有個android-ngn-stack.pdf文檔介紹了軟體的基本組成,一共有三層:

1) IMSDroid: 用戶端界面

2) android-ngn-stack: 對doubangovoip架構的一個java層封裝 。android-ngn-stack主要是為開發者在Android平台上開發VoIP應用提供軟體棧(stack), 它為上層應用提供三種級别的接口:Low, Medium和High。Low最靈活,但是調用最複雜。android-ngn-stack包含一個org.doubango.tinyWRAP包,提供對底層doubangovoip的JNI調用。tinyWRAP.so是對底層doubango的封裝。

3) doubangovoip:C/C++(?)實作的VoIP功能的庫,包括以下庫:

[html]  view plain copy

  1. tinySAK (Swiss Army Knife): Utilities functions (SHA-1, MD5, HMAC, String, List, Timers, Thread, Mutex, Semaphore, ...)  
  2. tinyNET: Networking (DNS, DHCPv4/v6, STUN, TURN, ICE, ENUM, Sockets, ...)  
  3. tinyHTTP: HTTP stack (CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT, TRACE, ...)  
  4. tinyXCAP: XCAP stack (AUID manager, URL generator) without XML parser (See Java code for parsers)  
  5. tinyIPSec: IPSec SA manager. Useless for Android but you MUST have it  
  6. tinySMS: SMS over IP (SM-TL, SM-RL) for IMS/LTE networks  
  7. tinySIGCOMP: Signaling Compression  
  8. tinySDP: SDP protocol  
  9. tinyRTP: RTP/RTCP protocols  
  10. tinyMSRP: MSRP protocol (Chat and File Transfer)  
  11. tinyMEDIA: Media plugins manager (Audio, video, Codecs, sessions, MSRP, QoS, ...)  
  12. tinyDAV(Doubango Audio Video): Media plugins implementation  
  13. tinySIP: SIP/IMS stack  

下面是IMSDroid最新版本的特征:

IMSDroid v2.x preview is now available for developers

The source code is under  branches/2.0  and depends and  doubango v2.x

New features: 

- The SIP/IMS Stack is 7 times faster

- NGN (Next Generation Network) stack for developers ( android-ngn-stack )

- Better audio quality (Adaptive jitter buffer, noise suppression, automatic resampling, gain control, ...)

- Better video quality (low latency, low cpu usage, ...)

- VP8 video codec

- Multi-line

- MSRP chat

- Fix many issues

繼續閱讀