Skip to main content
SRTCEngine 是 Swift SDK 的主入口,负责加入频道、离开频道、创建本地轨道以及配置日志和音频处理器。

初始化

init()

创建一个 SDK 实例,并完成底层 WebRTC 初始化。

属性

logLevel

设置 SDK 日志级别。 示例:

audioCaptureProcessor

麦克风采集后的音频处理器,可用于变声、降噪等处理。

audioRenderProcessor

远端音频播放前处理器,可用于播放侧音频增强。

channels

已加入且仍存活的频道列表([Channel]),按加入先后排序。空数组表示不在任何频道中。

defaultChannel

默认频道(Channel?):最早加入且仍存活的那个,它离会后顺延到下一个。无参的 leaveChannel() 作用于它。详见多频道

方法

joinChannel(token:options:)

加入频道并返回 Channel 实例。可多次调用以同时加入多个频道,各频道的发布、订阅、成员与 事件互不干扰,仅当同一频道名已加入(或正在加入中)时抛 alreadyJoined
返回值: Channel 可能抛出:
  • SRTCError.alreadyJoined
  • SRTCError.tokenExpired
  • SRTCError.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
自 1.4.2 起,整屏共享默认包含本 App 自己的窗口。凡是会渲染这路共享画面的窗口都要放进 excludedWindowIds,否则形成无限镜像。窗口列表在 startCapture() 时快照一次,之后新开的窗口一律进画面。

createLocalCustomVideoTrack(desc:)

创建自定义视频轨道,适合外部推帧场景。
返回值: LocalVideoTrack 调用后可通过 pushFrame(...) 注入 CVPixelBuffer

createLocalCustomAudioTrack(desc:)

创建自定义音频轨道,适合外部 PCM 输入场景。
返回值: LocalAudioTrack 调用后可通过 pushAudioBuffer(...) 注入 AVAudioPCMBuffer

视频前处理

defaultVideoProcessors

默认视频处理器管线。在这里配一次,此后每条新建的摄像头轨道自动带上
摄像头轨道每次开摄像头都是新建的(关摄像头即销毁),只在轨道上设一次,下次开摄像头效果就没了 —— 这个属性就是为此存在。只影响此后新建的轨道,不追溯已存在的轨道;自定义视频轨道不受影响(那条路的帧由业务方 pushFrame,要不要过处理器自己决定)。

虚拟背景

以下方法转发到 SRTCVirtualBackground.shared,状态整机一份。开启后自动作用于所有摄像头轨道,不需要往 videoProcessors 里挂东西。用法与调优见 虚拟背景 可能抛出: SRTCError.virtualBackgroundAlreadyInstalled.virtualBackgroundNotInstalled.virtualBackgroundModelNotFound(String).virtualBackgroundSessionFailed(String) 背景虚化与背景替换互斥,后调用的生效;两者在装载前调用也会被记住,装载完成后自动生效。

相关页面