十大必知開源WebRTC服務器

十大必知開源WebRTC服務器

2020-06-01 09:31:54   作者:james.zhu    來源:Asterisk開源派   評論:0  點擊:16080


  WebRTC是一個非常新的技術,很多用戶仍然在初步摸索階段。有一些用戶是不清楚WebRTC的用戶場景,不知道WebRTC究竟可以使用在哪些應用場景中。因此,很多用戶針對WebRTC產品的選擇或者和WebRTC的集成存在很多不同的看法或者對新技術的擔心。如果讀者對WebRTC技術和應用場景缺乏瞭解的話,讀者可以查閱筆者的歷史文章: 完整WebRTC技術及應用概要,此文章針對WebRTC技術和應用場景做了比較完整的介紹。今天,筆者不打算針對這些技術問題做其他詳解。筆者主要討論目前市場上WebRTC主要針對語音和視頻相關的開源的WebRTC媒體服務器或引擎的功能概述和其特點。
  在本文章中筆者主要針對關於WebRTC服務器的背景加以解釋,然後WebRTC的WebRTC的視頻會議處理方式進行討論,最後針對目前市場上幾個主流的開源WebRTC媒體服務器進行逐一介紹,包括它們的功能介紹和技術架構以及其各自的優缺點加以說明,希望讀者在選擇開源WebRTC 媒體服務器時能夠做出自己一個合理的選擇。
  1、關於WebRTC媒體服務器的定義/MCU/SFU
  WebRTC技術最初的使用架構是點對點的(瀏覽器之間的)通信,這也是其非常強大的一個優勢,用戶無需安裝任何第三方插件自己和對端進行通信。但是,隨着技術本身的不斷髮展和業務場景的複雜程度越來越高,用戶場景中就需要一個WebRTC服務器端,媒體服務器或者WebRTC網關來進行媒體,信令管理或者轉換處理。因此,市場上逐漸出現了各種針對WebRTC應用場景發佈的一些開源的WebRTC服務器端開源項目。
  另外,根據視頻會議是WebRTC的主要賣點,因此關於WebRTC的處理方式,很多開源媒體服務器的架構有有所不同,有的服務器端支持MCU方式,有的支持SFU方式,還有的WebRTC服務器支持混合方式。

  根據很多數據說明,在瀏覽器和雲平臺或者大容量的部署中,很多集成商選擇了SFU模式,以便能夠充分拓展,降低服務器的處理負載。當然,也有用戶選擇MCU的方式可以非常方便集中控制其服務器處理流程。兩種方式各有其優缺點,這取決於用戶使用場景和自己的集成方式。
  圖片來自於互聯網資源
  除了基於WebRTC的視頻會議以外,WebRTC媒體服務器還可以支持各種流媒體的推送服務和直播等場景,還有和SIP對接集成的功能。因此,很多時候,WebRTC服務器端也可以作爲一個WebRTC網關來使用,實現和傳統PSTN電話系統的集成對接,實現信令轉換處理。例如,通過Asterisk/WebRTC/SIP/FXO呼入呼出等場景。
  下面,筆者逐一簡單介紹目前市場上最熱門的十大開源媒體服務器的功能和其各自特點,爲用戶在WebRTC開發和項目集成時提供一個指導和參考。
  說明,因爲很多開源項目不斷在更新過程中,或者筆者理解有誤,讀者最好親自查看官方最新技術動態做進一步覈實。這裏的指導意見僅是筆者一家之言。
  2、Jitsi開源視頻會議
  Jitsi 平臺是非常活躍的開源視頻會議平臺,其對標的視頻會議產品是zoom,Google meet等視頻會議平臺。其視頻會議功能意見非常完善,包括終端,服務器端,會議橋和錄像,屏幕共享,即時消息,SIP網關接入/電話入會等功能。如果讀者不熟悉的話,可以參考關於Jitsi視頻會議安裝的文檔來進一步學習。

  其基本特點:
  • 功能完整,文檔齊全,技術支持完善,提供很多自定義的接口,快速部署,SFU, 開發語言(java, lua)
  • 非常龐大,安裝的服務和界面管理系統配置文件比較多,源代碼安裝相對比較複雜。
  3、Kurento 媒體服務器
  Kurento 媒體服務器是真正的完整的多功能套件的媒體服務器,它不僅僅提供媒體服務器的功能,同時提供了很多的工具(臉部識別接口,二維碼接口,對象追蹤等比較新的識別技術),用戶可以和第三方平臺集成,同時可以支持非常靈活的媒體流自定義處理方式。它可以在一個實例中設置爲MCU方式或者MCU方式。
  其特點是:
  功能靈活(流媒體廣播,編碼轉換,),豐富的開發工具,靈活的媒體流處理流程, 開發語言(java),支持多種視頻編碼
  文檔齊全, 但是,社區互動不多,主要通過郵件列表。
  4、’Mediasoup
  mediasoup是相對比較新的一個WebRTC服務器端的開源項目。它更多是通過集成包方式和其他應用服務器來集成。它支持SFU模式,主要支持視頻聊天,媒體流廣播等。
  技術架構如下:
  其特點是:
  • 通過底層API實現和第三方集成,安裝簡單,文檔齊全
  • 技術支持相對較弱,功能支持比較單一。
  5、Janus
  Janus是比較早期的WebRTC 服務器端的開源項目,官方對其定義是一個WebRTC服務器端,支持的功能比較豐富,通過core模塊來支持不同的插件的方式。開發語言(C語言),代碼架構比較清晰,支持了SIP 接口(補丁後的sofia)。
  其特點是:
  • 通過強大的core模塊實現對插件的拓展,支持SFU模式,客戶端集成相對比較簡單
  • 團隊相對比較小,社區支持較弱
  6、Licode
  Licode是一個開源的WebRTC通信平臺,提供了服務器端和客戶端完整的產品配套。它支持視頻會議,用戶房間管理等非常靈活的功能,支持MCU模式。目前沒有看到界面管理系統發佈。
  其特點是:
  • 安裝配置相對比較簡單,專注於視頻會議,房間功能開發相對比較靈活,完全WebRTC支持
  • 社區支持較弱,視頻會議拓展方式實現,目前沒有看到無SIP接口
  7、red5pro
  Red5 Pro專注於視頻直播和媒體流轉發處理的WebRTC媒體服務器,支持服務器端和客戶端SDK開發,支持的編碼方式比較多。
  其特點是:
  • 流媒體直播功能比較豐富,支持多種客戶端
  • 文檔和社區支持相對較弱
  8、Ant-媒體服務器
  Ant-Media-Server是從red5pro 克隆出來的開源項目,也支持了一個企業版的項目,它目前支持兩個不同的版本:開源版本和企業版本。它支持SFU模式,目前支持了比較多的應用功能,並且支持了很多非常靈活的針對拓展功能,帶寬調整優化,低延時等功能。更多應用在視頻直播等場景中。
  其特點是:
  • 支持拓展方式,支持對各種編碼,環境進行調整優化,實時錄像支持(MP4和HLS),支持對社交媒體平臺的媒體推送等,企業版本支持了很多非常實用的功能
  • 社區版本支持的功能有限,企業版本功能相對比較多,用戶選擇操作困難
  9、其他開源第三方WebRTC網關
  除了以上幾種獨立的WebRTC媒體服務器以外,比較熱門的基於語言的開源平臺也逐漸發力,不斷增加對WebRTC能力的支持。其中,Asterisk(SFU)和FreeSWITCH(MCU)都已經發布了多個版本支持WebRTC的視頻會議功能,很多第三方集成商也在其平臺逐漸增加了WebRTC的支持,通過第三方的sip.js 客戶端實現企業級的視頻會議功能。Kamailio也可以作爲一個WebRTC網關服務器端實現WebRTC/SIP之間的信令處理。
  還有另外一種方式是使用WebRTC 媒體服務器集成Asterisk或者FreeSWITCH實現WebRTC的呼叫中心,融合通信跨平臺解決方案。
  因爲,Asterisk和FreeSWITCH都是實現的媒體服務器功能,因此在WebRTC的實現上沒有太多的區別。因爲,本身Asterisk或FreeSWITHC可以支持SIP/PSTN,這兩個媒體服務器和WebRTC平臺集成相對更加簡單,這裏不再討論。關於PSTN和WebRTC的集成呼叫流程,讀者可以參考:
  10、總結
  筆者介紹了關於WebRTC的媒體服務器的背景,同時結合目前市場上最流行的十大WebRTC媒體服務器端或網關服務器的技術,針對每個項目的不同特點做了一個簡單概要。以上這些服務器端本身都有各自的特點和開發的目標,因此有一些服務器端不一定完全能夠滿足用戶自己的需求,用戶需要根據其特性和自己的場景來加以取捨,最終需要用戶根據WebRTC 服務器端的產品定位,功能,支持能力和自己的需求來決定。
  參考資料:
  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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章