You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
实现音视频通话
macOS (Objective-C)
复制全文
下载 pdf
macOS (Objective-C)
集成 RTC SDK 后,你可以使用其中接口快速构建基础应用,实现基本实时音视频通话;你也能通过阅读代码,了解音视频通话的最佳实践。​
如果你想了解完整的项目实现,参看 Demo 工程文件。​
前提条件​
  • Xcode 12.5+ 版本(本文涉及编译器的指引及示例图均参考 Xcode 14.0.1 )​
  • 支持 macOS 10.10+ 的设备​
集成SDK​
步骤1:(可选)创建项目​
如集成到已有项目,请直接查看步骤 2。​
  1. 打开 Xcode, 创建适用于 macOS 的新项目(App)。​
  • ​图片​​
  1. 输入项目名称、团队名称,选择开发语言(选择 Objective-C)。​
  • ​图片​​
  1. 选择项目存储位置,并创建。​
  1. 签名设置:进入 TARGETS > Project Name > Signing & Capabilities ,勾选 Automatically manage signing,并在弹出菜单中选择 Enable Automatic。​
  • ​图片​​
步骤2: 引入 RTC SDK​
将以下文件拖入到工程中:​
  • libbytevc0.dylib​
  • libeffect.dylib​
  • RTCFFmpeg.framework​
  • VolcEngineRTC.framework​
  • ​图片​​
步骤3:配置项目属性​
  1. 配置音视频权限​
  1. 找到项目中的 info.plist 文件​
  1. 点击 【 + 】 添加音频和视频设备权限:​
  1. Privacy - Microphone Usage Description ,并填入使用麦克风的原因( Value )​
  1. Privacy - Camera Usage Description ,并填入使用摄像头的原因( Value )​
  • ​图片​​
  1. 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.(可选)创建用户界面​
根据场景需要,为你的项目创建音视频通话的用户界面。若已有用户界面,跳过此步骤。​
如果你想实现基本的音视频通话,我们建议你在项目中添加如下元素:​
  • 房间ID​
  • 用户 ID​
  • 本地视频窗口​
  • 远端视频窗口​
  • 打开麦克风按钮​
  • 打开摄像头按钮​
  • 结束通话按钮​
​图片​​
2. 引入头文件​
在使用 SDK API 的文件中引入头文件。​
​
//引入 VolcEngineRTC 头文件​
#import <VolcEngineRTC/VolcEngineRTC.h>​
​
3. 创建引擎实例 createRTCEngine​
调用 createRTCEngine:delegate: 接口,创建一个引擎实例,以使用 RTC 提供的各种音视频能力。​
4. 设置本地视图 setLocalVideoCanvas​
加入房间前,你需要设置本地视图以在通话中看到本地图像​
5. 开始视频采集 startVideoCapture​
创建引擎实例后,你需要开启视频采集,以在通话中使用视频功能。​
6. 开始音频采集 startAudioCapture​
创建引擎实例后,你需要开启音频采集,以在通话中使用音频功能。​
7. 创建房间实例 createRTCRoom​
创建一个房间实例,以使用房间相关的功能。​
8.设置房间回调事件​
调用类 ByteRTCRoom 中的 delegate 接口,设置房间回调事件​
创建房间实例后,你就可以调用 ByteRTCRoom 类中的 joinRoom 方法创建/加入房间。​
10. 处理加入房间结果回调 onRoomStateChanged​
加入房间后,你需要在此回调中处理首次加入房间/重连加入房间的事件。​
11. 处理远端用户加入房间的回调 onUserJoined​
加入房间后,你需要在此回调中处理远端用户加入房间的事件。​
12. 处理远端视频首帧解码的回调 onFirstRemoteVideoFrameDecoded​
加入房间后,你需要在此回调中处理第一帧远端视频流解码成功后的事件。​
13. 设置远端视图 setRemoteVideoCanvas:withCanvas:​
在确认收到远端用户的第一帧视频解码回调后,你需要设置远端视图以在通话中查看远端图像。​
14. 处理远端用户离开房间的回调 onUserLeave​
加入房间后,你需要在此回调中处理远端用户离开房间的事件。​
15. 离开房间 leaveRoom​
在结束通话等场景下,你需要调用 leaveRoom 离开房间,结束通话过程,释放所有通话相关的资源。​
16. 销毁引擎实例 destroyRTCEngine​
在 RTC 引擎实例相关的业务场景全部结束后,你可调用 destroyRTCEngine 销毁由 createRTCEngine 所创建引擎实例,并释放所有相关资源。​
至此,我们实现了基本的音视频通话。​
后续步骤​
在实现音视频通话后,如遇无声音、无画面、视频卡顿等问题时,您可以使用诊断工具快速排查和定位异常房间及用户,并获取异常根因分析、处理建议、分析报告等。​
常见问题​
  1. 项目编译运行时,如果在加入房间控制台时,看到以下的报错信息 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.​
  • ​图片​​
  1. 在集成 RTC SDK 时,需要将 SDK 包引入到 app 中。若 SDK 包文件未放在默认目录下,会出现 RTC SDK 找不到依赖库(如 libbytenn、libbytevc0等)的问题,从而引发卡死等问题,参看解决方法。​
​
最近更新时间:2026.09.21 16:42:01
这个页面对您有帮助吗?
有用
有用
无用
无用