RTC (Real-Time Communication) 作為實時通訊領域的"新貴",在互動直播、遠端控制、多人視訊會議、螢幕共享等領域廣受好評,如果你還不瞭解 RTC ,Take it easy ,本文將帶你用10分鐘的時間,快速體驗實現一個“多人視訊聊天”需求。
沒錯,就是這麼簡單任性。如下簡單看看 Agora SDK 加持下的效果。
一、WebRTC
相較於 RTC
,更多人瞭解到的應該是 WebRTC
, WebRTC
屬於 RTC
的一個子集,它先是由谷歌開源,又經歷了 W3C 的更新,才成為了如今廣為人知的 WebRTC 1.0
。
起初 WebRTC
設計的初衷,只是為了解決兩個客戶端間連線傳送媒體資料,也就是所謂的P2P的通訊,所以大多數的情況下不需要依賴於伺服器的中轉,但是隨著業務發展,多對多的廣播也開始被支援。
但是 WebRTC
的名稱容易讓人產生了誤解,很多時候大家一直認為WebRTC
只使用於瀏覽器上,而事實上 WebRTC
的一個特徵就是本地和Web應用間的互動 ,而Web應用不是侷限於前端頁面,更多指代後端程式。
而實現一套 WebRTC
一般需要概括為三個步驟:
- 獲取本地音視訊資料
- 與伺服器建立連結,實現資料傳輸
- 定義資料協議用於各個客戶端間同步資料
所以只需完成了以上三個特徵,按照 WebRTC
協議實現程式碼,AndroidRTC
是可以有的,而 Github 上也有不少“原生”級別的 Android Web RTC 專案,但是在投入使用的過程彙總, WebRTC
中仍存在一些難點:
- 1.音視訊資料量較大,需要針對網路抖動實現一定的緩衝策略
- 2.針對出現的丟包丟幀的重傳策略
- 3.多裝置上音視訊的編解碼支援策略
同時,在 Android 上實現一個能達到商用的 AndroidRTC
產品,客戶端上你至少需要優秀的 C++
、OpenGL
、FFMEPG
等技術,並且在服務端維護房號、推流、長連結等服務,這對於小團隊公司明顯不現實,那麼如何滿足產品需求呢?這就是後續的 Agora SDK
的業務範疇了。
二、聲網 Agora SDK
4行程式碼,30分鐘,在應用內構建 視訊通話、語音通話、互動直播等產品需求。
在體驗了 Agora SDK
之後,不得不說我是被驚豔到了,如同官方宣稱一般,雖然不止4行程式碼,但是實實在在的30分鐘內 ,完整實現了多人視訊通話的需求,以下是我將 Demo 編譯出來的 Apk 二維碼,不過因為測試 AppId 限制,所以大家還請省著用哈。
具體使用方法在許可權允許之後,使用兩臺手機設定一個房間名,點選廣播模式進入即可。
回到主題,在整合 Agora SDK 的過程也是十分順利的,本質上的步驟就是:
- 1、新增依賴
- 2、呼叫初始化
- 3、新增本機本地顯示窗體
- 4、建立或加入一個頻道
- 5、接受使用者加入,顯示對方畫面
每個步驟並不繁瑣,其中主要在於你需要自己實現窗體的組合顯示,而官方的 Demo 通過 RecyclerView
的封裝就是很好的參考,更多整合可直接參閱 官方整合教程 。
同時在對於 SDK 的原始碼翻閱後,對於開發者頭疼的攝像頭,網路連線,針繪製,音視訊同步 等功能都被封裝到 agora-rtc-sdk-jni.so
裡,所有的操作都是通過 JNI native
介面操作,在效能和保密上也得到了進一步的提升,同時你只需要呼叫對應的介面來實現所需功能,不過目前每個so庫預設大小在12M左右,所以適當配置 NDK 過濾還是必須的。
在體驗過程過程中,也發現了類似麥克風自激等問題依舊存在,不過這也屬於雞蛋挑骨頭了,要知道官方還提供了美顏、變聲、混音、加密、通話錄製等等功能,並且如下圖所示,管理後臺連資料統計也一應俱全。
最後,Agora SDK 支援 Android
、IOS
、Window
、Mac
、Web
,甚至還支援了 React-Native
和 Flutter
,所以對於有 RTC
需求的使用者,必須強烈推薦 Agora SDK
有木有。
那麼問題來了,這麼優秀的SDK,它收費嗎?
不收費是不可能的,這輩子都不可能的,畢竟後臺服務都提供了,關鍵在於價格和前期體驗,個人體驗下來只有兩個字:【優秀】 !所以不廢話,一切如下圖連結走起。