Skip to main content

概述

会议里的媒体控制分成三块:
  • 本端采集与发布:摄像头、麦克风、屏幕共享
  • 远端播放:远端音频总开关、远端视频订阅
  • 房间策略:主持人设置的全体静音 / 全体禁画 / 禁共享会直接影响你能不能开
命名上有一条明确规律:开启侧带 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 上提前反映这个状态,而不是让用户点了按钮才收到报错:
此外,当主持人在会中打开「全体静音」时,非主持人成员的麦克风会被 SDK 自动关闭,并上报一次 userMicStateDidChangebyAdmintrue)。摄像头同理。

响应主持人的开启邀请

主持人可以邀请某位成员开麦或开摄像头,成员端会收到事件:
同意时,把 byAdminadminUid 一起传给开启接口:
拒绝时调用对应的拒绝接口:
传了 byAdmin: true 就必须同时传 adminUid,否则这次调用不会带上「响应邀请」的语义。
主持人也可以直接关闭某位成员的麦克风 / 摄像头,被关闭方不需要处理,SDK 会自动停流并上报 userMicStateDidChange / userCameraStateDidChangebyAdmintrueopUid 为操作者)。

远端音频

远端音频在进入会议时会自动订阅,你通常只需要一个「扬声器开关」:
这个方法只切播放开关,不会退订,因此来回切换没有重新协商的代价。 如果你确实需要按成员精细控制订阅关系(例如只听某几路),可以用:

退会前的清理

exitRoom() 会离开会议,但本地采集建议由你显式关掉,让 UI 状态和硬件状态同时归位:

相关页面