天天看點

IM比較SipDroid/IMSDroid/CSipsimple/Linphone/Webrtc

一) sipdroid

1)架構

sip協定棧使用JAVA實作,音頻Codec使用skype的silk(Silk編解碼是Skype向第三方開發人員和硬體制造商提供免版稅認證(RF)的Silk寬帶音頻編碼器)實作。NAT傳輸支援stun server.

2)優缺點:

NAT方面隻支援STUN,無ICE架構,如需要完全實作P2P視訊通話需要實作符合ICE标準的用戶端,音頻方面沒看到AEC等技術,視訊方面還不是太完善,目前隻看到調用的是系統自帶的MediaRecorder,并沒有自己的第三方音視訊編解碼庫。

3)實際測試:

基于sipdroid架構的話,我們要做的工作會比較多,(ICE支援,添加回音消除,NetEQ等gips音頻技術,添加視訊硬體編解碼codec.),是以就不做測試了。

二) imsdroid

1)架構:

基于doubango(Doubango 是一個基于3GPP IMS/RCS 并能用于嵌入式和桌面系統的開源架構。該架構使用ANSCI-C編寫,具有很好的可移植性。并且已經被設計成非常輕便且能有效的工作在低記憶體和低處理能力的嵌入式系統上。蘋果系統上的idoubs功能就是基于此架構編寫) .音視訊編碼格式大部分都支援(H264(video),VP8(video),iLBC(audio),PCMA,PCMU,G722,G729)。NAT支援ICE(stun+turn)

2)效果實測

測試環境:公司區域網路内兩台機器互通,伺服器走外網sip2sip

第一次測試:音頻品質可以,但是AEC打開了還是有點回音(應該可以修複)。視訊馬賽克比較嚴重,延遲1秒左右。

第二次測試:音頻品質可以,基本無回音,視訊無馬賽克,基本無延遲(低于1秒)。

3)優缺點

imsdroid目前來說還是算比較全面的,包括音視訊編解碼,傳輸(RTSP,ICE),音頻處理技術等都有涉獵。doubango使用了webrtc的AEC技術,但是其調用webrtc部分沒有開源,是用的編譯出來的webrtc的庫。如果要改善音頻的話不太友善,Demo的音視訊效果還可以

三)csipsimple

1)sip協定棧用的是pjsip,音視訊編解碼用到的第三方庫有ffmpeg(video),silk(audio),webrtc.預設使用了webrtc的回聲算法。支援ICE協定。

2)優缺點:

csipsimple架構比較清晰,sip協定由C實作,java通過JNI調用,SIP協定這一塊會比較高效。其VOIP各個功能也都具備,包括NAT傳輸,音視訊編解碼。并且該項目跟進新技術比較快,官方活躍程度也比較高。如果做二次開發可以推薦這個。

3)實測效果

測試環境:公司區域網路内兩台機器互通,伺服器走外網sip2sip

音頻品質可以,無明顯回音,視訊需要下插件,馬賽克比imsdroid更嚴重。

四)Linphone

這個是老牌的sip,支援平台廣泛 windows, mac,ios,android,linux,技術會比較成熟。但是據玩過的同僚說linphone在Android上的bug有點多,由于其代碼實在龐大,是以我暫時放棄考慮Linphone.不過如果誰有跨平台的需要,可以考慮Linphone或者imsdroid和下面的webrtc.。。。好像現在開源軟體都跨平台了。。。

五) webrtc

繼續閱讀