RTCEngineChannel 表示一个独立的 RTC 频道,由 -[RTCEngineKit createChannelWithDelegate:] 创建。每个实例独立持有信令频道、媒体连接、成员缓存与远端渲染状态,同一进程可以同时存在多个实例,实例之间的成员数据、码流统计与渲染互不干扰。
摄像头、音频路由、ReplayKit 采集、美颜渲染等进程级共享能力由 RTCEngineKit 单例统一提供,频道实例不重复暴露。
属性
delegate
id<RTCEngineChannelDelegate> delegate
频道事件代理,详情请参考 RTCEngineChannelDelegate。
channel
NSString *channel(只读)
已加入的频道名称,未加入时为空。
enabledTrans
BOOL enabledTrans(只读)
语音转写状态。
频道相关接口函数
joinChannelWithToken:()
- (RTCEngineError)joinChannelWithToken:(NSString *)token
加入频道
RTC 的所有用户都需要加入频道才能“发布”或“订阅”音视频流,“发布”是指将自己的音频和视频推送到云端,“订阅”是指从云端拉取频道里其他用户的音视频流。
参数
注意
- 一个频道实例同一时间只能加入一个频道。需要同时加入多个频道时,请调用
createChannelWithDelegate:创建多个实例,不要在同一实例上重复加入。 - 同一实例上请保证
joinChannelWithToken与leaveChannel前后配对使用,即保证“先退出前一个频道再进入下一个频道”,否则会导致很多异常问题。
leaveChannel:()
- (void)leaveChannel:(nullable RTCEngineKitFinishBlock)finishBlock
离开频道
调用该接口会让用户离开该实例所在的频道,并释放该频道占用的媒体资源。等资源释放完毕之后,SDK 会通过finishBlock回调向您通知。如果您要再次调用joinChannelWithToken:(),建议等待finishBlock回调到来之后再执行之后的操作。
摄像头、麦克风等共享硬件由引擎统一管理,只有在最后一个频道离开后才会真正释放。
参数
destroy()
- (void)destroy
销毁频道实例
内部先执行离开频道,完成后从引擎的频道列表中摘除并断开代理。调用后不可再使用该实例,需要重新加入时请通过 createChannelWithDelegate: 创建新实例。
数据管理相关接口函数
getMySelf()
- (nullable RTCEngineUserModel *)getMySelf
获取当前账户在该频道内的数据
getChannelDetails()
- (nullable RTCEngineChannelModel *)getChannelDetails
获取当前频道数据
findMemberWithUserId:()
- (nullable RTCEngineUserModel *)findMemberWithUserId:(NSString *)userId
查找该频道内userId的用户信息
同一个
userId 可能同时存在于多个频道实例中。请使用事件来源频道实例查询,不要跨实例复用查询结果。getRemoteUsers()
- (NSArray<RTCEngineUserModel *> *)getRemoteUsers
获取该频道的成员列表
getDrawingHost()
- (nullable NSString *)getDrawingHost
获取画板地址
视频相关接口函数
publishLocalVideo:()
- (RTCEngineError)publishLocalVideo:(BOOL)publish
暂停/恢复发布本地的视频流
推送的画面来源为进程级共享摄像头,是否推送到本频道由当前实例独立控制。多频道场景下,某个频道暂停推流不会影响其它频道。
该接口只在软件层面对数据流进行暂停或者放行,不涉及摄像头硬件的开关,因此效率更高,也更适合需要频繁打开关闭的场景。当暂停/恢复发布本地的视频流后,同一频道中的其他用户将会收到engineChannel:onRemoteUserUpdate:回调通知。
参数
startRemoteView:trackId:view:()
- (RTCEngineError)startRemoteView:(NSString *)userId trackId:(RTCTrackIdentifierFlags)trackId view:(VIEW_CLASS *)view
订阅远端用户的视频流,并绑定视频渲染控件
调用该接口可以让 SDK 拉取该频道内指定userId的视频流,并渲染到参数view指定的渲染控件上。
参数
updateRemoteView:trackId:view:()
- (RTCEngineError)updateRemoteView:(NSString *)userId trackId:(RTCTrackIdentifierFlags)trackId view:(VIEW_CLASS *)view
更新远端用户的视频渲染控件
该接口可用于更新远端视频画面的渲染控件,常被用于切换显示区域的交互场景中。
参数
stopRemoteView:trackId:()
- (RTCEngineError)stopRemoteView:(NSString *)userId trackId:(RTCTrackIdentifierFlags)trackId
停止订阅远端用户的视频流,并释放渲染控件
参数
stopAllRemoteViewWithUserId:()
- (RTCEngineError)stopAllRemoteViewWithUserId:(NSString *)userId
停止订阅指定远端用户的所有视频流,并释放渲染控件
参数
stopAllRemoteView()
- (RTCEngineError)stopAllRemoteView
停止订阅该频道内所有远端用户的视频流,并释放全部渲染资源
startRemoteMixture:()
- (RTCEngineError)startRemoteMixture:(VIEW_CLASS *)view
订阅远端合成画面视频流,并绑定视频渲染控件
参数
stopRemoteMixture()
- (RTCEngineError)stopRemoteMixture
停止订阅远端合成画面视频流,并释放渲染控件
startRemoteRetweet:view:()
- (RTCEngineError)startRemoteRetweet:(NSString *)streamName view:(VIEW_CLASS *)view
订阅远端转推音视频流(webrtc 取流),并绑定视频渲染控件
调用该接口可以让 SDK 通过 webrtc 订阅由外部传入流名的远端转推流,单条连接同时接收音视频,并将画面渲染到参数view指定的渲染控件上。该接口以原始流名作为流标识,转推流不作为远端用户视频数据上报,其接收状态通过 engineChannel:onReceiveRetweetStreamStatusChange:status: 单独通知。
注:转推取流目前仅支持 wangsu 流媒体供应商。
参数
stopRemoteRetweet:()
- (RTCEngineError)stopRemoteRetweet:(NSString *)streamName
停止订阅远端转推音视频流,并释放渲染控件
参数
流媒体相关接口函数
setStreamMediaConfig:()
- (void)setStreamMediaConfig:(RTCEngineMediaConfig *)config
设置流媒体配置参数
可通过该接口设置视频编码、音频编码、视频帧率、视频码流等参数。配置作用于当前频道实例。
参数
setNetworkQosParam:()
- (void)setNetworkQosParam:(RTCEngineNetworkQosParam *)param
设置网络质量控制参数
可通过该接口设置延迟自适应档位、延时抗抖动等级、码率自适应开关、网络自适应开关等参数。
参数
setRemoteDebugParam:()
- (void)setRemoteDebugParam:(RTCEngineDebugParam *)param
设置远程调试参数
可通过该接口设置远程调试地址、音视频流保存状态等调试参数。
参数
音频相关接口函数
enabledSendAudio:()
- (RTCEngineError)enabledSendAudio:(BOOL)enabled
暂停/恢复向该频道发布本地的音频流
参数
setAudioPriorityWithUserId:enabled:()
- (RTCEngineError)setAudioPriorityWithUserId:(NSString *)userId enabled:(BOOL)enabled
设置音频优先策略
可通过该接口保证成员下行状态不佳时,优先保证音频的接收效果。
参数
enabledAudioSpeaker:()
- (RTCEngineError)enabledAudioSpeaker:(BOOL)enabled
设置远端音频播放状态
可通过该接口开启或关闭该频道的远端音频播放,不会切换扬声器、听筒或外设路由。音频输出设备的切换请使用 -[RTCEngineKit switchAudioRoute:]。
参数
enabledAudioModule:()
- (RTCEngineError)enabledAudioModule:(BOOL)enabled
设置本端音频单元启停
自2.5.9起支持。录像直播等本端不采集、不接收 RTC 音频的纯本地播放场景,关闭音频单元可释放底层语音处理单元(VPIO),避免本地播放器(如 AVPlayer)的播放音量被压低;返回该类场景后需将其恢复为自动管理。SDK 每次加入频道会自动复位为自动管理,避免上一会话的手动停用状态跨会话泄漏。
参数
enabledSpeechTrans:()
- (RTCEngineError)enabledSpeechTrans:(BOOL)enabled
设置语音转写状态
参数
resetAudioSession()
- (void)resetAudioSession
重启音频会话
当 App 与其它音频应用抢占音频会话,或系统音频会话被外部打断后未能自动恢复时,业务层可调用该接口重建 SDK 的音频会话配置。调用后音频路由可能发生变化,SDK 会通过 RTCEngineDelegate 的 onAudioRouteChange:previousRoute: 回调通知业务层。
共享屏幕相关接口函数
publishScreenRecord:()
- (RTCEngineError)publishScreenRecord:(BOOL)publish
发布/停止该频道的屏幕共享流
自3.0.0起支持。ReplayKit 采集为进程级共享能力,本接口只控制当前频道实例是否订阅并推送采集数据:首个频道发布时启动采集,最后一个频道停止发布时才真正结束采集。
需要一次性关闭进程内全部频道的屏幕录制时,请调用 -[RTCEngineKit stopScreenRecord]。
参数
publishScreenViewCaptureWithPixelBuffer:displayAngle:()
- (void)publishScreenViewCaptureWithPixelBuffer:(CVPixelBufferRef)pixelBuffer displayAngle:(int)displayAngle
发布视图录制的共享流,即用户可以通过该接口送入与屏幕共享共用轨道的视频流数据。
与 publishCustomStreamWithStreamData: 互斥使用,由外部业务决定采用哪种方式送流。
参数
enabledViewCaptureShare:()
- (RTCEngineError)enabledViewCaptureShare:(BOOL)enabled
设置视图采集共享
该接口用来通知 SDK,当前共享屏幕轨道推送的是屏幕采集流还是视图录制流;在调用publishScreenViewCaptureWithPixelBuffer:displayAngle:()之前需先调该接口进行 SDK 标记。
视图采集为云录制的“保底画面源”,屏幕共享为“高优先级画面源”,两者共用屏幕共享通道并按优先级自动切换:
- 开启时:若屏幕录制未进行,建立共享通道;若屏幕录制已在进行,通道已存在无需重复建立;
- 屏幕录制停止时:若视图采集已开启,通道不关闭,自动恢复推送视图采集数据;
- 关闭时:若屏幕录制未进行,拆除共享通道;若屏幕录制已在进行,通道保留给屏幕录制。
发布自定义流相关接口
startCustomStreamWithStreamTrackModel:()
- (RTCEngineError)startCustomStreamWithStreamTrackModel:(RTCEngineStreamTrackModel *)streamTrackModel
启动自定义流
该接口需要指明发布的轨道、分辨率、码流等基础码流信息。只有调用该接口申明的轨道才可以通过publishCustomStreamWithStreamData:进行自定义推流,当程序结束自定义推流后需要调用stopCustomStreamWithTrackId:关闭对应轨道。
参数
stopCustomStreamWithTrackId:()
- (RTCEngineError)stopCustomStreamWithTrackId:(RTCTrackIdentifierFlags)trackId
关闭自定义流
参数
publishCustomStreamWithStreamData:()
- (RTCEngineError)publishCustomStreamWithStreamData:(const unsigned char *)streamData bitslen:(int)bitslen pts:(uint32_t)pts dts:(uint32_t)dts trackId:(RTCTrackIdentifierFlags)trackId streamType:(RTCStreamType)streamType
发布自定义码流
可以通过该接口向startCustomStreamWithStreamTrackModel:中声明的轨道 ID 推送自定义码流数据。
参数