Channel
Channel 表示一次已建立的频道会话,是发布、订阅、消息和用户状态的核心入口。
属性
getUsers()
获取当前频道内所有用户信息。
[String: UserInfo]
getUser(_:)
按 uid 获取用户对象。
User?
publishLocalTrack(_:)
发布本地音频或视频轨道。
publishLocalTrack(_ track: LocalAudioTrack, options: AudioPublishOptions? = nil)publishLocalTrack(_ track: LocalVideoTrack, options: VideoPublishOptions? = nil)
- 音频轨道会走内部混音发送模型
LocalScreenTrack如果带有屏幕音频,会自动一并发布音频部分
unpublishLocalTrack(_:)
取消发布本地音频或视频轨道。
stopCapture() 释放采集资源。
subscribeRemoteAudioTrack(uid:trackId:)
订阅远端音频轨道。
subscribeRemoteVideoTrack(uid:trackId:)
订阅远端视频轨道。
subscribeRemoteVideoMcuTrack()
订阅频道级 MCU 合成视频(1.5.3 起)。服务端合成任务把频道内的画面合成一路,以保留身份 __mcu__ 发布,
这个身份不在频道成员列表里,所以不能用 subscribeRemoteVideoTrack(uid:trackId:),要用本方法。
RemoteVideoMcuTrack(继承 RemoteVideoTrack),重复调用返回同一对象;当前订阅中的轨道也可通过 channel.remoteVideoMcuTrack 取到。
合成任务没开时 SFU 找不到这一路,SDK 会重试几秒后放弃(不抛错,也不出画面)。合成任务比订阅晚起来的场景,在任务开始运行后再调一次即可,调用是幂等的。
收流超时 / 恢复照常经
didChangeReceiveStreamStatus 上报,uid 为 RemoteVideoMcuTrack.publisherUid("__mcu__")。unsubscribeRemoteTrack(_:debounceMs:)
取消订阅远端轨道。
getRemoteTrack(uid:trackId:)
按用户和轨道 ID 取回远端轨道对象。
Track?
getRemoteTrackByDesc(uid:desc:)
按 desc 获取远端轨道。
Track 基类
所有轨道都继承自Track,共享以下核心属性:
通用方法:
getInfo()
LocalMicTrack
采集控制
startCapture(options:)stopCapture()restartCapture()
用户控制
mute()unmute()changeDeviceId(_:)
LocalCameraTrack
采集控制
startCapture(options:)stopCapture()restartCapture()
用户控制
mute()unmute()changeDeviceId(_:)switchCamera()
渲染相关
addRenderer(_:)removeRenderer(_:)removeAllRenderers()
LocalScreenTrack
采集控制
startCapture(options:)stopCapture()restartCapture()
用户控制
mute()unmute()
屏幕音频
audioTracksetAudioTrack(_:)getAudioTrack()
采集方式与状态(iOS)
LocalAudioTrack
适用于自定义音频输入:mute()unmute()pushAudioBuffer(_:)
startCapture(),而是由业务层持续注入 PCM 数据。
LocalVideoTrack
适用于自定义视频输入:addRenderer(_:)removeRenderer(_:)removeAllRenderers()pushFrame(_:rotation:timestampNs:)
RemoteAudioTrack
播放控制
startPlay()stopPlay()isPlaying
PCM 数据回调
add(audioRenderer:)remove(audioRenderer:)
AudioRenderer 回调会拿到 AVAudioPCMBuffer,适合做语音转写、录制或二次分析。
RemoteVideoTrack
渲染控制
addRenderer(_:)removeRenderer(_:)removeAllRenderers()
SRTCVideoView(track:) 或 SRTCVideoRenderer 展示。
收流状态
isReceiveTimedOut: Bool
channel(_:didChangeReceiveStreamStatus:) 最近一次上报的 timedOut 一致,适合在渲染视图初始化、或从后台回到前台时补一次当前状态,避免只靠事件导致 UI 与实际不同步。日常的「加载中」指示仍建议由事件驱动,详见事件参考。
渲染组件
SRTCVideoView
SwiftUI 场景优先使用:
VideoView
UIKit / AppKit 场景下使用 bind(track:) / unbind() 管理绑定关系。
SRTCVideoRenderer
更底层的渲染视图,由轨道显式调用 addRenderer(_:) 绑定。