
在本文章中筆者主要針對關(guān)于WebRTC服務(wù)器的背景加以解釋,然后WebRTC的WebRTC的視頻會議處理方式進(jìn)行討論,最后針對目前市場上幾個(gè)主流的開源WebRTC媒體服務(wù)器進(jìn)行逐一介紹,包括它們的功能介紹和技術(shù)架構(gòu)以及其各自的優(yōu)缺點(diǎn)加以說明,希望讀者在選擇開源WebRTC 媒體服務(wù)器時(shí)能夠做出自己一個(gè)合理的選擇。
1、關(guān)于WebRTC媒體服務(wù)器的定義/MCU/SFU
WebRTC技術(shù)最初的使用架構(gòu)是點(diǎn)對點(diǎn)的(瀏覽器之間的)通信,這也是其非常強(qiáng)大的一個(gè)優(yōu)勢,用戶無需安裝任何第三方插件自己和對端進(jìn)行通信。但是,隨著技術(shù)本身的不斷發(fā)展和業(yè)務(wù)場景的復(fù)雜程度越來越高,用戶場景中就需要一個(gè)WebRTC服務(wù)器端,媒體服務(wù)器或者WebRTC網(wǎng)關(guān)來進(jìn)行媒體,信令管理或者轉(zhuǎn)換處理。因此,市場上逐漸出現(xiàn)了各種針對WebRTC應(yīng)用場景發(fā)布的一些開源的WebRTC服務(wù)器端開源項(xiàng)目。

另外,根據(jù)視頻會議是WebRTC的主要賣點(diǎn),因此關(guān)于WebRTC的處理方式,很多開源媒體服務(wù)器的架構(gòu)有有所不同,有的服務(wù)器端支持MCU方式,有的支持SFU方式,還有的WebRTC服務(wù)器支持混合方式。


根據(jù)很多數(shù)據(jù)說明,在瀏覽器和云平臺或者大容量的部署中,很多集成商選擇了SFU模式,以便能夠充分拓展,降低服務(wù)器的處理負(fù)載。當(dāng)然,也有用戶選擇MCU的方式可以非常方便集中控制其服務(wù)器處理流程。兩種方式各有其優(yōu)缺點(diǎn),這取決于用戶使用場景和自己的集成方式。

圖片來自于互聯(lián)網(wǎng)資源
除了基于WebRTC的視頻會議以外,WebRTC媒體服務(wù)器還可以支持各種流媒體的推送服務(wù)和直播等場景,還有和SIP對接集成的功能。因此,很多時(shí)候,WebRTC服務(wù)器端也可以作為一個(gè)WebRTC網(wǎng)關(guān)來使用,實(shí)現(xiàn)和傳統(tǒng)PSTN電話系統(tǒng)的集成對接,實(shí)現(xiàn)信令轉(zhuǎn)換處理。例如,通過Asterisk/WebRTC/SIP/FXO呼入呼出等場景。

下面,筆者逐一簡單介紹目前市場上最熱門的十大開源媒體服務(wù)器的功能和其各自特點(diǎn),為用戶在WebRTC開發(fā)和項(xiàng)目集成時(shí)提供一個(gè)指導(dǎo)和參考。
說明,因?yàn)楹芏嚅_源項(xiàng)目不斷在更新過程中,或者筆者理解有誤,讀者最好親自查看官方最新技術(shù)動態(tài)做進(jìn)一步核實(shí)。這里的指導(dǎo)意見僅是筆者一家之言。
2、Jitsi開源視頻會議
Jitsi 平臺是非;钴S的開源視頻會議平臺,其對標(biāo)的視頻會議產(chǎn)品是zoom,Google meet等視頻會議平臺。其視頻會議功能意見非常完善,包括終端,服務(wù)器端,會議橋和錄像,屏幕共享,即時(shí)消息,SIP網(wǎng)關(guān)接入/電話入會等功能。如果讀者不熟悉的話,可以參考關(guān)于Jitsi視頻會議安裝的文檔來進(jìn)一步學(xué)習(xí)。


其基本特點(diǎn):
- 功能完整,文檔齊全,技術(shù)支持完善,提供很多自定義的接口,快速部署,SFU, 開發(fā)語言(java, lua)
- 非常龐大,安裝的服務(wù)和界面管理系統(tǒng)配置文件比較多,源代碼安裝相對比較復(fù)雜。
3、Kurento 媒體服務(wù)器
Kurento 媒體服務(wù)器是真正的完整的多功能套件的媒體服務(wù)器,它不僅僅提供媒體服務(wù)器的功能,同時(shí)提供了很多的工具(臉部識別接口,二維碼接口,對象追蹤等比較新的識別技術(shù)),用戶可以和第三方平臺集成,同時(shí)可以支持非常靈活的媒體流自定義處理方式。它可以在一個(gè)實(shí)例中設(shè)置為MCU方式或者M(jìn)CU方式。

其特點(diǎn)是:
功能靈活(流媒體廣播,編碼轉(zhuǎn)換,),豐富的開發(fā)工具,靈活的媒體流處理流程, 開發(fā)語言(java),支持多種視頻編碼
文檔齊全, 但是,社區(qū)互動不多,主要通過郵件列表。
4、’Mediasoup
mediasoup是相對比較新的一個(gè)WebRTC服務(wù)器端的開源項(xiàng)目。它更多是通過集成包方式和其他應(yīng)用服務(wù)器來集成。它支持SFU模式,主要支持視頻聊天,媒體流廣播等。

技術(shù)架構(gòu)如下:

其特點(diǎn)是:
- 通過底層API實(shí)現(xiàn)和第三方集成,安裝簡單,文檔齊全
- 技術(shù)支持相對較弱,功能支持比較單一。
5、Janus
Janus是比較早期的WebRTC 服務(wù)器端的開源項(xiàng)目,官方對其定義是一個(gè)WebRTC服務(wù)器端,支持的功能比較豐富,通過core模塊來支持不同的插件的方式。開發(fā)語言(C語言),代碼架構(gòu)比較清晰,支持了SIP 接口(補(bǔ)丁后的sofia)。

其特點(diǎn)是:
- 通過強(qiáng)大的core模塊實(shí)現(xiàn)對插件的拓展,支持SFU模式,客戶端集成相對比較簡單
- 團(tuán)隊(duì)相對比較小,社區(qū)支持較弱
6、Licode
Licode是一個(gè)開源的WebRTC通信平臺,提供了服務(wù)器端和客戶端完整的產(chǎn)品配套。它支持視頻會議,用戶房間管理等非常靈活的功能,支持MCU模式。目前沒有看到界面管理系統(tǒng)發(fā)布。

其特點(diǎn)是:
- 安裝配置相對比較簡單,專注于視頻會議,房間功能開發(fā)相對比較靈活,完全WebRTC支持
- 社區(qū)支持較弱,視頻會議拓展方式實(shí)現(xiàn),目前沒有看到無SIP接口
7、red5pro
Red5 Pro專注于視頻直播和媒體流轉(zhuǎn)發(fā)處理的WebRTC媒體服務(wù)器,支持服務(wù)器端和客戶端SDK開發(fā),支持的編碼方式比較多。

其特點(diǎn)是:
- 流媒體直播功能比較豐富,支持多種客戶端
- 文檔和社區(qū)支持相對較弱
8、Ant-媒體服務(wù)器
Ant-Media-Server是從red5pro 克隆出來的開源項(xiàng)目,也支持了一個(gè)企業(yè)版的項(xiàng)目,它目前支持兩個(gè)不同的版本:開源版本和企業(yè)版本。它支持SFU模式,目前支持了比較多的應(yīng)用功能,并且支持了很多非常靈活的針對拓展功能,帶寬調(diào)整優(yōu)化,低延時(shí)等功能。更多應(yīng)用在視頻直播等場景中。

其特點(diǎn)是:
- 支持拓展方式,支持對各種編碼,環(huán)境進(jìn)行調(diào)整優(yōu)化,實(shí)時(shí)錄像支持(MP4和HLS),支持對社交媒體平臺的媒體推送等,企業(yè)版本支持了很多非常實(shí)用的功能
- 社區(qū)版本支持的功能有限,企業(yè)版本功能相對比較多,用戶選擇操作困難
9、其他開源第三方WebRTC網(wǎng)關(guān)
除了以上幾種獨(dú)立的WebRTC媒體服務(wù)器以外,比較熱門的基于語言的開源平臺也逐漸發(fā)力,不斷增加對WebRTC能力的支持。其中,Asterisk(SFU)和FreeSWITCH(MCU)都已經(jīng)發(fā)布了多個(gè)版本支持WebRTC的視頻會議功能,很多第三方集成商也在其平臺逐漸增加了WebRTC的支持,通過第三方的sip.js 客戶端實(shí)現(xiàn)企業(yè)級的視頻會議功能。Kamailio也可以作為一個(gè)WebRTC網(wǎng)關(guān)服務(wù)器端實(shí)現(xiàn)WebRTC/SIP之間的信令處理。

還有另外一種方式是使用WebRTC 媒體服務(wù)器集成Asterisk或者FreeSWITCH實(shí)現(xiàn)WebRTC的呼叫中心,融合通信跨平臺解決方案。

因?yàn),Asterisk和FreeSWITCH都是實(shí)現(xiàn)的媒體服務(wù)器功能,因此在WebRTC的實(shí)現(xiàn)上沒有太多的區(qū)別。因?yàn),本身Asterisk或FreeSWITHC可以支持SIP/PSTN,這兩個(gè)媒體服務(wù)器和WebRTC平臺集成相對更加簡單,這里不再討論。關(guān)于PSTN和WebRTC的集成呼叫流程,讀者可以參考:
10、總結(jié)
筆者介紹了關(guān)于WebRTC的媒體服務(wù)器的背景,同時(shí)結(jié)合目前市場上最流行的十大WebRTC媒體服務(wù)器端或網(wǎng)關(guān)服務(wù)器的技術(shù),針對每個(gè)項(xiàng)目的不同特點(diǎn)做了一個(gè)簡單概要。以上這些服務(wù)器端本身都有各自的特點(diǎn)和開發(fā)的目標(biāo),因此有一些服務(wù)器端不一定完全能夠滿足用戶自己的需求,用戶需要根據(jù)其特性和自己的場景來加以取舍,最終需要用戶根據(jù)WebRTC 服務(wù)器端的產(chǎn)品定位,功能,支持能力和自己的需求來決定。
參考資料:
www.asterisk.org.cn
https://github.com/Red5/red5-server
https://github.com/ant-media/Ant-Media-Server/wiki
https://github.com/lynckia/licode
www.jitsi.org.cn
http://www.kamailio.org/events/2016-KamailioWorld/Day1/10-Lorenzo.Miniero-Janus-WebRTC-SIP-Gateway.pdf
http://www.kamailio.org/events/2014-KamailioWorld/day2/14-Anton.Roman.Portabales-WebRTC-Signaling.pdf