SMeeting 上。使用说明见 媒体控制 与 视频渲染。
NativeVideoView 是 SDK 为渲染视图定义的别名,实际类型是 SRTC 的 SRTCVideoRenderer。
摄像头
requestOpenCamera(view:deviceId:preset:byAdmin:adminUid:)
打开摄像头:向会议申请 → 开始采集 → 发布。
返回值:
LocalCameraTrack(可忽略,也可随时读 meeting.cameraTrack)
可能抛出:
SMeetingError.unauthorized—— 房间全体禁画且禁止自我解除,且你不是主持人 / 联席主持人SMeetingError.apiError(code:message:)- 采集或发布失败时的底层错误(此时 SDK 已自动回滚,无需你再调
closeCamera())
deviceId,会切到目标设备。
closeCamera()
userCameraStateDidChange。
switchCamera(deviceId:)
返回值: 无
可能抛出:
SMeetingError.deviceError(_:) —— 摄像头尚未开启
麦克风
requestOpenMic(deviceId:preset:byAdmin:adminUid:)
返回值: 无
可能抛出:
SMeetingError.unauthorized—— 房间全体静音且禁止自我解除,且你不是主持人 / 联席主持人SMeetingError.apiError(code:message:)- 采集或发布失败时的底层错误(SDK 会自动回滚)
closeMic()
userMicStateDidChange。
屏幕共享
requestShare(shareType:preset:view:byAdmin:adminUid:)
返回值: 无
可能抛出:
SMeetingError.unauthorized—— 房间禁共享且你不是主持人 / 联席主持人SMeetingError.internalError(_:)—— 本端已在共享SMeetingError.apiError(code:message:)- 采集失败(例如用户拒绝屏幕录制授权)时的底层错误
shareType 为 .whiteBoard 时不创建媒体流,只广播共享状态并触发 roomShareDidStart。
requestShare(source:preset:view:byAdmin:adminUid:)
指定采集源的重载,仅 macOS 12.3 及以上。
返回值: 无
可能抛出: 同上一个重载。
stopShare()
远端视频
subscribeRemoteVideoTrack(uid:trackDesc:)
订阅远端视频轨道,不绑定渲染视图。
返回值:
RemoteVideoTrack
可能抛出:
SMeetingError.notInMeetingSMeetingError.internalError(_:)—— 该成员没有这一路轨道
unsubscribeRemoteVideoTrack(uid:trackDesc:)
无条件取消订阅,不考虑是否还有渲染视图在用。
返回值: 无
可能抛出:
SMeetingError.notInMeeting。轨道不存在时静默返回。
startPlayRemoteVideo(view:uid:trackDesc:)
订阅并把画面绑定到传入的渲染视图,适合 UIKit / AppKit。
返回值:
RemoteVideoTrack
可能抛出: 同 subscribeRemoteVideoTrack(uid:trackDesc:)
stopPlayRemoteVideo(view:uid:trackDesc:)
解绑渲染视图。只有当这路轨道上已经没有任何渲染视图时才会真正取消订阅。
返回值: 无
可能抛出:
SMeetingError.notInMeeting
远端音频
进入会议时远端音频已自动订阅,以下接口用于需要精细控制的场景。subscribeRemoteAudioTrack(uid:trackDesc:)
返回值: 无
可能抛出:
SMeetingError.notInMeeting、SMeetingError.internalError(_:)
unsubscribeRemoteAudioTrack(uid:trackDesc:)
参数同上。轨道不存在时静默返回。
toggleRemoteAudioMute(_:)
远端音频播放总开关,只切播放不改订阅关系。
返回值: 无,不抛错。
合屏画面(MCU)
startPlayRemoteVideoMcu(view:uid:)
订阅并播放服务端合成画面。需要服务端已配置合屏任务。
返回值:
RemoteVideoTrack
可能抛出: SMeetingError.notInMeeting、SMeetingError.internalError(_:)(未找到合成画面轨道)
stopPlayRemoteVideoMcu(view:)
返回值: 无