在本文章中筆者主要針對關于WebRTC服務器的背景加以解釋,然后WebRTC的WebRTC的視頻會議處理方式進行討論,最后針對目前市場上幾個主流的開源WebRTC媒體服務器進行逐一介紹,包括它們的功能介紹和技術架構以及其各自的優(yōu)缺點加以說明,希望讀者在選擇開源WebRTC 媒體服務器時能夠做出自己一個合理的選擇。
1、關于WebRTC媒體服務器的定義/MCU/SFU
WebRTC技術最初的使用架構是點對點的(瀏覽器之間的)通信,這也是其非常強大的一個優(yōu)勢,用戶無需安裝任何第三方插件自己和對端進行通信。但是,隨著技術本身的不斷發(fā)展和業(yè)務場景的復雜程度越來越高,用戶場景中就需要一個WebRTC服務器端,媒體服務器或者WebRTC網(wǎng)關來進行媒體,信令管理或者轉換處理。因此,市場上逐漸出現(xiàn)了各種針對WebRTC應用場景發(fā)布的一些開源的WebRTC服務器端開源項目。
另外,根據(jù)視頻會議是WebRTC的主要賣點,因此關于WebRTC的處理方式,很多開源媒體服務器的架構有有所不同,有的服務器端支持MCU方式,有的支持SFU方式,還有的WebRTC服務器支持混合方式。
根據(jù)很多數(shù)據(jù)說明,在瀏覽器和云平臺或者大容量的部署中,很多集成商選擇了SFU模式,以便能夠充分拓展,降低服務器的處理負載。當然,也有用戶選擇MCU的方式可以非常方便集中控制其服務器處理流程。兩種方式各有其優(yōu)缺點,這取決于用戶使用場景和自己的集成方式。
圖片來自于互聯(lián)網(wǎng)資源
除了基于WebRTC的視頻會議以外,WebRTC媒體服務器還可以支持各種流媒體的推送服務和直播等場景,還有和SIP對接集成的功能。因此,很多時候,WebRTC服務器端也可以作為一個WebRTC網(wǎng)關來使用,實現(xiàn)和傳統(tǒng)PSTN電話系統(tǒng)的集成對接,實現(xiàn)信令轉換處理。例如,通過Asterisk/WebRTC/SIP/FXO呼入呼出等場景。
下面,筆者逐一簡單介紹目前市場上最熱門的十大開源媒體服務器的功能和其各自特點,為用戶在WebRTC開發(fā)和項目集成時提供一個指導和參考。
說明,因為很多開源項目不斷在更新過程中,或者筆者理解有誤,讀者最好親自查看官方最新技術動態(tài)做進一步核實。這里的指導意見僅是筆者一家之言。
2、Jitsi開源視頻會議
Jitsi 平臺是非;钴S的開源視頻會議平臺,其對標的視頻會議產(chǎn)品是zoom,Google meet等視頻會議平臺。其視頻會議功能意見非常完善,包括終端,服務器端,會議橋和錄像,屏幕共享,即時消息,SIP網(wǎng)關接入/電話入會等功能。如果讀者不熟悉的話,可以參考關于Jitsi視頻會議安裝的文檔來進一步學習。
其基本特點:
- 功能完整,文檔齊全,技術支持完善,提供很多自定義的接口,快速部署,SFU, 開發(fā)語言(java, lua)
- 非常龐大,安裝的服務和界面管理系統(tǒng)配置文件比較多,源代碼安裝相對比較復雜。
3、Kurento 媒體服務器
Kurento 媒體服務器是真正的完整的多功能套件的媒體服務器,它不僅僅提供媒體服務器的功能,同時提供了很多的工具(臉部識別接口,二維碼接口,對象追蹤等比較新的識別技術),用戶可以和第三方平臺集成,同時可以支持非常靈活的媒體流自定義處理方式。它可以在一個實例中設置為MCU方式或者MCU方式。
其特點是:
功能靈活(流媒體廣播,編碼轉換,),豐富的開發(fā)工具,靈活的媒體流處理流程, 開發(fā)語言(java),支持多種視頻編碼
文檔齊全, 但是,社區(qū)互動不多,主要通過郵件列表。
4、’Mediasoup
mediasoup是相對比較新的一個WebRTC服務器端的開源項目。它更多是通過集成包方式和其他應用服務器來集成。它支持SFU模式,主要支持視頻聊天,媒體流廣播等。
技術架構如下:
其特點是:
- 通過底層API實現(xiàn)和第三方集成,安裝簡單,文檔齊全
- 技術支持相對較弱,功能支持比較單一。
5、Janus
Janus是比較早期的WebRTC 服務器端的開源項目,官方對其定義是一個WebRTC服務器端,支持的功能比較豐富,通過core模塊來支持不同的插件的方式。開發(fā)語言(C語言),代碼架構比較清晰,支持了SIP 接口(補丁后的sofia)。
其特點是:
- 通過強大的core模塊實現(xiàn)對插件的拓展,支持SFU模式,客戶端集成相對比較簡單
- 團隊相對比較小,社區(qū)支持較弱
6、Licode
Licode是一個開源的WebRTC通信平臺,提供了服務器端和客戶端完整的產(chǎn)品配套。它支持視頻會議,用戶房間管理等非常靈活的功能,支持MCU模式。目前沒有看到界面管理系統(tǒng)發(fā)布。
其特點是:
- 安裝配置相對比較簡單,專注于視頻會議,房間功能開發(fā)相對比較靈活,完全WebRTC支持
- 社區(qū)支持較弱,視頻會議拓展方式實現(xiàn),目前沒有看到無SIP接口
7、red5pro
Red5 Pro專注于視頻直播和媒體流轉發(fā)處理的WebRTC媒體服務器,支持服務器端和客戶端SDK開發(fā),支持的編碼方式比較多。
其特點是:
- 流媒體直播功能比較豐富,支持多種客戶端
- 文檔和社區(qū)支持相對較弱
8、Ant-媒體服務器
Ant-Media-Server是從red5pro 克隆出來的開源項目,也支持了一個企業(yè)版的項目,它目前支持兩個不同的版本:開源版本和企業(yè)版本。它支持SFU模式,目前支持了比較多的應用功能,并且支持了很多非常靈活的針對拓展功能,帶寬調(diào)整優(yōu)化,低延時等功能。更多應用在視頻直播等場景中。
其特點是:
- 支持拓展方式,支持對各種編碼,環(huán)境進行調(diào)整優(yōu)化,實時錄像支持(MP4和HLS),支持對社交媒體平臺的媒體推送等,企業(yè)版本支持了很多非常實用的功能
- 社區(qū)版本支持的功能有限,企業(yè)版本功能相對比較多,用戶選擇操作困難
9、其他開源第三方WebRTC網(wǎng)關
除了以上幾種獨立的WebRTC媒體服務器以外,比較熱門的基于語言的開源平臺也逐漸發(fā)力,不斷增加對WebRTC能力的支持。其中,Asterisk(SFU)和FreeSWITCH(MCU)都已經(jīng)發(fā)布了多個版本支持WebRTC的視頻會議功能,很多第三方集成商也在其平臺逐漸增加了WebRTC的支持,通過第三方的sip.js 客戶端實現(xiàn)企業(yè)級的視頻會議功能。Kamailio也可以作為一個WebRTC網(wǎng)關服務器端實現(xiàn)WebRTC/SIP之間的信令處理。
還有另外一種方式是使用WebRTC 媒體服務器集成Asterisk或者FreeSWITCH實現(xiàn)WebRTC的呼叫中心,融合通信跨平臺解決方案。
因為,Asterisk和FreeSWITCH都是實現(xiàn)的媒體服務器功能,因此在WebRTC的實現(xiàn)上沒有太多的區(qū)別。因為,本身Asterisk或FreeSWITHC可以支持SIP/PSTN,這兩個媒體服務器和WebRTC平臺集成相對更加簡單,這里不再討論。關于PSTN和WebRTC的集成呼叫流程,讀者可以參考:
10、總結
筆者介紹了關于WebRTC的媒體服務器的背景,同時結合目前市場上最流行的十大WebRTC媒體服務器端或網(wǎng)關服務器的技術,針對每個項目的不同特點做了一個簡單概要。以上這些服務器端本身都有各自的特點和開發(fā)的目標,因此有一些服務器端不一定完全能夠滿足用戶自己的需求,用戶需要根據(jù)其特性和自己的場景來加以取舍,最終需要用戶根據(jù)WebRTC 服務器端的產(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