notInMeeting(208003)。
本地轨道
本地预览就是把
cameraTrack 交给 SRTCVideoView:
麦克风
setMicMuted 与 closeMic 的区别很重要:setMicMuted(true)—— 静音但轨道还在,对端仍看到你在会中,切回是瞬时的。 日常的”静音/取消静音”按钮用这个。closeMic()—— 真正关掉,轨道消失。
setMicMuted,不要每次都 closeMic + requestOpenMic。getLocalAudioLevel()(1.4.0 起)读一次本端麦克风的采集电平(0~1,线性),用来画「我」的音量条 ——
SFU 的 onActiveSpeakers 只含远端。未开麦 / 不在会中时返回 undefined;setMicMuted(true) 后归零。
每次调用是一次统计采集,轮询别超过 10Hz,平滑与分档由业务层做。byAdmin / adminUid 是给「响应主持人请求」用的:收到
onAdminRequestOpenMic 后询问用户,同意则带上这两个参数调用,
后端据此知道这是响应请求而非自主开麦。
摄像头
switchCamera() 不传参数就是前后置切换,传 deviceId 切到指定摄像头。
预设可用 SRTC 的 cameraPreset1080p() / cameraPreset720p() /
cameraPreset360p() / cameraPreset180p()。
摄像头没有
setMuted 这种”假关”—— 用户预期关摄像头就该真的关(指示灯熄灭),
所以只有 closeCamera()。变焦
currentCameraZoom() 在摄像头未开或没设过时返回 1。setCameraZoom() 对超范围的值做夹取而不抛错;摄像头未开或设备不支持时记 warning 后返回。
屏幕共享
ShareType 有 screen(屏幕)与 whiteBoard(白板)两种。stopShare() 两种都能停(白板自 1.4.0 起,之前的版本停不掉白板)。
主持人可以强制停止别人的共享:adminStopRoomShare(),见
会控接口。
订阅远端视频
trackDesc 选订哪一路:
宫格视图用
cameraSmall、大窗用 cameraBig,这是控制带宽最直接的手段。
20 个人的宫格全订大流会把下行打满。unsubscribeRemoteVideoTrack 的 debounceMs 用来抑制列表滚动导致的反复订阅/退订 ——
防抖窗口内重新订阅会取消待执行的退订,所以快速滑动是无感的。
unsubscribeRemoteVideoTrackIfNoRenderers 是守卫版:只在该轨道已经没有渲染器时
才退订,返回是否真的退了。适合”同一路画面渲染在多处”的场景。
订阅远端音频
远端音频播放控制
这几个只影响本地播放,不改变订阅关系 —— 也就是”关扬声器”而不是”退订”。
带宽照旧消耗,但切回来是瞬时的。
MCU 合流
__mcu__ 发布,不在会议成员里,所以不传 uid(1.4.0 起)。
合成任务没开时订阅不到画面;任务比订阅晚起来的话,在 onRoomMcuTask 报 running 后再调一次。
重复调用返回同一个轨道,收流状态经 onReceiveStreamStatusChange 上报(uid 为 __mcu__)。
≤1.3.0 的签名是
subscribeRemoteVideoMcu(uid: string),按成员 uid 去找画面,合成流永远订阅不到。
1.4.0 保留了这个可选参数以兼容旧调用(传了被忽略),新代码不要再传。adminUpdateLayout(layoutData) 控制。
音频路由
defaultAudioRoute—— 持久设置,长期有效,外设拔出后按它回落setAudioRoute—— 临时设置,优先级更高