Android 集成 Agora SDK 快速体验 RTC 版多人视频聊天|掘金技术征文

6,136 阅读4分钟

RTC (Real-Time Communication) 作为实时通讯领域的"新贵",在互动直播、远程控制、多人视频会议、屏幕共享等领域广受好评,如果你还不了解 RTC ,Take it easy ,本文将带你用10分钟的时间,快速体验实现一个“多人视频聊天”需求。

没错,就是这么简单任性。如下简单看看 Agora SDK 加持下的效果。

一、WebRTC

相较于 RTC ,更多人了解到的应该是 WebRTCWebRTC 属于 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++OpenGLFFMEPG 等技术,并且在服务端维护房号、推流、长链接等服务,这对于小团队公司明显不现实,那么如何满足产品需求呢?这就是后续的 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 支持 AndroidIOSWindowMacWeb,甚至还支持了 React-NativeFlutter ,所以对于有 RTC 需求的用户,必须强烈推荐 Agora SDK 有木有。

那么问题来了,这么优秀的SDK,它收费吗?

不收费是不可能的,这辈子都不可能的,毕竟后台服务都提供了,关键在于价格和前期体验,个人体验下来只有两个字:【优秀】 !所以不废话,一切如下图链接走起。


Agora SDK 使用体验征文大赛 | 掘金技术征文,征文活动正在进行中