10

我用 chrome 21 运行我的 webrtc 代码。

如果我在同一个 chrome 中打开两个选项卡,然后打开带有 webrtc 代码的页面。一个选项卡用于发送视频流;一个选项卡用于接收视频流它工作正常。

但是,如果我使用两种隐身模式或两种不同的 chrome 浏览器打开页面,我可以正确获取sdp候选信息。似乎视频可以解码信息。

在远程视频中,我只能看到在此处输入图像描述

此外,它似乎崩溃了。我试图点击“关闭 chrome”,但没用。

有没有人有类似的问题?

4

2 回答 2

14

在测试WebRTC时,我发现当我们peerConnection.addStream(…)错误的地方调用时会发生这种情况----

您必须记住,在WebRTC中订购非常重要!


更新时间:下午 6:36 - 2014 年 7 月 17 日星期四(UTC)

以下情况会出现空白视频:

  1. 当您的 SSL 证书已过期或包含无效条目时,您正在使用 STUN。
  2. 您正在使用 STUN,但它是公司防火墙、医院网络或私有网络,它阻止或隐藏外部 IP 地址或某些端口。
  3. 两个对等点都有无效的 sendrecv/sendonly/recvonly 对
  4. 提供者没有附加流,或者它是 Firefox,如果用户仅附加音频流但您正在使用它会失败OfferToReceiveVideo:true
  5. 您正在检查HTMLMediaElement.HAVE_CURRENT_DATAmediaElement.pausedmediaElement.currentTime同时它是 android 有关于这些属性的已知问题。

解决方案?

  1. 使用 XirSys 的 TURN 或安装您自己的.
  2. 确保您使用的是有效的 SSL 证书或改用 HTTP。
  3. 确保提供者附加了流;还要确保OfferToReceiveAudio/OfferToReceiveVideo根据附加的流使用。
  4. 确保您没有修改 SDP;还尝试比较两个对等点之间的 SDP 并找出不匹配。

现在,代码的排序是一种罕见的问题,因为我们都知道addStream应该在创建报价或答案之前调用它;即使是重新谈判的会议。

尝试使用chrome://webrtc-internalsFirefoxabout:config来查看这些浏览器内部发生的情况;并始终使用控制台日志记录onIceConnectionStateChange事件,这可以帮助您检查 ICE-Agent 是否failed在 ICE 连接检查过程中或...

有时为提供者设置-remote-sdp 太早会导致异常。始终使用onSdpErrorfor createOffer/createAnswersetLocalDescription/setRemoteDescription例如

peer.setRemoteDescription(remoteSDP, onSdpSuccess, onSdpFailure);


一些演示资源:

  1. https://github.com/muaz-khan/WebRTC-Experiment/Demos _ _
  2. https://github.com/mozilla/webrtc-landing

https://www.webrtc-experiment.com/docs/TURN-server-installation-guide.html

于 2012-09-02T01:45:54.203 回答
4

我遇到了同样的问题,我只是在将流附加为 VideoElement.src 后立即调用 VideoElement.play() 解决了这个问题

document.querySelector( "#video" ).src = window.URL.createObjectURL( remoteStream );
document.querySelector( "#video" ).play();

不要等待loadedmetadata事件,因为它似乎没有被触发,而是WebRTC流。

于 2015-08-07T16:05:10.267 回答