Skip to main content
以下能力仅在频道使用 SeaStart 引擎时可用。其它引擎下这些回调不会触发,主动接口会返回错误 —— 引擎由服务端下发的频道配置决定,业务代码无需判断,做好”没有回调也能正常工作”的兜底即可。 三个能力对应三个独立的强类型回调,与 track_event / track_sample 风格一致,C 侧无需解析 JSON。

切层(simulcast)

当发布端推了 simulcast 多层流时,订阅侧的层切换是全自动的:SDK 会自动把可用的各层登记为候选,SFU 根据带宽估计(BWE)在候选层之间切换。你不需要做任何配置,通常只需要监听切层结果。

切层完成回调

reason 取值:
当前命中的是哪一层? 订阅句柄(sub_key 里的 track_id)在整个订阅期间保持稳定,但实际命中的层会被动态切换。监听 layer_switched 拿到的 to_track_id 就是当前命中层,需要的话自行缓存一份 sub_key → 当前层 的映射即可。

rtc_switch_layer

主动请求 SFU 切到指定层。适合大小窗切换、窗口进入后台时主动降级这类场景。 返回值RTC_OK(请求已发出)/ RTC_INVALID_PARAM(句柄无效或参数为 NULL)/ RTC_NOT_CONNECTED(未入会)/ RTC_ERROR(引擎拒绝)。
请求成功只代表请求已发出,真正切到目标层要等 layer_switched 回调。本 SDK 只支持订阅侧的多层切换,不支持发布 simulcast 多层流。

网络质量

周期上报回调

SFU 周期性(典型 1Hz)上报上下行质量。
每一帧上报都会触发回调,节流由业务方自己做。要写日志或落监控的话请自行降采样。

rtc_get_connection_quality

主动拉取最近一帧质量数据。适合刚入会、还没等到第一次周期上报时先把 UI / 监控指标填上。 out 由调用方提供,SDK 直接填字段,无需释放。 返回值

活跃说话人

SDK 会把 SFU 的增量事件合并成全量快照再抛上来,按 level 降序排列,业务侧直接整体覆盖 UI 即可,不需要自己做差量合并。无人说话时 speakers_count = 0speakers = NULL
speakers 数组由 SDK 在回调期间持有,回调返回后立即释放。需要跨回调保留必须自行拷贝。