使用Doubango+FreeSWITCH構(gòu)建視頻會議系統(tǒng)

時(shí)間如梭,就要到給丈母娘送月餅的時(shí)間了。
記錄一下上半年主要折騰的東東,使用傳統(tǒng)的VoIP方案提供手機(jī)實(shí)時(shí)音視頻聊天通訊SDK。
服務(wù)器做混流轉(zhuǎn)發(fā),相比網(wǎng)狀模型,減少了手機(jī)客戶端帶寬和性能方面的壓力,服務(wù)器混完后的媒體流還可以分發(fā)到RTMP CDN,這樣其它觀眾可以通過CDN拉流。
前后端都是用開源的項(xiàng)目,挺想?yún)⑴c到自研的視頻會議系統(tǒng)的研發(fā)中,但是xxx,基本是我和另外一個(gè)同事在整。

服務(wù)端

OpenSIPS 1.11.x 負(fù)載均衡 + FreeSWITCH 1.6.x
閱讀官方wiki和自帶的sammple配置文件,官方wiki并沒有及時(shí)更新,有些不清楚的通過搜索下源碼基本能猜出來。
OpenSIPS dispatcher分發(fā)注冊,load_balancer分發(fā)呼叫,可以參考Tutorials-LoadBalancing
一開始面對 opensips.cfg route 腳本挺懵逼的,通過調(diào)試看xlog打印日志慢慢知道了個(gè)大概,也通過dialog解決了呼叫同一個(gè)會議號碼能夠保證分發(fā)到同一個(gè)FS服務(wù)器節(jié)點(diǎn)。
除了官方wiki外,下面的資料十分好:

  • 杜金房老師的《FreeSWITCH權(quán)威指南》,非常受用,詳讀了2遍。FS mod_av 模塊也是杜老師貢獻(xiàn)的,我大概看了下,對于LibAV的使用mod_av還有可以優(yōu)化的地方。
  • 余洪涌老師的《百問FreeSwitch》
  • 老黑老師的《使用OpenSER構(gòu)建電話通信系統(tǒng)》
  • RFC文檔 3261 2327 等都有中文翻譯版本

客戶端

基于 iOS idoubs 和 Android imsdroid 基礎(chǔ)上修改和優(yōu)化。
Doubango 這個(gè)框架官方基本不維護(hù)了,Github 上面也掛了很多issue沒有解決,所以慢慢填這些坑。
框架實(shí)現(xiàn)的很好,用ANSI C寫出了面向?qū)ο筇茁罚K化,很值得學(xué)習(xí)。
把GPUImage拿過來,加了美顏效果,增加更多的分辨率輸出,iOS OC層是用MRC的,有個(gè)引用計(jì)數(shù)crash查了n久,有些問題idoubs已經(jīng)解決了并沒有同步到imsdroid中等等。
卡頓花屏挺嚴(yán)重,修改了重傳和碼率自適應(yīng)代碼,還是會有花屏卡頓現(xiàn)象,待優(yōu)化。

計(jì)劃

  • 繼續(xù)優(yōu)化Doubango客戶端
  • 嘗試其它開源客戶端linphone,pjsip等
  • 嘗試WebRTC使用sip信令跟FreeSWITCH搭配
  • 嘗試WebRTC + licode
  • 體驗(yàn)其它公司實(shí)時(shí)通訊SDK
  • 傳統(tǒng)CDN廠家已經(jīng)開始在研發(fā)WebRTC服務(wù)器
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容