我使用chrome 21运行我的webrtc代码。
如果我在同一个chrome中打开两个标签,然后打开包含webrtc代码的页面。 一个选项卡用于发送视频流;一个选项卡用于接收视频流 它工作正常。
但是,如果我打开两个隐身模式或两个不同的Chrome浏览器页面, 我可以正确获取 sdp 和候选人信息。看来视频可以解码信息。
在远程视频中,我只能看到
此外,它似乎崩溃了。我试图点击“关闭铬”但没用。
有没有人有类似的问题?
答案 0 :(得分:11)
在测试 WebRTC 时,我发现当我们在错误的位置调用peerConnection.addStream(…)
时会出现这种情况----
您必须记住,在 WebRTC 中排序非常重要!
以下情况会出现空白视频:
OfferToReceiveVideo:true
HTMLMediaElement.HAVE_CURRENT_DATA
或mediaElement.paused
或mediaElement.currentTime
,而它是知识问题,知道有关这些属性的问题。OfferToReceiveAudio
/ OfferToReceiveVideo
。现在,代码的排序是一种罕见的问题,因为我们都知道在创建要约或答案之前应该调用addStream
;即使是重新谈判的会议。
尝试使用chrome://webrtc-internals
和Firefox的about:config
来查看这些浏览器中发生的情况;并且始终使用onIceConnectionStateChange
事件的控制台日志来帮助您检查ICE连接检查过程中的ICE-Agent failed
或...
有时候对于提议者来说,设置-remote-sdp会导致异常。始终对onSdpError
/ createOffer
和createAnswer
/ setLocalDescription
使用setRemoteDescription
,例如
peer.setRemoteDescription(remoteSDP, onSdpSuccess, onSdpFailure);
一些演示资源:
答案 1 :(得分:3)
我遇到了同样的问题,我只是在将流附加为VideoElement.src之后立即通过调用VideoElement.play()来解决它
document.querySelector( "#video" ).src = window.URL.createObjectURL( remoteStream );
document.querySelector( "#video" ).play();
不要等待loadedmetadata事件,因为它似乎没有被触发,而是WebRTC流。