【问题标题】:Ice connection failed message on Firefox but works on ChromeFirefox 上的 Ice 连接失败消息,但适用于 Chrome
【发布时间】:2018-10-11 14:44:23
【问题描述】:

我有一个 webRTC 项目,我可以在我的本地机器(nodeJS + firefox/chrome)上工作。当我尝试在亚马逊云下部署它时,我在 firefug 中遇到了一个问题:“Ice Connection Failed”(在 chrome 上运行良好)

这是从服务器收到的 SDP:

v=0
o=- 1613416276519675431 2 IN IP4 127.0.0.1
s=-
t=0 0
a=sendrecv
a=group:BUNDLE sdparta_0
a=msid-semantic:WMS
m=video 50830 UDP/TLS/RTP/SAVPF 120 121
c=IN IP4 172.19.0.4
a=candidate:3317750581 1 udp 2122260223 172.19.0.4 50830 typ host generation 0 network-id 1 network-cost 50
a=candidate:3317750581 1 udp 2122260223 172.19.0.4 50830 typ host generation 0 ufrag aByY network-id 1 network-cost 50
a=candidate:652303833 1 udp 1686052607 18.196.192.26 62055 typ srflx raddr 172.19.0.4 rport 50830 generation 0 ufrag aByY network-id 1 network-cost 50
a=candidate:2367567423 1 udp 41885439 172.19.0.3 64097 typ relay raddr 18.196.192.26 rport 62055 generation 0 ufrag aByY network-id 1 network-cost 50
a=candidate:2336434117 1 tcp 1518280447 172.19.0.4 47162 typ host tcptype passive generation 0 ufrag aByY network-id 1 network-cost 50
a=recvonly
a=extmap:5 urn:ietf:params:rtp-hdrext:toffset
a=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=fingerprint:sha-256 D7:1F:45:72:1D:CF:93:C5:39:1A:1E:EF:11:5C:50:2A:77:5D:46:B5:63:8B:9D:A8:9C:60:8E:ED:5E:4A:AE:FD
a=ice-options:trickle
a=ice-pwd:Pl6x4NQYDFLspg6WsFJiRGj8
a=ice-ufrag:aByY
a=mid:sdparta_0
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-fb:120 ccm fir
a=rtcp-fb:120 nack
a=rtcp-fb:120 nack pli
a=rtcp-fb:120 goog-remb
a=rtcp-fb:121 ccm fir
a=rtcp-fb:121 nack
a=rtcp-fb:121 nack pli
a=rtcp-fb:121 goog-remb
a=rtcp-mux
a=rtpmap:120 VP8/90000
a=rtpmap:121 VP9/90000
a=setup:active

来自 about:webrtc 的日志:

(ice/INFO) ICE-PEER(PC:1539156510689000 (id=8589934603 url=https://siteperso/):default)/STREAM(0-1539156510689000 (id=8589934603 url=https://siteperso/) aLevel=0)/COMP(1): All pairs are failed, and grace period has elapsed. Marking component as failed.

(ice/INFO) ICE-PEER(PC:1539156510689000 (id=8589934603 url=https://siteperso/):default): all checks completed success=0 fail=1

(generic/ERR) Error from TCPSocketChild: type: ConnectionRefusedError, name: Network

(turn/INFO) TURN(relay(IP4:192.168.44.17:64764/UDP|IP4:52.28.148.27:3478/UDP)): deallocating

当我在本地测试时,我有这个额外的标签:

a=fmtp:126 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1

这个标签不存在可能是个问题?

更新:

我尝试使用 google/other stun/turn 但行为没有改变 这是来自 chrome 和 firefox coturn 的日志

// chrome working


140: handle_udp_packet: New UDP endpoint: local addr 172.18.0.2:3478, remote addr 10.126.240.227:55194
140: session 129000000000000001: realm <webrtc> user <>: incoming packet BINDING processed, success
140: handle_udp_packet: New UDP endpoint: local addr 172.18.0.2:3478, remote addr 10.126.229.172:52614
140: session 129000000000000002: realm <webrtc> user <>: incoming packet BINDING processed, success
140: session 129000000000000001: realm <webrtc> user <>: incoming packet message processed, error 401: Unauthorised
140: IPv4. Local relay addr: 172.18.0.2:59273
140: session 129000000000000001: new, realm=<webrtc>, username=<mph>, lifetime=600
140: session 129000000000000001: realm <webrtc> user <mph>: incoming packet ALLOCATE processed, success
140: session 129000000000000001: realm <webrtc> user <mph>: incoming packet CREATE_PERMISSION processed, success
140: session 129000000000000001: realm <webrtc> user <mph>: incoming packet CREATE_PERMISSION processed, success
140: session 129000000000000002: realm <webrtc> user <>: incoming packet message processed, error 401: Unauthorised
140: IPv4. Local relay addr: 172.18.0.2:60174
140: session 129000000000000002: new, realm=<webrtc>, username=<mph>, lifetime=600
140: session 129000000000000002: realm <webrtc> user <mph>: incoming packet ALLOCATE processed, success
140: session 129000000000000002: realm <webrtc> user <mph>: incoming packet CREATE_PERMISSION processed, success
140: session 129000000000000002: realm <webrtc> user <mph>: incoming packet CREATE_PERMISSION processed, success
140: session 129000000000000001: realm <webrtc> user <mph>: incoming packet CREATE_PERMISSION processed, success
140: session 129000000000000002: realm <webrtc> user <mph>: incoming packet CREATE_PERMISSION processed, success
145: session 129000000000000002: refreshed, realm=<webrtc>, username=<mph>, lifetime=0
145: session 129000000000000002: realm <webrtc> user <mph>: incoming packet REFRESH processed, success
146: session 129000000000000002: closed (2nd stage), user <mph> realm <webrtc> origin <>, local 172.18.0.2:3478, remote 10.126.229.172:52614, reason: allocation timeout
146: session 129000000000000002: delete: realm=<webrtc>, username=<mph>
147: session 129000000000000001: refreshed, realm=<webrtc>, username=<mph>, lifetime=0
147: session 129000000000000001: realm <webrtc> user <mph>: incoming packet REFRESH processed, success
148: session 129000000000000001: closed (2nd stage), user <mph> realm <webrtc> origin <>, local 172.18.0.2:3478, remote 10.126.240.227:55194, reason: allocation timeout
148: session 129000000000000001: delete: realm=<webrtc>, username=<mph>


//firefox

355: handle_udp_packet: New UDP endpoint: local addr 172.18.0.2:3478, remote addr 10.126.229.172:45338
355: session 129000000000000003: realm <webrtc> user <>: incoming packet BINDING processed, success
355: session 129000000000000003: realm <webrtc> user <>: incoming packet message processed, error 401: Unauthorised
355: IPv4. Local relay addr: 172.18.0.2:65030
355: session 129000000000000003: new, realm=<webrtc>, username=<mph>, lifetime=600
355: session 129000000000000003: realm <webrtc> user <mph>: incoming packet ALLOCATE processed, success
356: handle_udp_packet: New UDP endpoint: local addr 172.18.0.2:3478, remote addr 10.126.240.227:61693
356: session 129000000000000004: realm <webrtc> user <>: incoming packet BINDING processed, success
356: session 129000000000000004: realm <webrtc> user <>: incoming packet message processed, error 401: Unauthorised
356: IPv4. Local relay addr: 172.18.0.2:52732
356: session 129000000000000004: new, realm=<webrtc>, username=<mph>, lifetime=3600
356: session 129000000000000004: realm <webrtc> user <mph>: incoming packet ALLOCATE processed, success
356: handle_udp_packet: New UDP endpoint: local addr 172.18.0.2:3478, remote addr 10.126.240.227:61694
356: session 129000000000000005: realm <webrtc> user <>: incoming packet BINDING processed, success
356: session 129000000000000005: realm <webrtc> user <>: incoming packet message processed, error 401: Unauthorised
356: IPv4. Local relay addr: 172.18.0.2:61007
356: session 129000000000000005: new, realm=<webrtc>, username=<mph>, lifetime=3600
356: session 129000000000000005: realm <webrtc> user <mph>: incoming packet ALLOCATE processed, success

365: session 129000000000000003: realm <webrtc> user <mph>: incoming packet BINDING processed, success

【问题讨论】:

  • 我已经删除了 H264 编解码器,以匹配我亚马逊工作台上完全相同的 SDP,但它在我的本地环境中运行良好

标签: node.js webrtc


【解决方案1】:

在 PeerConnection 对象创建期间您是否提供了任何冰服务器?如果你不提供,我建议你这样做。它在您的本地机器上工作,因为它们在同一个网络中。但它在生产环境(AWS)中不起作用,因为它们位于不同的网络中,并且它不能自己进行 NAT 遍历。

如果要添加ice服务器Read this

free STUN servers很少

欲了解更多有关ice服务器的信息Read this

如果您需要 TURN 服务器,那么您可以使用一些服务提供商,例如 Xirsys,或者使用 CoTURN 制作您自己的转弯服务器。

【讨论】:

  • 由于 chrome 在我的 AWS 工作台上运行良好,我没有检查 STUN/TURN 服务器。我使用自己部署在 AWS 下的 coturn,我会检查并返回这里
猜你喜欢
  • 2015-07-02
  • 2013-06-07
  • 1970-01-01
  • 2019-07-19
  • 2019-07-25
  • 2021-08-03
  • 2013-09-09
  • 2021-04-24
  • 1970-01-01
相关资源
最近更新 更多