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