集成 RTC SDK 后,你可以使用其中接口快速构建基础应用,实现基本实时音视频通话;你也能通过阅读代码,了解音视频通话的最佳实践。
前提条件
- arm64-v8a 真机、armeabi-v7a 真机
集成 SDK
步骤1:(可选)创建项目
本步骤为如何创建一个新项目,如集成到已有项目,请跳过该步骤。
步骤2: 添加依赖
方式一:远端依赖 (推荐)
在终端中进入项目根目录,运行如下命令安装依赖项:
这将在你项目的 pubspec.yaml 文件中添加这样的一行:
方式二:本地依赖
- 将下载的 SDK 文件夹复制到你的项目文件夹下。
- 在 pubspec.yaml 文件中添加 volc_engine_rtc依赖项:
更新依赖项
选择以上任意一种方式添加依赖项后,当需要更新 SDK 版本时,在终端中进入项目根目录,运行如下命令更新依赖项:
步骤3:配置项目属性
- 在使用音视频功能前,请先在代码中申请音视频权限,本文采用 permission_handler 组件库为例:
- Privacy - Microphone Usage Description ,并填入使用麦克风的原因(Value)
- Privacy - Camera Usage Description ,并填入使用摄像头的原因(Value)
实现音视频通话
实现流程
1. (可选)创建用户界面
根据场景需要,为你的项目创建音视频通话的用户界面。若已有用户界面,请跳过此步骤。
如果你想实现基本的音视频通话,我们建议你在项目中添加如下元素:
2. 引入头文件
在用到 SDK API 的文件中引入头文件。
3. 创建引擎
首先你需要调用 RTCVideo.createRTCVideo 接口,创建一个引擎单例,以使用 RTC 提供的各种音视频能力。
如果当前进程中未创建引擎实例,那么你必须先使用此方法创建实例;
如果当前进程中已创建了引擎实例,再次调用此方法时,会返回已创建的实例。
你需要在该方法中传入以下参数:
4. 设置视频编码参数
创建引擎实例后,你可以调用RTCVideo.setMaxVideoEncoderConfig设置视频编码参数修改发布的视频流属性。
你需要在该方法中传入以下参数:
5. 设置本地视图
加入房间前,你需要设置本地视图以在通话中看到本地图像,首先创建RTCViewContext实例:
再由创建的RTCViewContext实例构建RTCSurfaceView视频渲染视图:
6. 开始视频采集
创建引擎实例后,你需要调用RTCVideo.startVideoCapture开启视频采集,以在通话中使用视频功能。
7. 开始音频采集
创建引擎实例后,你需要调用RTCVideo.startAudioCapture开启音频采集,以在通话中使用音频功能。
8. 创建房间
完成初始化后,你就可以调用RTCVideo``.createRTCRoom创建房间。
9. 设置房间事件回调处理
成功创建房间后,你就可以调用RTCRoom``.setRTCRoomEventHandler设置房间事件回调处理。
10. 加入房间
完成房间初始化后,你就可以调用RTCRoom``.joinRoom加入房间。
你需要在该方法中传入以下参数:
11. 处理加入房间结果回调
加入房间后,你需要在 RTCRoomEventHandler.onRoomStateChanged 中处理首次加入房间/重连加入房间的事件。
回调参数说明:
12. 处理远端用户加入房间的回调
加入房间后,你需要在 RTCRoomEventHandler.onUserJoined 中处理远端用户加入房间的事件。
回调参数说明:
13. 处理远端视频数据渲染的回调
加入房间后,你需要在 RTCVideoEventHandler.onFirstRemoteVideoFrameDecoded 中处理第一帧远端视频流在视图上渲染成功后的事件。
回调参数说明:
14. 设置远端视图
在确认收到远端用户的第一帧视频渲染回调后,你需要设置远端视图以在通话中查看远端图像,将接口创建的RTCViewContext实例用于构建视频渲染视图RTCSurfaceView。
你需要在该方法中传入以下参数:
15. 处理远端用户离开房间的回调
加入房间后,你需要在 RTCRoomEventHandler.onUserLeave 的此回调中处理远端用户离开房间的事件。
回调参数说明:
16. 离开房间
在结束通话等场景下,你需要调用 RTCRoom.leaveRoom 离开房间,结束通话过程,释放所有通话相关的资源。
17. 销毁房间
在 RTC 房间实例相关的业务场景全部结束后,你可以调用RTCRoom.destroy 销毁房间,并释放所有相关资源。
18. 销毁引擎
在 RTC 引擎实例相关的业务场景全部结束后,你可以调用RTCVideo``.``destroy销毁由引擎创建的单例,并释放所有相关资源。
至此,我们实现了基本的音视频通话。
后续步骤
在实现音视频通话后,如遇无声音、无画面、视频卡顿等问题时,您可以使用通过诊断工具深入诊断快速排查和定位异常房间及用户,并获取异常根因分析、处理建议、分析报告等。