在本文中,我們將使用 Janus WebRTC 伺服器和 SFU 建立一個視訊通話應用程式
我們還將了解 Metered.ca SFU 以及為什麼它是比 Janus Server 更好的選擇
Janus 是一個開源、通用的 WebRTC SFU 伺服器。它是一個模組化網關,透過處理複雜的 WebRTC 協定來促進即時通訊應用程序,並為媒體交換提供穩定的伺服器
模組化架構: Janus 有一個基於插件的系統,其中每個插件都有一些特定的功能。這種模組化允許定制和擴展
協定處理:Janus 管理建立 webrtc 連線所需的訊號和協商。
互通性: Janus 支援媒體編解碼器,並相容於不同的客戶端和瀏覽器,因此 Janus 具有廣泛的兼容性
可擴充性:Janus 旨在高效處理多個連接,可在特定地理區域內進行擴充。 (也就是說,如果所有使用 Janus 的使用者都在一個小地理區域內,它就會正常運作)
SFU 或選擇性轉發單元是一種媒體伺服器架構,用於 WebRTC 應用程式中,以在不同媒體參與者之間有效路由媒體串流
SFU 接收來自每個參與者的傳入視訊串流,然後根據請求選擇性地將串流轉發給其他參與者。
即每位參與者接收參與者請求的流,同時所有參與者將其流推送到 SFU
可擴展性:SFU 可以處理大量連接,因為 SFU 不涉及編碼和解碼等計算密集型任務,而只是將流轉發給用戶
低延遲: SFU 轉送流而不進行處理,從而實現低延遲。但如果您的用戶遍布世界各地,您需要一個全球分散式 SFU 服務,例如 metered.ca cloud sou
頻寬最佳化
靈活性和控制:參與者對於他們想要接收的內容有更大的靈活性,例如,如果他們只想接收音訊或接收選定參與者的視訊串流,那他們可以選擇這樣做
成本效率:由於與 MCU 相比,SFU 需要更少的處理,雲端上較小的實例可以為您工作
保持媒體質量: SFU 保持媒體質量,因為它們不對媒體流進行任何處理,只是將流轉發給請求的參與者。
更輕鬆實現進階功能
提高可靠性:伺服器上無需處理媒體,因此故障點更少。 SFU 還可以叢集化以實現冗餘,從而確保即使一台伺服器遇到任何問題,服務仍然可用。
將 Janus SFU 整合到您的應用程式中涉及以下步驟。以下是在您的應用程式中實施 Janus 的逐步過程。
系統準備
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
您可以輕鬆地在 ubuntu 或 Debian 上安裝這些依賴項
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
下載並建構 Janus
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway
sh autogen.sh
配置 Janus
編輯設定檔
啟用所需的外掛程式
設定 SSL 憑證
產生 SSL 憑證
更新設定
啟動 Janus 伺服器
./configure --prefix=/opt/janus
驗證操作
設定開發環境
選擇前端框架
包含 WebRTC 函式庫
建立訊號伺服器
建立或加入視訊室
處理本地媒體串流
make sudo make install sudo make configs
將本機串流附加到 HTML 中的影片元素以向使用者播放串流
5.發佈到 Janus
使用 RTCPeerConnection 建立 SDP 報價
使用 API 將報價發送給 Janus
接收來自Janus的SDP應答並將其設定為遠端描述
6.訂閱遠端串流
處理加入訊息和活動訊息以收聽其他會議參與者的通知
為訂閱者建立對等連接,即為每個遠端參與者建立一個新的 RTCPeerConnection
處理遠端串流,取得遠端串流並將其附加到 HTML 視訊元素以在使用者 Web 瀏覽器上播放視訊
實作事件監聽器和處理程序
Metered Global Cloud SFU 是 Metered.ca 推出的基於雲端的選擇性轉送單元
借助 Metered SFU,開發人員可以建立任何類型的應用程序,包括視訊、音訊和資料傳輸
計量 SFU 使用本機 WebRTC API 和 HTTP 運行,無需任何專有 SDK。
使用者也會依照地理位置自動路由到最近的 SFU
多個 SFU 使用高速互連在全球範圍內相互連接,確保盡可能低的延遲
全球分佈:
平台獨立性
靈活的發布訂閱模式:
可擴充性
成本效率:
建立連線
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
b.發送本地 SDP 報價
c.接收SFU遠端SDP
d.連線已建立
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
發布曲目
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
b.產生並發送 SDP 報價
將更新的 SDP 報價發送給 SFU
接收並設定 SFU 對 SDP 的回應
訂閱曲目
向 SFU 要求曲目訂閱
可擴充性
媒體分佈
大規模串流媒體
平台獨立性
靈活的發布訂閱模式
成本效率
全球SFU網路:
部署與維護
計量 SFU:
兩面神
可擴充性和效能
計量 SFU
兩面神
成本結構
計量 SFU
兩面神
靈活性與功能
計量 SFU
兩面神
易於整合
計量 SFU
計量 TURN 伺服器
API: 使用強大的 API 進行 TURN 伺服器管理。您可以執行以下操作:透過 API 新增/刪除憑證、透過 API 檢索每個使用者/憑證和使用者指標、透過 API 啟用/停用憑證、透過 API 按日期檢索使用資料。
全球地理位置定位:自動將流量定向到最近的伺服器,以實現盡可能低的延遲和最高的品質效能。全球任何地方的延遲均低於 50 毫秒
全球所有地區的伺服器:多倫多、邁阿密、舊金山、阿姆斯特丹、倫敦、法蘭克福、班加羅爾、新加坡、雪梨、首爾、達拉斯、紐約
低延遲: 低於 50 毫秒的延遲,在世界任何地方。
經濟高效:即用即付定價,並提供頻寬和批量折扣。
輕鬆管理: 取得使用日誌、帳戶達到門檻限制時的電子郵件、帳單記錄以及電子郵件和電話支援。
符合標準: 符合 UDP、TCP、TLS 和 DTLS 的 RFC 5389、5769、5780、5766、6062、6156、5245、5768、6336、92536、9252536、92536、92536。
多租用戶: 建立多個憑證並依客戶或不同應用程式分開使用。取得使用日誌、計費記錄和閾值警報。
企業可靠性: SLA 正常運作時間達 99.999%。
企業規模: 不限制併發流量或總流量。計量 TURN 伺服器提供企業可擴充性
每月 5 GB 免費: 透過免費方案每月獲得 5 GB 免費 TURN 伺服器使用量
在連接埠 80 和 443 上運作
支援 TURNS SSL 以允許透過深度封包偵測防火牆進行連線。
同時支援 TCP 和 UDP
免費無限制 STUN
以上是Janus WebRTC 伺服器和 SFU:即時視訊通話應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!