WebRTC ICE与SDP交换成功,但PeerConnection卡在New状态
Android WebRTC ICE连接停留在Checking状态的常见原因
- ICE候选处理时机错误:如果在本地SDP未完成设置就添加远程ICE候选,或者远程SDP未正确配置就开始处理ICE,会导致ICE无法正常配对。必须确保
setLocalDescription/setRemoteDescription的异步回调执行完成后,再添加对应的ICE候选。 - 网络与ICE候选类型问题:
- 双方仅存在主机型(Host)候选且不在同一局域网,NAT穿透失败;
- 未配置有效的STUN/TURN服务器,公网环境下无法完成NAT穿越;
- 网络防火墙或运营商屏蔽了ICE所需的UDP端口,导致候选无法连通。
- WebRTC库配置或版本问题:
- 使用的库版本存在ICE收集逻辑bug,导致
ICE Gathering State一直处于Gathering状态,无法完成候选收集; - PeerConnection初始化时ICE服务器配置错误(如STUN地址无效、TURN认证信息错误),无法获取有效的中继候选。
- 使用的库版本存在ICE收集逻辑bug,导致
- SDP参数不匹配:
- SDP中的媒体编码格式、类型不兼容,比如一方仅支持H.264,另一方仅支持VP8,会阻碍连接建立;
- SDP中的ICE ufrag/密码不匹配,导致ICE校验失败,无法建立连接。
- 线程操作违规:WebRTC的核心操作(设置SDP、添加ICE候选等)必须在专用线程(如库提供的
Executor)中执行,若在主线程或非指定线程操作,会导致状态更新异常或逻辑阻塞。
内容的提问来源于stack exchange,提问作者Ritu
相关产品推荐
相关产品推荐

