位元組跳動《實時音視頻通訊技術》學習筆記之RTC概述及技術簡介
什么是實時音視頻
實時音視頻(RTC)即基于IP技術實作的實時互動的音視頻通信技術,
RTC 與 直播常用協議的區別
| 直播協議 | 播放延遲 |
|---|---|
| FLV | 3s-5s |
| RTMP | 3s-5s |
| HLS | 10s+ |
而這里我們要使用的RTC技術就厲害了~
它是基于IP技術的,它的延遲低于400ms,RTC傳輸的內容是音視頻資料,
實時音視頻應用場景
-
音視頻通話
-
產品功能
1V1,多人音視頻通話
可以美顏、使用道具等等,
-
技術特點
支持設備差異性大
網路接入經常切換
-
因為這種產品主要是面向用戶的,不同用戶使用的設備的差別比較大,根據不同設備需要做不同的優化,這就是為什么我們說支持設備差異性大,
而在實際情況中,經常遇到移動網路4G、5G切換WIFI,或者基站之間的切換,這些導致網路環境的變化需要中斷重連,
下面介紹兩種場景:抖音直播和直播連麥,
-
抖音直播
- 產品功能Ⅰ
- 電商直播
- 游戲直播
- 秀場直播
- 技術特點Ⅰ
- 主播段推流
- 觀眾端CDN拉流
- 產品功能Ⅰ
-
直播連麥
- 產品功能Ⅱ
- 多個主播同框互動,觀眾圍觀實況
- K歌、游戲互動、互動交流
- 技術特點Ⅱ
- 服務端&客戶端合流
- 合流轉推
- 實時審核
- 產品功能Ⅱ
直播連麥將多個主播的視頻流合流然后發送給觀眾,這種合流一般是在服務端做的,但是現在由于客戶端的性能不斷提高,現在出現了將合流放在客戶端的情況,這樣節約了成本,
我們都知道傳統直播技術的延遲比較高,從觀眾評論到看到主播反饋一般要5-10秒以上,那么這樣在教育直播、電商直播、體育直播等直播就會出現一些問題,
前面我們提到RTC能夠實作低延遲的實時傳輸音視頻流,那么RTC可以應用在直播場景嗎?
答案是是,因為只要我們將基于TCP的網路傳輸協議轉化為基于UDP的RTC就行了,
那為什么我們不一開始就使用RTC呢?
第一因為成本,CDN的成本是RTC的三分之一,RTC的部署是比較消耗資源的,
第二是因為RTC是需要做很多網路的優化的,比較復雜,
普通直播替換為低延時直播的方案
方案Ⅰ
拉流端(播放端)替換為RTC:收益大,
因為觀眾端的延時比較大,所以一般是從觀眾端替換為RTC,
方案Ⅱ
推流端(主播端)替換為RTC:收益中,
因為主播網路環境一般還不錯,所以不優先考慮主播端,
RTC應用場景:在線教育
-
一對一教育
- 產品功能
- 1V1 教學
- 白板、課件
- 云端錄制
- 監課
- 技術特點
- 課件同步
- 音視頻通話類似
- 可能需要跨國
要求和音視頻通話一樣,需要及時反饋,需要低延遲,跨國一對一可能物理距離較遠,導致延遲可能較高,
- 產品功能
-
大班課
-
產品功能
- 萬人課堂
- 白板、課件
- 云端錄制
- 監課
-
技術特點
- 1人發布
- 課件同步
-
大班課技術難度比1V1教育低,因為一般情況下只是老師一個人推流,不存在過多互動,總的來看,大班課互動性較差,學習體驗可能不是很好,
于是,小班課就產生了,它有較強的互動性,但是其難度最大,比1v1教育難度要高,因為每個人網路環境不一樣,需要給不同用戶下發不同碼率的視頻,
- 小班課
- 產品功能
- 多人互動
- 白板、課件
- 云端錄制
- 監課
- 技術特點
- 多人發布與訂閱
- 課件同步
- 產品功能
RTC使用場景:視頻會議
- 飛書視頻會議
- 產品功能
- 百(千)人視頻互動
- 螢屏共享
- 檔案分享
- PSTN接入
- 背景虛化,美顏…
- 技術特點
- 多人音視頻互動
- 接入設備多樣性
- 音頻降噪
- 弱網優化
- AI能力
- 產品功能
總體來說,視頻會議的技術難度較大,對音頻降噪的要求比較高,同時存在PSTN接入的情況,
RTC使用場景:游戲
- 游戲對戰
- 產品功能
- 小隊語音
- 范圍語音
- 技術特點
- 低延遲、低耗能、流量小
- 范圍語音
- 產品功能
因為游戲比較耗計算機資源和網路資源,又要求低延遲,所以需要達到低延遲、低耗能、流量小,
-
云游戲
-
產品功能
- 游戲運行在服務端
- 客戶端渲染、控制
-
技術特點
- 超低延遲
- 海量控制指令
-
這樣即使設備性能不高也能實作嘗試高性能的游戲,適用于大型游戲和游戲試玩,
因為需要良好的游戲體驗,就需要超低延遲,而且因為我們RTC可以傳輸海量的控制指令,所以可以用于云游戲,
實時音視頻技術概覽
RTC系統架構圖
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mdM5WUue-1628759852766)(https://raw.githubusercontent.com/ReganYue/ForPicGo/main/20210808095728.png)]](https://img.uj5u.com/2021/08/15/256633150938251.png)
信令是一些控制指令,信令服務器可以用于呼叫、協調,
合流轉推等等這些操作是后處理服務器來完成的,
客戶端是音視頻通話的終端,我們來看看客戶端整體技術架構,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JjfvZEt8-1628759852774)(https://raw.githubusercontent.com/ReganYue/ForPicGo/main/20210808100125.png)]](https://img.uj5u.com/2021/08/15/256633150938252.png)
QoS是保證在弱網的情況下仍然能夠使用,
事件上報是因為任何的日志都需要上傳,可以處理錯誤和進行性能優化、演算法改進,
- 全平臺支持
- 設備適配
- 性能適配
- 連接保持
- 斷網重連
- 多徑傳輸
- 資料運營
- 事件上報
- 日志收集
低性能的設備使用低性能的演算法,
同時支持WIFI、4G就需要實作多徑傳輸,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8SEuAv4l-1628759852780)(https://raw.githubusercontent.com/ReganYue/ForPicGo/main/20210808110542.png)]](https://img.uj5u.com/2021/08/15/256633150938253.png)
采集到音視頻等資料需要進行編碼壓縮然后通過網路傳輸,然后解碼播放,
信令服務器
信令:為使網路中各種設備協調運作,在設備之間傳遞的控制資訊,
信令服務器:就是用來傳輸、中專信令的服務器,
- 常見問題
- 全球化部署
- 信令到達率
- 連接保持
- 實作方案
- WebSocket
- 自定義協議
媒體服務器
媒體服務器:在終端用戶之間中轉音視頻流,進而讓用戶之間可以進行音視頻通信,通常部署在邊緣,距離用戶較近的地方,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WNPGxuaN-1628759852784)(https://raw.githubusercontent.com/ReganYue/ForPicGo/main/20210808111117.png)]](https://img.uj5u.com/2021/08/15/256633150938254.png)
Simulcast&SVC是根據不同用戶的網路狀況提供不同碼率、幀率的視頻,
BWE&擁塞控制是用來估計用戶的可用帶寬,來判斷給用戶發送多大碼率的碼流,
下面來看看幾種媒體服務器的典型架構:
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-z19awFBE-1628759852787)(https://raw.githubusercontent.com/ReganYue/ForPicGo/main/20210808114700.png)]](https://img.uj5u.com/2021/08/15/256633150938255.png)
后處理
- 音視頻錄制
- 合流轉推
- 截圖、切片
- 審核
還有什么?
- 資料運營
- 質量評估
- QoS
- 自動化測驗
- 應用場景探索
需要資料才能優化,視頻是否清晰,音頻是否悅耳這就需要質量評估,
自動化測驗和質量評估也是比較重要的,
去探索新的應用場景也是非常重要的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293822.html
標籤:其他
上一篇:【Unity3D讀取資料】(四)Excel檔案操作(創建、讀取、寫入、修改)
下一篇:Python小游戲——反恐精英和
