WebRTC流不适用于某些浏览器组合

时间:2015-01-22 21:26:49

标签: javascript linux google-chrome firefox webrtc

我在两个浏览器站点之间流,一个称为主站点,另一个称为从站点。 Master将视频流传输到slave。 主人总是活跃的,奴隶有时会连接。

我使用此配置启动双方连接:

{'iceServers': [{'url': 'stun:mystunserveraddress'}]},
{'optional': [{'DtlsSrtpKeyAgreement': true},{'RtpDataChannels': true}]}

Master发送不接收音频且没有视频的优惠。 Slave处理提供接收视频的提供和答案。 大师处理答案。

冰候选人在双方处理。 在发送商品之前,视频已连接到对等连接。

我测试了以下Master-> Slave:

的组合
  • Android Chrome-> Linux Chrome - 正常工作
  • Android Chrome-> Linux Firefox - 正常工作
  • Android Firefox-> Linux Firefox - 正常工作
  • Android Firefox-> Linux Chrome - 无法正常工作
  • Linux Chrome-> Linux Chrome - 正常工作
  • Linux Chrome-> Linux Firefox - 正常工作
  • Linux Firefox-> Linux Firefox - 正常工作
  • Linux Firefox-> Linux Chrome - 无法正常工作
  • Linux Chrome-> Windows Chrome - 不起作用
  • Linux Chrome-> Windows Firefox - 正常工作
  • Linux Firefox-> Windows Firefox - 正常工作
  • Linux Firefox-> Windows Chrome - 无法正常工作

为什么它不能用于这些组合?没有错误。一切看起来都很正常,但奴隶上的视频元素是空白的。

从两端提供音频和视频,或者自动不会改变任何内容。

在Firefox master上,我有两个"已连接"状态和Chrome奴隶我有"检查"状态。

我在本地服务器和远程服务器上测试过,行为相同。

它也不适用于AppRTC示例。

1 个答案:

答案 0 :(得分:1)

旁注:不要使用RtpDataChannels。它是旧的,它只是Chrome,它是非标准的 - 它甚至没有提出标准。 Chrome现在支持与Firefox互操作的标准RTCDataChannels(pc.createDataChannel(...))。

我强烈怀疑您的视频问题是您的JS代码中的错误,可能依赖于成功回调与其他回调的时间 - 或者对ICE候选人。如果没有返回SetRemoteDescription的Success回调,那么你就不应该添加ICE候选者(排队并在成功后添加)。

如果您使用Linux上的Chrome将apprtc调用到Windows上的Chrome(反之亦然),它是否有效?这应该;这是人们一直在做的事情(在Chrome和Firefox上)。