基於 WebRTC 技術的實時通訊服務開發實踐

2021-09-25 23:25:42 字數 1765 閱讀 1395

隨著直播的發展,直播實時互動性變得日益重要。又拍雲在 webrtc 的基礎上,憑藉多年的開發經驗,結合當下實際情況,開發 uprtc 系統,解決了網路延時、併發量大、客戶端解碼能力差等問題。

2023年5月,google 花費6820萬美元收購擁有編譯碼、回聲消除等技術的 gips 公司。之後谷歌開源了 gips 的技術,與相關機構 ietf 和 w3c 制定行業標準,組成了現有的 webrtc 專案。

同時webrtc 並不是乙個孤立的協議,它擁有靈活的信令,可以便捷的對接現有的sip 和**網路的系統。

成立uprtc專案前,又拍雲經過多重調研和考慮,選擇了 webrtc,主要有三個原因:

1. webrtc 是開源、 免專利費的專案, 大大節省了開發時間和成本;

2. webrtc 由 google 主導, 技術非常先進;

3. safari 等瀏覽器以及其他終端逐漸加強對 webrtc 技術的支援。

傳輸層協議:底層傳輸協議為 udp

**協議:srtp / srtcp

資料協議:dtls / sctp

p2p 內網穿透:stun / turn / ice / trickle ice

信令與 sdp 協商:http / websocket / sip、 offer answer 模型

△ 圖1:webrtc內部結構

圖2是 webrtc 涉及到的協議棧,webrtc 核心的協議都是在右側基於 udp 基礎上搭建起來的。

其中,ice、stun、turn 用於內網穿透, 解決了獲取與繫結外網對映位址,以及 keep alive 機制。

dtls 用於對傳輸內容進行加密,可以看做是 udp 版的 tls。由於 webrtc 對安全比較重視,這一層是必須的。

srtp 與 srtcp 是對**資料的封裝與傳輸控制協議。

sctp 是流控制傳輸協議,提供類似 tcp 的特性,sctp 可以基於 udp 上構建,在 webrtc 裡是在 dtls 協議之上。

rtcdatachannel 用來支援端到端的任意二進位制資料傳輸。

△ 圖2:webrtc 協議棧

為了使 webrtc 協議更適用於實時互動直播,又拍雲在 webrtc 協議的基礎上進行改造優化,搭建了又拍雲 uprtc 。支援多種應用場景,包括一對

一、一對多和多對多等應用場景。

因為又拍雲擁有效能優異的 cdn 資源,將 webrtc 改造成伺服器中轉模式之後,採用完全分布式系統,部署到全國所有邊緣節點,通過內部加速網路 utun 加速,將**、併發壓力轉移到服務端,保證 uprtc 終端可以承受更多路併發。

以移動裝置從 wifi 網路切換到 4g 網路為例,又拍雲伺服器可以察覺到頻寬變化,統計丟包和延時,進行動態位元速率調整,保證在弱網環境下也能進行正常通話。

又拍雲設計了一套靈活高效的業務信令,用於敏感信令鑑權。

圖3為 uprtc 技術組成:

**通道、資料通道,信令通道;

資料加密模組;

位元速率自適應控制模組;

又拍雲加速網路;

p2p打洞服務;

房間應用業務;

機械人(自動管理功能和互動功能)。

△ 圖3:uprtc技術組成

雖然 webrtc 源**相對成熟,但是在實際應用中依舊需要解決以下問題:

1.音訊處理過程中消耗 cpu 過高;

3.安卓端 webrtc 原始碼對h.264支援並不全面,僅預設支援高通的晶元;

4.服務端架構過程中需要加入位元速率自適應演算法,動態控制總位元速率頻寬在 2m 以內。

w3c api 相關文件:

ietf 協議相關文件:

can匯流排實時通訊排程技術

下面的討論主要針對主從式。原始的辦法是採用輪詢方式,無法保證系統的確定的時態特性,對通訊的滯後無法 和控制。因此要採取恰當的排程策略。1。通訊資料的實時性 通訊是用來節點之間交換資料,這些資料 1 實時資料 包括週期實時資料和非週期性實時資料 2 非實時資料 資料的實時性是以資料的截止期來表示的,所...

基於WebRTC的直播CDN

4.2 拉流 5 最短回源路徑 6 業務系統 7 一些特性 問題 主要特性 整體上這個系統是乙個典型的cdn結構,主要包含排程系統 cdn源節點和cdn邊緣節點。節點服務列表 服務功能 transfmtd 轉格式服務,主要負責webrtc的rtp流與rtmp流的互轉。janus webrtc流 服務...

WebRTC的擁塞控制技術

對於共享網路資源的各類應用來說,擁塞控制技術的使用有利於提高頻寬利用率,同時也使得終端使用者在使用網路時能夠獲得更好的體驗。在協議層面上擁塞控制是tcp的乙個總要的組成部分 但是對於非面向鏈結的傳輸層協議,如udp,其在協議層面上並沒有對擁塞控制進行強制性的要求,這樣做保證了最優的傳輸效能,且在擁塞...