独立 RTC 频道
独立 RTC 频道用于业务会议、语音房、临时协作等音视频场景。你的服务端指定 channel_id 创建频道,用户登录后加入。同一频道中的发布者可以发送音视频,订阅者只接收;不需要先建立好友关系或创建 IM 群。
频道媒体使用平台提供的 LiveKit 服务。应用需已开通音视频、套餐允许音视频,并由平台启用频道能力及本应用灰度。SDK 的运行配置提供 rtc_channels_enabled 和 rtc_channels_protocol_version,当前协议版本为 1;各端是否具备媒体适配,还要检查 channels.supported。
选择通话还是频道
| 能力 | 单聊 / 群通话 | 独立频道 |
|---|---|---|
| 业务标识 | call_id,群通话关联 group_id | 业务服务端指定的 channel_id |
| 进入方式 | 呼叫、振铃、接听或加入群通话 | 直接加入开放频道,或使用绑定用户的一次性票据 |
| 成员资格 | 单聊规则或 IM 群成员规则 | 应用登录身份、频道票据及封禁规则 |
| 发布权限 | 通话参与者 | publisher 发布,subscriber 只接收 |
| IM 记录 | 可写入单聊 / 群聊通话记录 | 不生成 IM 群、会话消息或通话记录 |
| 客户端控制 | 通话信令及客户端接口 | HTTP 加入、心跳、续凭据和退出;通知用于加快状态刷新 |
频道不自带聊天消息、呼叫邀请、系统振铃、屏幕共享或媒体数据消息。需要文字互动时,由你的业务组合 IM 消息或聊天室。
接入顺序
- 在控制台确认音视频可用,并请平台为应用开启频道灰度。
- 业务服务端用 App Token 创建频道,指定媒体类型和访问方式。
ticket频道由服务端为指定用户签发票据,经你的登录业务接口交给该用户。- 用户用客户端 SDK 登录,检查能力后加入。默认不开启麦克风和摄像头,采集由用户明确操作触发。
- SDK 完成媒体连接和服务端入会确认后返回句柄;页面离开时退出频道。
完整示例见频道快速接入。App Token 只保留在业务服务端,频道票据不能代替 IM 登录凭证。
访问方式与角色
open:本应用的登录用户可以加入,不能提交票据。角色取频道的default_role,仍受应用状态、封禁和共享占用限制。ticket:默认访问方式;使用绑定本应用内部用户、频道和角色的一次性票据。不能凭用户名、频道 ID 或媒体房间名绕过授权。publisher:可以发布麦克风音频;视频频道还可以发布摄像头视频。subscriber:只能接收。关闭采集并不把发布者变成订阅者;角色由服务端授权确定。
audio 频道禁止摄像头;video 频道即使关闭摄像头也按视频频道用量统计。媒体类型、访问方式、默认角色及人数上限在创建后不可修改。
生命周期与占用
频道为 open → closing → closed。关闭或到期后拒绝新加入,已有成员开始退出,媒体回收完成后才为 closed。频道 ID 区分大小写,关闭后不能复用。
一次加入生成独立 session_id,状态为 joining → joined → leaving → left。joining 已预留席位;leaving 仍可能占用席位和共享额度,不能通过生成新加入键绕过回收。
同一应用的同一用户只能占用一个通话或频道媒体会话,本人的其他登录设备不能同时加入。频道与原通话共用应用并发额度:活跃通话与活跃频道媒体代次合计,频道不按每个参与者扣一个并发额度。空频道的媒体房间回收不等于关闭业务频道。
seat_count 是占位数;joined_count 是最近确认的媒体在线数。media_state=unknown 时保留最近确认人数,不能将其显示为确定的实时人数;成员 media_connected=null 同样表示观察未知。
平台与发布状态
| 平台 | 当前源码能力 |
|---|---|
| Web / React / Vue | 频道媒体接入和状态订阅 |
| Android | Kotlin / Java API、LiveKit 适配及视频视图 |
| Flutter / iOS | Flutter LiveKit 接入及视频组件;iOS 通过 Flutter 插件接入 |
| Tauri | 界面窗口运行媒体,依赖实际 WebView 与设备权限 |
| UniApp H5 | 专用 H5 入口,复用 Web SDK |
| 微信小程序 | 频道、本人会话和成员查询;不支持频道媒体加入 |
| UniApp App / 独立 Swift SDK | 尚未提供对应接入实现 |
这些频道能力已写入源码并完成部分自动化检查,尚未发布本轮 SDK 制品;真机互通及后台持续采集仍需验收。请使用包含频道 API 的 SDK 版本,不能仅开启服务端配置就让旧版 SDK 支持频道。
