created by snowlyg.
此前已在局域网环境中完成音视频通话方案落地(详见:如何在复杂的局域网网络情况下,保证视频电话功能的稳定使用?)。本次目标是在原有架构基础上升级支持公网场景,因此引入 coturn 作为中继服务,并对不同网络/不同 Android 版本设备进行兼容性验证。
本文重点记录排查思路与过程(以及关键转折点),而不是“只给结论”的教程。
现象:Android 8 与 Android 14 设备进行视频通话时,Android 14 端有约 90% 概率在通话 30s–60s 内自动退出;Android 8 端则表现正常。仍有约 10% 概率双方可持续正常通话。

图1
初期在日志/抓包中观察到一条 127.0.0.x 相关的中继通道协商失败(timeout),并且几乎总是在该报错出现后通话被中断,因此一度误以为这是根因。
但后续确认:该 timeout 本身并不会直接导致通话中断,属于“误导性现象”。真正触发中断的是 WebRTC 连接状态变化:
IceConnectionChange / StandardizedIceConnectionChange 进入 DISCONNECTED 或 FAILED测试同学反馈:设备在公司内网通话正常;当接入外部网络(手机热点、移动 WiFi 等)进行通话时,大约 30s 左右会自动挂断。
整个排查过程比较曲折,前后持续近 1 个月。
观察到当音视频服务部署在公司内网服务器时:
为避免“内网直连”掩盖问题,将音视频服务部署到外网服务器,确保:
coturn 中继阶段结论:排除“不同网络环境导致通话质量差”这一方向(问题稳定复现,且与是否强制走中继强相关)。