【问题标题】:WebRTC conncet with SFU server failed using Lite ICEWebRTC 使用 Lite ICE 连接 SFU 服务器失败
【发布时间】:2022-01-12 08:29:24
【问题描述】:

我正在尝试将我的 Web 客户端与我的 SFU 服务器连接。 SFU服务器实现lite ICE。 这是我的网络客户端发送的 SDP:

v=0
o=- 1250414714658974016 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS RNSq70GfxaWKMGzvpJcEAqpMw9dnbB5U1N9a
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:h1kO
a=ice-pwd:aXsis+1NfXMwOmc5ICjAH0NC
a=ice-options:trickle
a=fingerprint:sha-256 DA:6F:29:E4:6B:89:76:F9:F1:BD:E0:75:BB:EB:D2:54:0B:C8:83:54:BA:C4:E2:67:E1:FF:38:DD:D2:17:8C:74
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:3584188035 cname:Vx+7hyzjBBd0353j
a=ssrc:3584188035 msid:RNSq70GfxaWKMGzvpJcEAqpMw9dnbB5U1N9a 4428e230-46d2-4718-8f2b-05e0e05c084b
a=ssrc:3584188035 mslabel:RNSq70GfxaWKMGzvpJcEAqpMw9dnbB5U1N9a
a=ssrc:3584188035 label:4428e230-46d2-4718-8f2b-05e0e05c084b

这是我的 SFU 服务器发送的 SDP:

v=0
o=- 7437866493835506893 2 IN IP4 10.1.29.248
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS xzlDAum3wM3zhq0yidoOIw3xda3W45AWM0jd
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 10.1.29.248
a=rtcp:9 IN IP4 10.1.29.248
a=candidate:2999745851 1 udp 2122260223 10.1.29.248 60197 typ host
a=ice-ufrag:0ewh
a=ice-pwd:610Q94mNcZLoL5uVoSZyXKuW
a=ice-options:trickle
a=ice-lite
a=end-of-candidates
a=fingerprint:sha-256 48:53:40:64:CF:F8:8A:69:F8:CD:66:E0:A6:70:57:07:2A:DC:51:53:26:5C:BD:1A:F1:FD:05:B1:40:9F:63:D9
a=setup:active
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:3676579219 cname:2KRN6J2bznW2MyqZ
a=ssrc:3676579219 msid:xzlDAum3wM3zhq0yidoOIw3xda3W45AWM0jd 80ff593f-401e-4928-ad74-28e34923d9ad
a=ssrc:3676579219 mslabel:xzlDAum3wM3zhq0yidoOIw3xda3W45AWM0jd
a=ssrc:3676579219 label:80ff593f-401e-4928-ad74-28e34923d9ad

WireShark 捕获的 pcap 文件显示 SFU 服务器发送 BINDING SUCCESS 响应。 但是我的 RTCPeerConnection 的 connectionState 和 iceConnectionState 总是“失败”。

我检查了我的 RTCPeerConnection 对象的 remoteDescription.sdp。 a=ice-lite 行消失了。

有什么问题?我的 SFU 服务器生成的 SDP 是否错误?

【问题讨论】:

    标签: javascript webrtc sdp ice


    【解决方案1】:

    ice-lite 是会话级属性(请参阅https://datatracker.ietf.org/doc/html/rfc5245#section-15.3),只能在 SDP 中的任何 m= 行之前被理解。稍微移动一下这条线应该会显示在 remoteDescription.sdp 中。

    这也应该(如果您的 SFU 是 lite 对等体)使连接正常工作 - 否则浏览器将期待绑定请求。

    【讨论】:

    • 行得通!谢谢!顺便说一句,Web 客户端有什么方法可以发送带有 REALM 属性的 STUN BINDING 请求? STUN BINDING 请求中默认没有 REALM 属性
    • 没有,REALM 是一个 TURN 概念,而不是 STUN 概念。
    • 现在“ice-lite”可以工作了。但是pc.iceConnectionState 更改为disconnected。浏览器真正收到了带有MAPPED-ADDRESSMESSAGE-INTEGRITY 属性的BINDING SUCCESS 响应。也许有一些错误?
    猜你喜欢
    • 2019-07-19
    • 2016-04-10
    • 1970-01-01
    • 2020-09-10
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多