> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stmlink.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> 对外开放的服务端接口有两组前缀，都用同一套鉴权：`/server/v1/...`（SRTC 与 SMeeting 的主接口）和 `/stm/srvapi/v1/...`（SMeeting 的用户体系，服务端极简对接会用到）。鉴权是 app_id + nonce + timestamp + signature 四个请求头，用 app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。除这两组前缀外的接口均为内部接口，不要建议客户调用。
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端签发后下发（SRTC 走 `/server/v1/channel/grant`，SMeeting 走 `/stm/srvapi/v1/member/grant`）。
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上。
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。苹果平台每个产品都有两套 SDK（Swift 原生与 Objective-C），两套 API 不能混用。

# 更新日志

> Android SRTC 音视频 SDK 版本更新记录

> 本页根据 `rtc-android` 仓库的版本配置和提交记录整理。可通过 `RTCEngine.version()` 获取运行中的实际 SDK 版本。

### \[2.0.31] - 2026.08.31

#### 变更

* 将 `audio-optimization` 分支合并入 `master` 分支。

### \[2.0.30] - 2026.08.29

#### 修复

* 修复本端被移出频道或发生不可恢复断开后，频道 Session 未及时摘除和媒体资源未完整释放，导致同频道重新加入可能被误判为重复入会的问题。

#### 变更

* 重构部分内部目录并优化 AAR 混淆规则，明确 Track 与公开枚举的保留边界；仅供 SDK 内部使用的 `RemoteStreamStatus` 移入 `enumerateLocal`，未使用的 `AudioOutputOptions` 已删除。

### \[2.0.29] - 2026.08.26

#### 变更

* 将 `screenCapture` 分支合并入 `master` 分支。

### \[2.0.28\_audioOptimization.2] - 2026.08.26

#### 优化

* FY 和 WS 流媒体引擎的外部麦克风上行新增 AEC、NS 硬件优先、软件兜底策略：两项能力独立探测和验证，平台效果未真正启用时自动回退到 WebRTC 软件处理，避免重复处理或处理缺失。

#### 变更

* `RTCLocalAudioFrameEvent` 的 PCM 数据阶段随本版本的 AEC/NS 策略调整：平台 AEC/NS 已启用时包含对应平台处理；回退到 WebRTC 软件处理的项目，返回的是软件 APM 处理前数据。

### \[2.0.28\_audioOptimization.1] - 2026.08.26

#### 修复

* 优化 FY 和 WS 流媒体引擎的外部麦克风推送到 WebRTC ADM 的桥接节拍，修复部分设备上行音频出现卡顿、断流、气泡音或类似丢帧听感的问题。

#### 变更

* `RTCLocalAudioFrameEvent` 改为跟随 Engine 级物理麦克风采集，在 SDK 音频分发线程串行回调，不再依赖某个频道是否发布音频；应用回调耗时不会阻塞上行，旁路队列满载时会丢弃较旧的应用回调帧。

### \[2.0.27\_screenCapture.1] - 2026.08.25

#### 新增

* FY 和 WS 流媒体引擎新增 Android 原生屏幕采集能力，支持应用退至后台后继续共享，并支持将同一次屏幕采集发布到多个频道；
* 新增 Engine 级本地屏幕 I420 帧回调，仅在应用注册监听器后复制并回调帧数据。

#### 变更

* `LocalScreenTrack.startCapture` 统一为带操作结果回调的启动入口；结果回调表示 SDK 是否接纳启动操作，后续采集状态通过 `RTCScreenStateEvent.onScreenCaptureStateChanged` 通知；
* 屏幕采集状态类型调整为 `ScreenCaptureState`，包含 `START`、`STOP` 和 `ERROR` 三种状态；
* FY 和 WS 屏幕采集不再依赖 WebRTC `ScreenCapturerAndroid`，OOK 屏幕采集链路保持不变。

#### 修复

* 修复共享静态页面时首帧可能长时间不显示的问题；
* 完善系统停止共享、应用主动停止、屏幕旋转、锁屏以及单应用内容隐藏等场景下的状态通知和资源释放。

### \[2.0.28] - 2026.08.22

#### 修复

* 修复 OOK 媒体客户端释放线程与初始化线程不一致可能导致的不稳定问题。

#### 变更

* 更新 `librtc.so`，适配服务端移除 OOK 流媒体配置。

### \[2.0.27] - 2026.08.19

#### 变更

* 将 `disconnect-reconnect` 分支合并至 `master`，正式版整合 `2.0.26_disconnectReconnect.1` 的断网重连相关变更。

### \[2.0.26\_disconnectReconnect.1] - 2026.08.18

#### 修复

* 修复多频道场景反复断网重连时 WebRTC 资源释放不完整，可能导致应用崩溃的问题。

#### 优化

* 流媒体断线重连改为 1、2、4、8、16 秒递增等待，之后每 16 秒继续重试；网络恢复后仍会自动重连，降低多频道断网期间的请求压力。

### \[2.0.26] - 2026.08.12

#### 新增

* 支持一个 `RTCEngine` 同时加入多个频道；`join(...)` 返回独立的 `RTCChannel` 句柄，默认频道继续兼容 Engine 扁平接口；
* 麦克风采集与入会、发布解耦，`LocalMicTrack` 新增显式 `startCapture` / `stopCapture`、输入设备枚举与切换能力；
* 新增 Engine 全局错误、摄像头设备、麦克风设备和本地 PCM 帧监听器；
* 新增按公共、频道、摄像头、麦克风、流媒体和 HTTP 分域的 `102xxx` SDK 错误码及 `RtcErrorCatalog` 查询能力。

#### 变更

* `RTCEngine.create(...)` 新增必填 `RTCEngineEvent`；
* `RTCEngine.join(...)` 改为接收本频道 `RTCClientEvent` 并返回 `RTCChannel?`，入会结果由 `onJoinSucceed` / `onJoinFailed` 通知；
* `RTCClientEvent` 的自定义消息、断开和重连回调新增 `channel` 参数，原 `onError(...)` 移至 `RTCEngineEvent`；
* `RTCMediaEvent` 的所有回调新增 `channel` 参数，摄像头设备事件迁移到 `RTCCameraDeviceEvent`；
* `RTCRemoteVideoEvent.onReceiveStreamStatusChange(...)` 新增 `channel` 参数；
* `RTCResultListener2<T>` 更名为 `RTCValueResultListener<T>`，`StatusCode` 与 Android SDK 自产错误码职责分离。

#### 修复

* 修复多频道场景关闭摄像头后本地采集未停止的问题；
* 修复断线重连后本地音频静音状态丢失，以及同一轨道重复发布时回调过早失败或丢失的问题。

### \[2.0.24\_multiChannel.3] - 2026.08.11

#### 修复

* 修复断线重连后本地音频静音状态丢失的问题，新建音频轨道会继续遵循重连前的启停状态；
* 修复同一轨道重复发布时后续请求回调过早失败或丢失的问题，合并请求会在真实发布完成后统一返回结果。

### \[2.0.25] - 2026.08.11

#### 修复

* 修复 FY 流媒体引擎在断线重连期间并发访问已释放媒体客户端或 `RtpSender` 可能导致的崩溃，并隔离旧会话回调、合并重复重连请求；
* 修复媒体回调实现暴露内部会话类型导致的 Kotlin 编译错误。

### \[2.0.24\_multiChannel.2] - 2026.08.10

#### 新增

* 支持一个 `RTCEngine` 同时加入多个频道；`join(...)` 返回独立的 `RTCChannel` 句柄，默认频道继续兼容 Engine 扁平接口；
* 麦克风采集与入会、发布解耦，`LocalMicTrack` 新增显式 `startCapture` / `stopCapture`、输入设备枚举与切换能力；
* 新增 Engine 全局错误、摄像头设备、麦克风设备和本地 PCM 帧监听器；
* 新增按公共、频道、摄像头、麦克风、流媒体和 HTTP 分域的 `102xxx` SDK 错误码及 `RtcErrorCatalog` 查询能力。

#### 变更

* `RTCEngine.create(...)` 新增必填 `RTCEngineEvent`；
* `RTCEngine.join(...)` 改为接收本频道 `RTCClientEvent` 并返回 `RTCChannel?`，入会结果由 `onJoinSucceed` / `onJoinFailed` 通知；
* `RTCClientEvent` 的自定义消息、断开和重连回调新增 `channel` 参数，原 `onError(...)` 移至 `RTCEngineEvent`；
* `RTCMediaEvent` 的所有回调新增 `channel` 参数，摄像头设备事件迁移到 `RTCCameraDeviceEvent`；
* `RTCRemoteVideoEvent.onReceiveStreamStatusChange(...)` 新增 `channel` 参数；
* `RTCResultListener2<T>` 更名为 `RTCValueResultListener<T>`，`StatusCode` 与 Android SDK 自产错误码职责分离。

### \[2.0.23] - 2026.07.27

#### 优化

* 引入远端音频订阅声明式对账器 `SubscribeReconciler`，将同一轨道的订阅和退订操作串行化，避免高频会控事件导致状态不一致；
* 流媒体重连后按最终订阅意图自动恢复远端音频订阅，并为订阅失败提供最多 3 次的有界退避重试；
* 用户离开频道或频道释放时自动清理订阅对账状态。

### \[2.0.22] - 2026.07.23

#### 新增

* 新增远端视频帧全量落盘能力，便于问题排查；

#### 优化

* 新增 `armeabi-v7a` ABI 支持并优化构建配置。

### \[2.0.21] - 2026.07.22

#### 优化

* 简化网络质量变化回调：每条质量报告均触发回调，并新增 `STABLE` 趋势状态；
* 为信令数据通道消息补充序列化字段注解，避免混淆后解析失败。

### \[2.0.19] - 2026.07.22

#### 新增

* 新增本地音频临时静音接口 `enableLocalAudio`。

### \[2.0.18] - 2026.07.22

#### 修复

* 修正 Camera2 帧旋转角度计算，使其与 WebRTC 语义一致；
* 默认启用前置摄像头镜像，改善设备旋转时的本地预览体验。

### \[2.0.17] - 2026.07.20

#### 新增

* 新增网络质量跨档变化回调。

### \[2.0.16] - 2026.07.15

#### 新增

* 支持频道内用户身份变更，以及观众升降级处理。

### \[2.0.15] - 2026.07.04

#### 修复

* 优化资源释放流程，修复并发场景下可能发生的崩溃。

### \[2.0.14] - 2026.07.03

#### 优化

* 优化音频能量回调，兼容特定音频轨道 ID。

### \[2.0.13] - 2026.07.03

#### 修复

* 修复 WebRTC m-line 复用导致订阅端 `track.id` 冻结、流识别错误的问题；
* 修复远端视频 View 复用时画面旋转角度异常的问题。

#### 优化

* 重构摄像头采集与推流状态机，支持音频推流的声明式对账；
* 优化 YUV 帧处理和展讯（sprd）编码器兼容性。

### \[2.0.11] - 2026.06.17

#### 新增

* `LocalCameraTrack` 新增前置摄像头镜像控制能力。

### \[2.0.10] - 2026.06.15

#### 新增

* 支持网宿通用流订阅。

### \[2.0.9] - 2026.05.20

#### 新增

* 适配 SRTC SFU 26.4：支持服务端媒体质量数据、活跃说话人、订阅候选层及画质自动降级字段；
* 新增摄像头能力与设备列表查询、按 `cameraId` 选择摄像头、摄像头角度偏移和热插拔事件；
* 摄像头采集切换为原生 Camera2 实现，并优化帧转换性能与内存使用。

### \[2.0.8] - 2026.05.09

#### 新增

* 重构网宿流媒体引擎，支持发布附加流。

### \[2.0.7] - 2026.04.21

#### 优化

* 优化 Ook 流媒体引擎的大流、小流分辨率、帧率和码率配置。

### \[2.0.6-alpha.9] - 2026.03.09

#### 新增

* 支持 FyStreamEngine 和 WsStreamEngine 的自定义视频流输入与发布；
* 支持自定义流和屏幕共享流使用 1080p、10 fps 参数；
* Android 14 及以上前台服务增加麦克风类型权限支持。

#### 变更

* `RTCClientEvent.onChannelNotStarted` 更名为 `onError`；
* `LocalCustomVideoTrack.inputData` 改为接收基础帧数据，由 SDK 负责组装。

### \[2.0.6-alpha.8] - 2025.11.19

#### 修复

* 修复 SFU 连接断开后无法重连、订阅时 `ignore` 处理异常等问题；
* 升级 VCS SDK，移除底层 MQTT 自身重连机制以规避崩溃。

### \[2.0.6-alpha.7] - 2025.11.14

#### 新增

* 自定义消息回调新增 `sid` 和 `nickName` 字段。

#### 修复

* 修复部分 HarmonyOS 3.0 及以下设备发送视频时出现绿条的问题。

### \[2.0.6-alpha.5] - 2025.10.24

#### 修复

* 修复流媒体重连时 `OptionInfo` 信息缺失、远端设备断开后无法重新连接等问题。

### \[2.0.6-alpha.2] - 2025.10.13

#### 变更

* 订阅远端流以 `trackId` 作为主要标识，新增 `getUserTrackInfoByTrackId`；
* 远端成员离开时由 SDK 自动取消订阅，无需应用层额外处理。

#### 修复

* 修复 WebRTC 发布时 SDP 持续膨胀、远端音频订阅失败及流操作时序异常的问题。

### \[2.0.6-alpha.1] - 2025.09.26

#### 新增

* 新增音频能量、媒体质量和扬声器控制回调；
* 支持自定义编码参数和会议外预览的摄像头、屏幕共享能力。

#### 修复

* 修复订阅响应 SDP 或 offer 为空时的异常；
* 优化 YUV 帧转换，兼容 stride。

### \[2.0.5] - 2025.09.09

#### 修复

* 修复屏幕录制服务找不到、停止共享回调缺失和混淆配置问题。

### \[2.0.4] - 2025.09.04

#### 新增

* 统一 Ook 与网宿媒体统计数据回调，补充丢包率计算和音量柱能力。

### \[2.0.2-alpha.2] - 2025.08.18

#### 新增

* `PublishCustomOptions` 支持控制是否发布小流。

#### 修复

* 升级 WebRTC SDK，缓解 HarmonyOS 设备编码器异常导致的卡顿；
* 修复断网重连后已发布、已订阅轨道无法恢复及横竖屏画面角度异常的问题。

### \[2.0.1] - 2025.05.23

#### 变更

* 重构 RTC SDK 层，解耦流媒体能力并支持切换流媒体引擎；
* 引入 WebRTC 与 SFU 流媒体框架，支持摄像头采集、发布、订阅和资源释放。

### \[2.0.0-34] - 2025.04.27

#### 新增

* 支持保存 H.264 文件，音视频文件统一存储至 `audioVideo` 目录。

### \[2.0.0-33] - 2025.04.23

#### 新增

* 新增 1080P、720P、480P、180P 内置摄像头预设。

### \[2.0.0-32] - 2025.03.25

#### 新增

* `onJoinSucceed` 回调新增 SDK 版本号参数。

#### 修复

* 更新底层库并修复文件存储位置、日志模块重新初始化等问题。

### \[2.0.0-31] - 2025.01.24

#### 新增

* 新增语音转写功能开关。

#### 修复

* 修复屏幕共享断网重连崩溃、取消订阅状态错误和 IM 连接异常等问题。

### \[2.0.0-30] - 2024.12.22

#### 变更

* 用户离开频道回调直接提供 `UserInfo`。

### \[2.0.0-29] - 2024.10.24

#### 变更

* 轨道新增、更新、移除事件不再过滤当前用户。

### \[2.0.0-28] - 2024.10.17

#### 优化

* 成员被订阅尚未发布的流时，补充明确日志提示。

### \[2.0.0-27] - 2024.10.11

#### 新增

* 新增即时通讯能力；

#### 变更

* 底层库适配 MQTT SSL 连接，移除 `RTCClientOptions` 中的 `netid` 和 `sgid` 配置。

### \[2.0.0-26] - 2024.09.20

#### 优化

* 优化即时通讯断连原因及简单事件回调。

### \[2.0.0-25] - 2024.09.20

#### 新增

* 增加即时通讯基础能力与应用层测试用例。
