Android 集成 Agora SDK 快速體驗 RTC 版多人視頻聊天|掘金技術徵文

RTC (Real-Time Communication) 做爲實時通信領域的"新貴",在互動直播、遠程控制、多人視頻會議、屏幕共享等領域廣受好評,若是你還不瞭解 RTC ,Take it easy ,本文將帶你用10分鐘的時間,快速體驗實現一個「多人視頻聊天」需求。前端

沒錯,就是這麼簡單任性。以下簡單看看 Agora SDK 加持下的效果。git

1、WebRTC

相較於 RTC ,更多人瞭解到的應該是 WebRTCWebRTC 屬於 RTC 的一個子集,它先是由谷歌開源,又經歷了 W3C 的更新,才成爲了現在廣爲人知的 WebRTC 1.0github

起初 WebRTC 設計的初衷,只是爲了解決兩個客戶端間鏈接發送媒體數據,也就是所謂的P2P的通訊,因此大多數的狀況下不須要依賴於服務器的中轉,可是隨着業務發展,多對多的廣播也開始被支持。後端

可是 WebRTC 的名稱容易讓人產生了誤解,不少時候你們一直認爲WebRTC 只使用於瀏覽器上,而事實上 WebRTC 的一個特徵就是本地和Web應用間的交互 ,而Web應用不是侷限於前端頁面,更多指代後端程序。瀏覽器

而實現一套 WebRTC 通常須要歸納爲三個步驟:服務器

  • 獲取本地音視頻數據
  • 與服務器創建連接,實現數據傳輸
  • 定義數據協議用於各個客戶端間同步數據

因此只需完成了以上三個特徵,按照 WebRTC 協議實現代碼,AndroidRTC 是能夠有的,而 Github 上也有很多「原生」級別的 Android Web RTC 項目,可是在投入使用的過程彙總, WebRTC 中仍存在一些難點:markdown

  • 1.音視頻數據量較大,須要針對網絡抖動實現必定的緩衝策略
  • 2.針對出現的丟包丟幀的重傳策略
  • 3.多設備上音視頻的編解碼支持策略

同時,在 Android 上實現一個能達到商用的 AndroidRTC 產品,客戶端上你至少須要優秀的 C++OpenGLFFMEPG 等技術,而且在服務端維護房號、推流、長連接等服務,這對於小團隊公司明顯不現實,那麼如何知足產品需求呢?這就是後續的 Agora SDK 的業務範疇了。網絡

2、聲網 Agora SDK

4行代碼,30分鐘,在應用內構建 視頻通話、語音通話、互動直播等產品需求。oop

在體驗了 Agora SDK 以後,不得不說我是被驚豔到了,如同官方宣稱通常,雖然不止4行代碼,可是實實在在的30分鐘內 ,完整實現了多人視頻通話的需求,如下是我將 Demo 編譯出來的 Apk 二維碼,不過由於測試 AppId 限制,因此你們還請省着用哈。post

具體使用方法在權限容許以後,使用兩臺手機設置一個房間名,點擊廣播模式進入便可。

回到主題,在集成 Agora SDK 的過程也是十分順利的,本質上的步驟就是:

  • 一、添加依賴
  • 二、調用初始化
  • 三、添加本機本地顯示窗體
  • 四、建立或加入一個頻道
  • 五、接受用戶加入,顯示對方畫面

每一個步驟並不繁瑣,其中主要在於你須要本身實現窗體的組合顯示,而官方的 Demo 經過 RecyclerView 的封裝就是很好的參考,更多集成可直接參閱 官方集成教程

同時在對於 SDK 的源碼翻閱後,對於開發者頭疼的攝像頭,網絡鏈接,針繪製,音視頻同步 等功能都被封裝到 agora-rtc-sdk-jni.so 裏,全部的操做都是經過 JNI native 接口操做,在性能和保密上也獲得了進一步的提高,同時你只須要調用對應的接口來實現所需功能,不過目前每一個so庫默認大小在12M左右,因此適當配置 NDK 過濾仍是必須的。

在體驗過程過程當中,也發現了相似麥克風自激等問題依舊存在,不過這也屬於雞蛋挑骨頭了,要知道官方還提供了美顏、變聲、混音、加密、通話錄製等等功能,而且以下圖所示,管理後臺連數據統計也包羅萬象。

最後,Agora SDK 支持 AndroidIOSWindowMacWeb,甚至還支持了 React-NativeFlutter ,因此對於有 RTC 需求的用戶,必須強烈推薦 Agora SDK 有木有。

那麼問題來了,這麼優秀的SDK,它收費嗎?

不收費是不可能的,這輩子都不可能的,畢竟後臺服務都提供了,關鍵在於價格和前期體驗,我的體驗下來只有兩個字:【優秀】 !因此不廢話,一切以下圖連接走起。


Agora SDK 使用體驗徵文大賽 | 掘金技術徵文,徵文活動正在進行中

相關文章
相關標籤/搜索