Skip to main content
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