SRTCEngine 是 Swift SDK 的主入口,负责加入频道、离开频道、创建本地轨道以及配置日志和音频处理器。
初始化
init()
创建一个 SDK 实例,并完成底层 WebRTC 初始化。
属性
logLevel
设置 SDK 日志级别。
示例:
audioCaptureProcessor
麦克风采集后的音频处理器,可用于变声、降噪等处理。
audioRenderProcessor
远端音频播放前处理器,可用于播放侧音频增强。
channels
已加入且仍存活的频道列表([Channel]),按加入先后排序。空数组表示不在任何频道中。
defaultChannel
默认频道(Channel?):最早加入且仍存活的那个,它离会后顺延到下一个。无参的
leaveChannel() 作用于它。详见多频道。
方法
joinChannel(token:options:)
加入频道并返回 Channel 实例。可多次调用以同时加入多个频道,各频道的发布、订阅、成员与
事件互不干扰,仅当同一频道名已加入(或正在加入中)时抛 alreadyJoined。
返回值:
Channel
可能抛出:
SRTCError.alreadyJoinedSRTCError.tokenExpiredSRTCError.tokenInvalid- 其他网络、信令、流媒体连接错误
leaveChannel()
离开默认频道(最早加入且仍存活的那个)。
leaveChannel(_:)
离开指定频道,等价于 channel.leave(),其它频道不受影响。多频道下建议用这个版本,
避免「默认频道顺延」带来的歧义。
createLocalMicTrack(preset:)
创建本地麦克风轨道。
返回值:
LocalMicTrack
createLocalCameraTrack(preset:)
创建本地摄像头轨道。
返回值:
LocalCameraTrack
createLocalScreenTrack(preset:audioPreset:mode:)
创建本地屏幕共享轨道。
返回值:
LocalScreenTrack
iOS 全屏采集下
startCapture() 成功只代表 SDK 开始监听,画面要等用户从系统 UI 发起广播后
才会传输,真正的开始 / 结束通过 TrackDelegate.screenBroadcastDidStart /
screenBroadcastDidFinish(_:reason:) 通知。createLocalScreenTrack(source:preset:audioPreset:excludedWindowIds:excludesCurrentApplication:)
macOS 12.3+ 专用重载,用于指定显示器或窗口源。
返回值:
LocalScreenTrack
createLocalCustomVideoTrack(desc:)
创建自定义视频轨道,适合外部推帧场景。
返回值:
LocalVideoTrack
调用后可通过 pushFrame(...) 注入 CVPixelBuffer。
createLocalCustomAudioTrack(desc:)
创建自定义音频轨道,适合外部 PCM 输入场景。
返回值:
LocalAudioTrack
调用后可通过 pushAudioBuffer(...) 注入 AVAudioPCMBuffer。
视频前处理
defaultVideoProcessors
默认视频处理器管线。在这里配一次,此后每条新建的摄像头轨道自动带上。
摄像头轨道每次开摄像头都是新建的(关摄像头即销毁),只在轨道上设一次,下次开摄像头效果就没了 —— 这个属性就是为此存在。只影响此后新建的轨道,不追溯已存在的轨道;自定义视频轨道不受影响(那条路的帧由业务方
pushFrame,要不要过处理器自己决定)。
虚拟背景
以下方法转发到SRTCVirtualBackground.shared,状态整机一份。开启后自动作用于所有摄像头轨道,不需要往 videoProcessors 里挂东西。用法与调优见 虚拟背景。
可能抛出:
SRTCError.virtualBackgroundAlreadyInstalled、.virtualBackgroundNotInstalled、.virtualBackgroundModelNotFound(String)、.virtualBackgroundSessionFailed(String)
背景虚化与背景替换互斥,后调用的生效;两者在装载前调用也会被记住,装载完成后自动生效。