AKStream.Next · 文档中心

RTC 或浏览器连接失败

RTC 或浏览器连接失败

WHIP/WHEP 返回成功只表示信令交换完成,媒体仍需通过 ICE 建立。按安全上下文、会话、SDP、ICE、媒体与清理六层检查。

flowchart LR
    A[HTTPS 与权限] --> B[房间与成员]
    B --> C[WHIP/WHEP SDP]
    C --> D[ICE / TURN]
    D --> E[真实媒体]
    E --> F[离开与资源释放]

1. 浏览器安全上下文

  • 页面使用有效 HTTPS,域名与证书匹配。
  • 浏览器已授予摄像头/麦克风权限。
  • 没有混合内容或被企业策略阻止的设备访问。
  • 查看 Console、Network 和 webrtc-internals。

2. 房间与成员

  • Room 存在且未达到容量。
  • Participant 身份、角色和心跳有效。
  • 发布/订阅目标正确。
  • 页面刷新后没有残留同一 participant 的旧会话。

3. WHIP/WHEP 与 SDP

请求/响应 Content-Type 应为 application/sdp。确认 Offer/Answer 中:

  • 音视频 m-line 未被意外拒绝;
  • codec 双方有交集;
  • direction 符合发布或订阅;
  • fingerprint 与 DTLS 正常;
  • candidate 没有被代理或序列化破坏;
  • Location/ETag 和会话 ID 被保存。

4. ICE 与网络

观察 ICE gathering、checking、connected/failed 状态和选中的 candidate pair:

  • 局域网成功、公网失败:检查 external IP、NAT 映射与 STUN。
  • 对称 NAT 失败:部署并验证 TURN relay。
  • UDP 禁用失败:提供 TCP/TLS TURN。
  • 多网卡:删除或降低不可达 candidate 的优先级。
  • TURN 认证失败:检查临时凭据有效期、时钟和 realm。

HTTPS 反向代理不能转发所有 ICE 媒体端口。

5. 有连接但无媒体

  • 发布轨道是否实际发送,浏览器是否静音。
  • codec、分辨率、码率和方向是否协商。
  • MediaServer 是否建立对应 MediaSession 与流。
  • 订阅拓扑是否指向正确 publisher。
  • 有画面无声音时检查音频权限、m-line 和 codec。

6. 重连与释放

页面关闭、成员离开或超时后应释放媒体会话。重连前查询旧 session,按服务端实际标识释放,再创建新会话。持续增长的 ReleaseFailed/Unreleasable 必须告警。

提交故障证据

提供浏览器及版本、网络类型、房间/成员/会话 ID、Offer/Answer 脱敏摘要、ICE 状态、选中 candidate 类型、MediaServer 日志和故障时间。不要提交 TURN 长期秘密或完整登录凭据。

恢复判据

在局域网和目标公网环境分别完成发布、订阅、断网重连和离开清理;连续多次刷新不产生重复成员或泄漏会话。