自
3.0.0 起,SDK 分为两层:RTCEngineKit 是进程级单例,负责初始化、共享硬件(摄像头、音频路由、屏幕采集)与频道实例的创建;RTCEngineChannel 是频道实例,负责加入频道、发布与订阅码流。同一进程可以创建多个频道实例并同时加入多个频道。step 1:初始化SDK
创建初始化参数
在调用 SDK 的任何其他函数之前,需要进行 SDK 初始化。要初始化 SDK,请创建RTCEngineConfig对象的实例。
- 下表描述了
RTCEngineConfig对象的所有属性。
初始化RTC引擎
创建RTCEngineConfig 对象后,调用 SDK 的 initializeWithConfig 函数设置代理并验证它是否已正确初始化。
设置委托
SDK 有两个事件协议,按事件归属分别实现:RTCEngineDelegate:进程级事件(音频路由变更、网络测速、应用性能),在初始化时传入;RTCEngineChannelDelegate:频道内事件(连接、成员、消息、码流、屏幕共享),在创建频道实例时传入。
实现回调函数
RTCEngineChannelDelegate 的每个回调首参都是事件来源的频道实例,多频道场景下据此区分事件归属,频道名称可从 channel.channel 读取。
- 加入频道成功回调
- 自己数据更新回调
- 开始重连回调
- 重连成功回调
- 连接断开回调
- 自定义消息回调
- 频道更新回调
- 用户加入频道回调
- 成员数据更新回调
- 用户离开频道回调
- 用户码流数据变更回调
step 2:创建频道实例并加入频道
创建频道实例
createChannelWithDelegate: 分别持有各自的实例,实例之间的成员数据、码流统计与渲染互不干扰。
加入频道
离开频道
销毁频道实例
使用完毕后必须归还实例,否则引擎会一直持有该频道。step 3:发布视频流
摄像头是进程级共享硬件,采集与预览通过RTCEngineKit 单例控制;是否把该路画面推送到某个频道,由该频道实例的 publishLocalVideo: 单独控制。
开启预览画面
更新预览画面
停止预览画面
恢复/暂停向当前频道推流
step 4:订阅和取消订阅远端视频
订阅远端用户的视频流
- 下表描述了
RTCTrackIdentifierFlags轨道标识枚举类型的所有值。
更新远端用户的视频流
停止订阅远端用户的视频流
停止订阅指定远端用户的所有视频流
step 5:销毁资源
destroy 会先销毁全部存活的频道实例,等待其离开完成后再释放进程级资源,业务层无需逐个调用频道实例的 destroy。