1. 程式人生 > >移動端視訊通話軟體----sip----開源軟體----阿冬專欄

移動端視訊通話軟體----sip----開源軟體----阿冬專欄

最新要做一個移動端視訊通話軟體,大致看了下現有的開源軟體

一) 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秒左右。 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
關於linphone百度文庫裡有個很詳細的介紹, 這個是老牌的sip,支援平臺廣泛 windows, mac,ios,android,linux,技術會比較成熟。但是據玩過的同事說linphone在Android上的bug有點多,由於其程式碼實在龐大,所以我暫時放棄考慮Linphone.不過如果誰有跨平臺的需要,可以考慮Linphone或者imsdroid和下面的webrtc.。。。好像現在開源軟體都跨平臺了。。。 五) webrtc imsdroid,csipsimple,linphone都想法設法呼叫webrtc的音訊技術,本人也測試過Android端的webrtc內網視訊通話,效果比較滿意。但是要把webrtc做成一個移動端的IM軟體的話還有一些路要走,不過webrtc基本技術都已經有了,包括p2p傳輸,音視訊codec,音訊處理技術。不過其因為目前僅支援VP8的視訊編碼格式(QQ也是)想做高清視訊通話的要注意了。VP8在移動端的硬體編解碼支援的平臺沒幾個(RK可以支援VP8硬體編解碼)。不過webrtc程式碼裡看到可以使用外部codec,這個還是有希望調到H264的。 總結:sipdroid比較輕量級,著重基於java開發(音訊codec除外),由於其音視訊編碼以及P2P傳輸這一塊略顯不足,不太好做定製化開發和優化。imsdroid,遺憾就是直接呼叫webrtc的庫,而最近webrtc更新的比較頻繁,開發比較活躍。如果要自己在imsdroid上更新webrtc擔心相容性問題,希望imsdroid可以直接把需要的webrtc相關原始碼包進去。csipsimple的話,都是圍繞pjsip的,webrtc等都是以pjsip外掛形式擴充的,類似gstreamer. webrtc如果有技術實力的開發公司個人還是覺得可以選擇這個來做,一個是google的原因,一個是其視訊通話相關關鍵技術都比較成熟的原因。個人覺得如果能做出來,效果會不錯的。