AKStream.Next · 文档中心

创建 RTC 会议并排查连接

创建 RTC 会议并排查连接

视频会议页面用于把人员摄像头、麦克风和屏幕放进同一个 SFU 房间。1.0.0.158 可把已授权的外部视频通道接入会议,但具体 GB28181/RTSP 设备和编码兼容仍须在目标环境验收。会议媒体不会自动变成每人都能播放的格式;会后的按需整场 MP4 与会中 SFU 转发不是同一件事。

RTC 新建会议、加入、票据和媒体状态的编号位置

这张编号图来自较早的 RTC 页面;1.0.0.158 的导航名称为“视频会议”。按实际安装版本寻找会议列表、加入入口和对象状态。

按编号操作:① 新建或预约会议;② 在会议列表选择“加入”;③ 业务系统场景填写短时入会票据后加入;④ 选中成员或媒体,在右侧确认发布状态、编码、码率和丢包。

第一次测试只做两个人

  1. 使用 HTTPS 打开 RTC 页面,创建一个测试会议。
  2. 第一个浏览器加入并允许摄像头、麦克风权限。
  3. 第二个浏览器或另一台电脑加入同一会议。
  4. 双方分别发布音视频,并订阅对方画面。
  5. 让双方轮流静音、关闭摄像头、共享屏幕,再正常离开。

成功时,成员列表与实际人数一致,双方都有声音和画面,离开后成员与媒体会话会被释放。

浏览器到媒体节点的链路

sequenceDiagram
    participant B as 浏览器
    participant A as AKStream.Next
    participant M as MediaServer SFU
    B->>A: 加入房间并取得短时票据
    B->>A: WHIP 发布 SDP Offer
    A->>M: 代理本次发布协商
    M-->>A: SDP Answer 与会话位置
    A-->>B: 返回已授权协商结果
    B->>A: WHEP 订阅目标流
    A->>M: 代理本次订阅协商
    M-->>B: ICE 连通后传输媒体

WHIP/WHEP 请求体是 application/sdp,不是 JSON。应用应通过同批 RTC SDK 维护会话、令牌续签和释放;直接集成协议时必须处理真实会话 ID、Location 和 ETag,不能只保存 SDP 文本。页面刷新或重连也需要释放旧设备会话。

为什么必须配置 HTTPS、STUN 和 TURN

主流浏览器只在安全上下文中开放摄像头和麦克风。HTTPS 解决页面与信令安全,但媒体能否连通还取决于 ICE:

现场网络 通常需要
同一局域网 主机候选可能足够
普通家庭或公网 NAT STUN 帮助发现公网映射
对称 NAT、严格企业网、运营商网络 TURN relay
禁止 UDP 的网络 TURN TCP/TLS 路径

TURN 凭据必须短时有效,端口池和带宽要单独容量规划。多网卡服务器不能向浏览器发布不可达的网卡地址。

有画面没声音或只有一方能看

按顺序检查:

  1. 浏览器地址栏是否拒绝了摄像头或麦克风。
  2. SDP 中对应的 audio/video m-line 是否存在,方向是否正确。
  3. 双方是否有共同 codec,Safari 是否经过单独兼容验证。
  4. ICE candidate 是否可达,是否一直停在 checking/failed。
  5. 企业网是否封锁 UDP,TURN TCP/TLS 是否真的可用。
  6. 刷新后是否残留旧 Participant 或 MediaSession。

房间事件使用稳定序号或游标续读,调用方要幂等处理。成员心跳超时后,平台应同步释放发布、订阅和相关资源。

做完后这样验收

  • 覆盖 Chrome、Edge 和项目要求的 Safari。
  • 覆盖局域网、公网 NAT、TURN relay 和禁用 UDP。
  • 测试双人、多成员、屏幕共享、拒绝权限和重复加入。
  • 测试刷新、短暂断网、睡眠唤醒和正常离开后的资源释放。
  • 房间录制能从发布流走到文件与索引,而不只是返回控制成功。

仍然失败时进入 RTC 或浏览器连接失败。