集成 RTC SDK 后,你可以使用其中接口快速构建基础应用,实现基本实时音视频通话;你也能通过阅读代码,了解音视频通话的最佳实践。
如果你想了解完整的项目实现,参看 Demo 工程文件。
如集成到已有项目,请直接查看步骤 2。
打开 Xcode, 创建适用于 macOS 的新项目(App)。
输入项目名称、团队名称,选择开发语言(选择 Objective-C 或者 Swift)。
选择项目存储位置,并创建。
签名设置:进入 TARGETS > Project Name > Signing & Capabilities
,勾选 Automatically manage signing
,并在弹出菜单中选择 Enable Automatic
。
将以下文件拖入到工程中:
libbytevc0.dylib
libeffect.dylib
RTCFFmpeg.framework
VolcEngineRTC.framework
配置音视频权限
info.plist
文件Privacy - Microphone Usage Description
,并填入使用麦克风的原因( Value )Privacy - Camera Usage Description
,并填入使用摄像头的原因( Value )SDK 配置
进入 TARGETS > Project Name > General
,选择 Frameworks, Libraries, and Embedded Content
,将 libAGFX.dylib
、libbytenn.dylib
、libbytevc0.dylib
、libeffect.dylib
、RTCFFmpeg.framework
和 VolcEngineRTC.framework
设置为 Embed & Sign
。
参考以下的时序图:
1.(可选)创建用户界面
根据场景需要,为你的项目创建音视频通话的用户界面。若已有用户界面,跳过此步骤。
如果你想实现基本的音视频通话,我们建议你在项目中添加如下元素:
在使用 SDK API 的文件中引入头文件。
//引入 VolcEngineRTC 头文件 #import <VolcEngineRTC/VolcEngineRTC.h>
调用 createRTCVideo:delegate:parameters:
接口,创建一个引擎实例,以使用 RTC 提供的各种音视频能力。
创建引擎实例后,你可以设置视频编码参数修改推送的视频流属性。
加入房间前,你需要设置本地视图以在通话中看到本地图像
创建引擎实例后,你需要开启视频采集,以在通话中使用视频功能。
创建引擎实例后,你需要开启音频采集,以在通话中使用音频功能。
创建一个房间实例,以使用房间相关的功能。
9.设置房间回调事件
调用类 ByteRTCRoom
中的 delegate
接口,设置房间回调事件
创建房间实例后,你就可以调用 ByteRTCRoom
类中的 joinRoom
方法创建/加入房间。
加入房间后,你需要在此回调中处理首次加入房间/重连加入房间的事件。
加入房间后,你需要在此回调中处理远端用户加入房间的事件。
加入房间后,你需要在此回调中处理第一帧远端视频流解码成功后的事件。
在确认收到远端用户的第一帧视频解码回调后,你需要设置远端视图以在通话中查看远端图像。
加入房间后,你需要在此回调中处理远端用户离开房间的事件。
在结束通话等场景下,你需要调用 leaveRoom
离开房间,结束通话过程,释放所有通话相关的资源。
在 RTC 引擎实例相关的业务场景全部结束后,你可调用 destroyRTCVideo
销毁由 createRTCVideo
所创建引擎实例,并释放所有相关资源。
至此,我们实现了基本的音视频通话。
项目编译运行时,如果在加入房间控制台时,看到以下的报错信息 dnssd_clientstub ConnectToServer: connect() failed path:/var/run/mDNSResponder Socket:20 Err:-1 Errno:1 Operation not permitted
,应进行相应处理:
如果不使用 App Sandbox
,删除即可;
如果使用 App Sandbox
,需要勾选 Incoming Connections
、Outgoing Connections
、Camera
和 Audio Input
.
在集成 RTC SDK 时,需要将 SDK 包引入到 app 中。若 SDK 包文件未放在默认目录下,会出现 RTC SDK 找不到依赖库(如 libbytenn、libbytevc0 等)的问题,从而引发卡死等问题,参看解决方法。