【问题标题】:Firefox generated offer isn't accepted by native WebRTC SDK原生 WebRTC SDK 不接受 Firefox 生成的报价
【发布时间】:2019-10-08 23:48:34
【问题描述】:

我正在尝试将使用本机 WebRTC 框架的 iOS/Android 应用程序连接到网络

虽然 Chrome 运行良好,但 Firefox 生成无效报价

iOS 以 RTCPeerConnection::setRemoteDescription: Error Failed to set remote offer sdp: Failed to set remote data description send parameters. 响应,而 android 则以信号 11 崩溃

这是 Firefox 生成的 SDP 报价

v=0

o=mozilla...THIS_IS_SDPARTA-69.0.2 1330778261957800593 0 IN IP4 127.0.0.1

s=-

t=0 0

a=fingerprint:sha-256 52:13:5A:F1:78:DA:88:9E:B5:F6:6D:A6:3B:E5:8C:6C:3A:0C:1C:BB:9F:8D:2D:FB:54:1E:DC:8F:2B:32:46:7E

a=group:BUNDLE 0 1 2

a=ice-options:trickle

a=msid-semantic:WMS *

m=video 9 UDP/TLS/RTP/SAVPF 120 121 126 97

c=IN IP4 127.0.0.1

a=sendrecv

a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid

a=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time

a=extmap:5 urn:ietf:params:rtp-hdrext:toffset

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

a=fmtp:97 profile-level-id=42e01f;level-asymmetry-allowed=1

a=fmtp:120 max-fs=12288;max-fr=60

a=fmtp:121 max-fs=12288;max-fr=60

a=ice-pwd:0b05e736dc7b9b60e6045bb32ecf1a4a

a=ice-ufrag:2a06fb0e

a=mid:0

a=msid:- {2c03d601-9874-c541-88e5-fdf246db7ceb}

a=rtcp-fb:120 nack

a=rtcp-fb:120 nack pli

a=rtcp-fb:120 ccm fir

a=rtcp-fb:120 goog-remb

a=rtcp-fb:121 nack

a=rtcp-fb:121 nack pli

a=rtcp-fb:121 ccm fir

a=rtcp-fb:121 goog-remb

a=rtcp-fb:126 nack

a=rtcp-fb:126 nack pli

a=rtcp-fb:126 ccm fir

a=rtcp-fb:126 goog-remb

a=rtcp-fb:97 nack

a=rtcp-fb:97 nack pli

a=rtcp-fb:97 ccm fir

a=rtcp-fb:97 goog-remb

a=rtcp-mux

a=rtpmap:120 VP8/90000

a=rtpmap:121 VP9/90000

a=rtpmap:126 H264/90000

a=rtpmap:97 H264/90000

a=setup:actpass

a=ssrc:89993993 cname:{4f658c59-75d0-c34f-b6f3-3abde4bd69f3}

m=audio 9 UDP/TLS/RTP/SAVPF 109 9 0 8 101

c=IN IP4 127.0.0.1

a=sendrecv

a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level

a=extmap:2/recvonly urn:ietf:params:rtp-hdrext:csrc-audio-level

a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid

a=fmtp:109 maxplaybackrate=48000;stereo=1;useinbandfec=1

a=fmtp:101 0-15

a=ice-pwd:0b05e736dc7b9b60e6045bb32ecf1a4a

a=ice-ufrag:2a06fb0e

a=mid:1

a=msid:- {9f4e7ccb-6c53-da4d-a1d2-6e8bfe79ed05}

a=rtcp-mux

a=rtpmap:109 opus/48000/2

a=rtpmap:9 G722/8000/1

a=rtpmap:0 PCMU/8000

a=rtpmap:8 PCMA/8000

a=rtpmap:101 telephone-event/8000/1

a=setup:actpass

a=ssrc:2126371479 cname:{4f658c59-75d0-c34f-b6f3-3abde4bd69f3}

m=application 9 UDP/DTLS/SCTP webrtc-datachannel

c=IN IP4 127.0.0.1

a=sendrecv

a=ice-pwd:0b05e736dc7b9b60e6045bb32ecf1a4a

a=ice-ufrag:2a06fb0e

a=mid:2

a=setup:actpass

a=sctp-port:5000

a=max-message-size:1073741823

它有什么问题? 我正在使用 Firefox Quantum 69.0.2

UPD:我已禁用数据通道,现在一切正常,所以问题出在最后 4 行

【问题讨论】:

  • webrtc.org sdk 版本有多久了?它可能无法解析 sdp 中较新的数据通道格式
  • 在 Android 上我使用的是 7 月 9 日发布的1.0.28513
  • 您使用的是旧的、非规范的 rtp 数据通道吗?唯一一次出现this particular error 与它有关
  • @PhilippHancke 有行a=sctp-port:5000,所以我猜是使用SCTP

标签: firefox webrtc


【解决方案1】:

问题是您使用的是 rtp 数据通道,它们已过时且非标准。

要修复它,请找到并删除任何提及 DtlsSrtpKeyAgreementRtpDataChannels

这些是只能在 Chrome 中运行的旧实验。您可能是从一本旧书中复制它们,并且并不真正需要它们。但它们继续造成互操作问题,因为人们剪切并粘贴并假设 Chrome 支持它们是正确的。

现在所有浏览器都支持标准数据通道,甚至 Chrome,所以真的没有理由添加这些问题关键字。

【讨论】:

    【解决方案2】:

    由于禁用数据通道现在可以解决问题,我的猜测是其他端点无法处理符合 Firefox 规范的在 m=application 行中使用 webrtc-datachannel 发送数据通道的方式,但仍然期望那里有一个端口号.

    【讨论】:

      【解决方案3】:

      真正帮助我的是遵循约束中的设置:

      {'DtlsSrtpKeyAgreement': isFirefox},
      {"RtpDataChannels" : !isFirefox},
      

      【讨论】:

      • 这两个都是过时的和非标准的。删除任何提及它们应该可以解决您的问题。除非您想与浏览器发生互操作问题,否则切勿使用它们。
      • @jib 我实际上不需要浏览器之间的互操作,只需要浏览器-> 本机 sdk。我不记得为什么以及如何在我的应用程序中结束它们。但是谢谢,我会考虑删除它们
      • 您说“虽然 Chrome 运行良好,但 Firefox 生成无效的报价”——这是一个互操作问题。 Firefox 不支持 rtp 数据通道,因为它们是非标准的。 Chrome 支持标准数据通道,因此除非您有理由使用非标准数据通道,否则我会放弃它们。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      相关资源
      最近更新 更多