火山引擎 RTC 提供了开源示例项目 API Example Demo。获取该项目后,你可以参照本文进行跑通,体验实时音视频功能;也能通过阅读代码,了解最佳实践。
你可以从以下方式中选择一种获取示例项目:
下载离线包。
通过 GitHub 获取示例项目,具体指令如下:
git clone https://github.com/volcengine/VolcEngineRTC.git cd VolcEngineRTC git checkout main cd iOS/ApiExample
iOS 示例项目的目录结构如下:
. ├── ApiExample │ ├── ApiExample-Bridging-Header.h │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── QuickStart // 快速开始 https://www.volcengine.com/docs/6348/1181844 │ ├── AudioManager │ │ ├── AudioEffectMixing // 播放音效 https://www.volcengine.com/docs/6348/1178326 │ │ ├── AudioMediaMixing // 播放音乐文件 https://www.volcengine.com/docs/6348/70141 │ │ ├── AudioRawData // 原始音频数据 https://www.volcengine.com/docs/6348/1178324 │ │ └── SoundEffects // 变声、混响、降噪 https://www.volcengine.com/docs/6348/1178327 │ ├── AudioVideoTransmission │ │ └── CrossRoomPK // 跨房 PK https://www.volcengine.com/docs/6348/104398 │ ├── ImportantComponents │ │ └── Beauty │ │ │ ├── BeautyViewController.swift │ │ │ ├── FaceUnityBeauty // 自定义视频处理(相芯美颜) https://www.volcengine.com/docs/6348/79888 │ │ │ └── VolcBeauty // 智能美化特效(付费版) https://www.volcengine.com/docs/6348/114717 │ │ └── PullRTMP // 本地拉流 RTMP https://www.volcengine.com/docs/6348/70140 │ ├── LiveManager │ │ └── PushCDN // 推流到 CDN https://www.volcengine.com/docs/6348/69817 │ ├── RoomManager │ │ └── MutiRoom // 多房间 https://www.volcengine.com/docs/6348/196844 │ ├── SEI // 发送和接收媒体补充增强信息(SEI) https://www.volcengine.com/docs/6348/70140 │ ├── VideoManager │ │ ├── CommonConfig // 视频参数配置 https://www.volcengine.com/docs/6348/70122 │ │ ├── PictureInPicture // 画中画 https://www.volcengine.com/docs/6348/1178325 │ │ └── VideoRotation // 视频采集旋转方向 https://www.volcengine.com/docs/6348/106458 │ ├── Base.lproj │ ├── Common │ ├── Config.swift │ ├── Info.plist │ ├── TokenGenerator │ └── ViewController.swift ├── ApiExample.xcodeproj ├── Podfile └── bdaudioeffect.framework
在项目工程文件目录下,执行命令 pod install --repo-update
安装工程依赖。
pod install --repo-update
使用 XCode 打开 ApiExample.xcworkspace
,在控制台上获取 AppID 和 AppKey,并将其分别填入 ApiExample/Config.swift
中的 kAppID
和 kAppKey
。请正确填写信息,否则编译无法成功。
配置开发者证书:
ApiExample
项目,进入 Signing & Capabilities 标签页,勾选 Automatically manage signing 自动生成证书。你也可以通过苹果官网手动配置,下载证书。Personal Team
。rtc.vertcdemo.apiexample.dev
已被注册,将其修改为其他有效的 Bundle ID。(可选)示例项目中智能美化特效、相芯美颜功能需要单独填写鉴权信息。不填写鉴权信息不会影响 Demo 的编译运行,但你将无法体验相关功能。
ApiExample/ImportantComponents/Beauty/VolcBeauty/resource
文件夹中,勾选 Copy items if needed
。LicenseBag.bundle
中获取证书文件的文件名,并将其填入 ApiExample/Config.swift
中的 CVLicenseName
。例如 let CVLicenseName = "rtc_test_vertc.veRTCDemo.ios_4.4.2_633.licbag"
。请注意,证书对应的包名需与你在步骤 3 中设置的 Bundle Identifier 一致。effect-sdk.framework
文件,将其放入 ApiExample/ImportantComponents/Beauty/VolcBeauty
文件夹中,勾选 Copy items if needed
。选中项目,进入 General 设置页面,在 Frameworks, Libraries, and Embedded Content 中将 effect-sdk.framework
的属性设置为 Embed & Sign。相芯美颜:请联系相芯美颜商务团队 marketing@faceunity.com 获取证书,使用获取到的证书替换 ApiExample/ImportantComponents/Beauty/FaceUnityBeauty
路径下的 authpack.h
文件。
说明
如果你尚未信任开发者,请根据 Xcode 提示,在 iOS 设备上打开设置,选择通用 > VPN 与设备管理,在开发者 APP 中单击信任开发者。
为更好地体验实时音视频互动效果,你可以邀请一位朋友使用另一台设备运行该示例项目(需确保两个设备配置示例项目时填入的 App ID 和 AppKey 一致)。当你们输入相同的房间名加入房间后,即可在同一房间中体验音视频通话。
在完成音视频互动后,你可以阅读以下文档进一步了解:
使用模拟器编译报错 No such module 'VolcEngineRTC'
?
解决方案:如果你使用的是搭载 Apple 芯片的 Mac 电脑,该问题可能是编译的架构(ARM64)和模拟器的架构(x86_64)不匹配导致的,请使用真机编译。
Xcode 15 编译报错 Sandbox: rsync.samba(xxxxx) deny(1)
?
解决方案:选中项目,进入 TARGETS > 项目名称 > Build Settings,在 Build Options 中将 User Script Sandboxing 修改为 No。