概述
会议里的媒体控制分成三块:- 本端采集与发布:摄像头、麦克风、屏幕共享
- 远端播放:远端音频总开关、远端视频订阅
- 房间策略:主持人设置的全体静音 / 全体禁画 / 禁共享会直接影响你能不能开
request,关闭侧不带。
开启侧是
throws 的(可能被房间策略拒绝、可能采集失败),关闭侧不会抛错,可以放心直接调。
麦克风
打开与关闭
requestOpenMic 做的事情依次是:向会议申请开麦 → 起本地麦克风采集 → 发布到会议 → 抛出 userMicStateDidChange 事件。
指定设备与音质预设
deviceId,SDK 会直接切到目标设备而不是忽略这次调用。
preset 取值来自 SRTC 的 MicPreset:.speech、.music(默认)、.musicStereo、.musicHighQuality、.musicHighQualityStereo。
摄像头
打开与关闭
requestOpenCamera 返回 LocalCameraTrack,也可以随时通过 meeting.cameraTrack 拿到(未开启时为 nil)。
参数说明
view只在 UIKit / AppKit 场景需要传,且必须是一个已经挂在视图层级上的SRTCVideoRenderer。SwiftUI 场景一律传nil,把meeting.cameraTrack交给SRTCVideoView(track:)即可preset取值来自 SRTC 的CameraPreset:.h180p、.h360p、.h720p(默认)、.h1080p
切换摄像头
SMeetingError.deviceError。
房间策略对开启的影响
主持人可以设置房间级的媒体策略,它们会直接决定普通成员能否自行开启:
当「全体静音」且「禁止自我解除」同时为
true,且你不是主持人 / 联席主持人时,requestOpenMic() 会抛出 SMeetingError.unauthorized。摄像头同理。
建议在 UI 上提前反映这个状态,而不是让用户点了按钮才收到报错:
userMicStateDidChange(byAdmin 为 true)。摄像头同理。
响应主持人的开启邀请
主持人可以邀请某位成员开麦或开摄像头,成员端会收到事件:byAdmin 与 adminUid 一起传给开启接口:
传了主持人也可以直接关闭某位成员的麦克风 / 摄像头,被关闭方不需要处理,SDK 会自动停流并上报byAdmin: true就必须同时传adminUid,否则这次调用不会带上「响应邀请」的语义。
userMicStateDidChange / userCameraStateDidChange(byAdmin 为 true,opUid 为操作者)。
远端音频
远端音频在进入会议时会自动订阅,你通常只需要一个「扬声器开关」:退会前的清理
exitRoom() 会离开会议,但本地采集建议由你显式关掉,让 UI 状态和硬件状态同时归位: