天天看點

技術分析| WebRTC開源伺服器商業化過程中遇到的問題及挑戰

WebRTC及其發展前景

WebRTC,名稱源自網頁即時通信(Web Real-Time Communication)的縮寫,是一個支援網頁浏覽器進行實時語音通話或視訊通話的API,旨在建立一個網際網路浏覽器間的實時通信的平台。它于2011年6月1日開源并在Google、Mozilla、Opera支援下被納入網際網路聯盟的W3C推薦标準。WebRTC官網的介紹如下:

技術分析| WebRTC開源伺服器商業化過程中遇到的問題及挑戰

WebRTC是一個免費的開源項目,它通過簡單的API為浏覽器和移動應用程式提供實時通信(RTC)功能。

WebRTC雖然冠以“web”之名,但并不受限于傳統網際網路應用或浏覽器的終端運作環境。實際上無論終端運作環境是浏覽器、桌面應用、移動裝置(Android或iOS)還是IoT裝置,隻要IP連接配接可到達且符合WebRTC規範就可以互通。這一點釋放了大量智能終端(或運作在智能終端上的app)的實時通信能力,打開了許多對于實時互動性要求較高的應用場景的想象空間,譬如線上教育、視訊會議、視訊社交、遠端協助、遠端操控等等都是其合适的應用領域。WebRTC也當之無愧的變成了目前實時音視訊領域内的寵兒。

社群中的WebRTC開源伺服器

WebRTC作為目前實時音視訊領域的寵兒,開源社群對WebRTC伺服器的支援也很多,下面是幾個比較出名的開源項目:

· Jitsi:開源的視訊會議平台,對标zoom,googlemeeting包括Jitsi Videobridge(媒體中繼),Jitsi Meet(會議web用戶端),Jicofo(Jitsi Conference Focus),Jigasi(Jitsi Gateway to SIP)

· Kurento:它是功能比較強大的一個多媒體處理架構,支援WebRTC協定棧。它可以作為Media server,背景有轉碼的能力,并且有OpenCV處理能力, 不僅僅是一個媒體伺服器,且建構了一整套工具包。

· Licode:可以作為WebRTC的輕量通信平台,是純轉發的伺服器處理模式。

· Janus:可以作為WebRTC通信網關,比較輕量。

· Red5Pro:專注于視訊直播和媒體流轉發處理的WebRTC媒體伺服器,支援伺服器端和用戶端SDK開發,支援的編碼方式較多。

· Ant-Media-Server:Ant-Media-Server是從red5pro 克隆出來的開源項目,它目前支援兩個不同的版本:開源版本和企業版本。

· Mediasoup: 一個相對較新且有趣的媒體伺服器,它與其他媒體伺服器的不同之處在于它被設計為一個Library(用于Node),允許它內建到更多的應用程式中。

WebRTC開源伺服器商業化需要踩的坑

開源社群的支援讓開發者可以很快搭建一個基于WebRTC開源伺服器的demo,比如一個視訊會議系統,用開源的項目,搭建的速度很快,搭建完畢在web端就能使用,很容易讓人産生可以快速産品商業化的感覺。一個商業化的産品,從最開始的Demo,到最後的成型商業化運作, 需要踩哪些坑,經曆哪些挑戰呢?

  • 多平台:WebRTC主要是面向web應用的,雖然也能用native開發,但開源社群對手機端的支援幾乎沒有,在安卓或者IOS端,編譯調試WebRTC的工程項目複雜過高,搭建編譯環境時都會遇到很多意想不到的問題,特别是在大陸複雜的網絡環境下。
  • 多使用者&級聯:WebRTC伺服器商用一般都使用SFU組網,大量使用者接入單台伺服器承載能力有限,需要考慮伺服器叢集之間的級聯,音視訊流需要在多台伺服器間級聯,開源伺服器在這塊缺乏整體的伺服器設計和部署方案。
技術分析| WebRTC開源伺服器商業化過程中遇到的問題及挑戰
  • 弱網接入:WebRTC有一套自己的傳輸政策,比如重傳,帶寬監測,動态碼率等,但是我們一但在中間加上一個轉發節點,就做不到完整的端到端傳輸鍊路,WebRTC自有的傳輸政策效果不怎麼好。如何在用戶端和伺服器的上下行鍊路上分别做優化,如何在弱網的情況下盡力保障視訊和音頻的流暢性,有很多難題需要解決。
  • 信令和媒體的分離:如果流媒體服務和信令服務混在一起,伺服器高負載情況下媒體服務會占用非常多的系統資源,将影響到信令服務的正常工作,這兩個服務的職責完全不一樣,應該把服務的每個子產品解藕分離開,每個服務專做一件事,提高伺服器資源使用率。但不幸的是在WebRTC開源伺服器中,它們是耦合在一起的。
  • 單一端口:WebRTC開源伺服器在進行互動通信的時候,每一個音視訊流需要占用一個端口,如果是n路視訊需要n個udp端口,對端口資源造成極大浪費,一些政企、金融等安全要求高的機關會對防火牆多udp端口的開放做限制,實際網際網路運維中多端口也會給運維造成極大的不便,從海量使用者和運維的角度都需要把音視訊流端口改造為單一端口模式。
  • 相容性:視訊和音頻裝置的适配問題,比如如回聲、錄音失敗、攝像頭打不開、螢幕錄制失敗等問題層出不窮,單廠商的蘋果系統,都要考慮iPhone2G到iPhone13這麼多機型和版本的相容性。更别提廠商混戰的安卓,衆多安卓廠商都會在标準的安卓架構上進行定制化,會有層出不窮的相容性問題,調節音量失敗,嘯叫,攝像頭鏡像等等問題。還有各種IoT裝置的相容性适配。
技術分析| WebRTC開源伺服器商業化過程中遇到的問題及挑戰
  • 邊緣接入&排程:之前提到WebRTC缺乏完整的伺服器方案,面對多地多使用者接入的場景,單節點是難以滿足業務要求的,必須要引入多地部署的分布式伺服器方案,這樣就需要考慮多地部署的伺服器之間資料流轉路由,需要一套好的路由算法做支撐。
技術分析| WebRTC開源伺服器商業化過程中遇到的問題及挑戰
  • 可用性/可定位性:為了産品商業化,WebRTC的服務端逐漸演進成了多地多機部署的分布式伺服器架構。如何保證服務的高可用性,如何解決海量并發,如何監控這麼複雜的組網,發生了掉線,卡頓,時延,怎麼去定位問題原因,這些都是複雜的問題。

繼續閱讀