webrtc - 视频获得blob,但它仍然是黑色的

时间:2012-08-30 02:35:28

标签: html5 html5-video webrtc

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

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

但是,如果我打开两个隐身模式或两个不同的Chrome浏览器页面, 我可以正确获取 sdp 候选人信息。看来视频可以解码信息。

在远程视频中,我只能看到enter image description here

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

有没有人有类似的问题?

2 个答案:

答案 0 :(得分:11)

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

您必须记住,在 WebRTC 中排序非常重要!


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

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

  1. 当您的SSL证书已过期或条目无效时,您正在使用STUN。
  2. 您正在使用STUN,但它是公司防火墙,或医院网络或专用网络,它阻止或隐藏外部IP地址或某些端口。
  3. 两个对等方都有无效的sendrecv / sendonly / recvonly对
  4. Offerer没有附加流,或者Firefox是在用户仅附加音频流但是您正在使用OfferToReceiveVideo:true
  5. 的情况下失败的情况
  6. 您正在检查HTMLMediaElement.HAVE_CURRENT_DATAmediaElement.pausedmediaElement.currentTime,而它是知识问题,知道有关这些属性的问题。
  7. 解决方案?

    1. 使用XirSys的TURN或install your own
    2. 确保您使用的是有效的SSL证书或使用HTTP。
    3. 确保提供者附加了流;还要确保根据附加的流使用OfferToReceiveAudio / OfferToReceiveVideo
    4. 确保您没有修改SDP;还尝试比较两个同行之间的SDP和发现不匹配。
    5. 现在,代码的排序是一种罕见的问题,因为我们都知道在创建要约或答案之前应该调用addStream;即使是重新谈判的会议。

      尝试使用chrome://webrtc-internals和Firefox的about:config来查看这些浏览器中发生的情况;并且始终使用onIceConnectionStateChange事件的控制台日志来帮助您检查ICE连接检查过程中的ICE-Agent failed或...

      有时候对于提议者来说,设置-remote-sdp会导致异常。始终对onSdpError / createOffercreateAnswer / setLocalDescription使用setRemoteDescription,例如

      peer.setRemoteDescription(remoteSDP, onSdpSuccess, onSdpFailure);


      一些演示资源:

      1. https://github.com/muaz-khan/WebRTC-Experiment / Demos
      2. https://github.com/mozilla/webrtc-landing
      3. https://www.webrtc-experiment.com/docs/TURN-server-installation-guide.html

答案 1 :(得分:3)

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

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

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