Webrtc 为什么要使用“函数”;onaddstream“;从来没有打过电话?

Webrtc 为什么要使用“函数”;onaddstream“;从来没有打过电话?,webrtc,Webrtc,您好,我按照本教程创建了一个简单的webrtc示例。 . 看看我的Jffidle: 请告诉我为什么我不能进入ADDStream的功能?不会调用console.log(“调用此函数”)。为什么? navigator.getUserMedia({audio:false, video:true}, success, error) var pc = new RTCPeerConnection() var pc2 = new RTCPeerConnection() pc.onaddstrea

您好,我按照本教程创建了一个简单的webrtc示例。 .

看看我的Jffidle: 请告诉我为什么我不能进入ADDStream的功能?不会调用console.log(“调用此函数”)。为什么?

    navigator.getUserMedia({audio:false, video:true}, success, error)

var pc = new RTCPeerConnection()
var pc2 = new RTCPeerConnection()

pc.onaddstream = function(event) {
    console.log("this function is called")
    var video2 = document.getElementById("video2")
  video2.src = window.URL.createObjectURL(event.stream)
  video2.play()
}

document.querySelector("#repondre").addEventListener('click', function repondre() {
  var answer = prompt("Please enter your sdp remote offer");
  console.log(answer)
  pc2.setRemoteDescription(JSON.parse(answer))
    pc2.createAnswer(successanswerrtc, errorrtc)
})

function successanswerrtc(answersdp) {
    pc2.setLocalDescription(answersdp)
  console.log(JSON.stringify(answersdp))
  pc.setRemoteDescription(answersdp)
}

function sucessrtc(offersdp) {
    pc.setLocalDescription(offersdp)
  alert(JSON.stringify(offersdp))
  console.log(JSON.stringify(offersdp))
} 
function errorrtc(err) {
    console.log("error" + err)
}

function success(stream) {
    var video1 = document.getElementById("video1")
  video1.src = window.URL.createObjectURL(stream)
  video1.play()
  pc.createOffer(sucessrtc, errorrtc)
}
function error() {
    console.log("error")
}

那个教程似乎过时了。或许

根据MDN文档,它已被弃用:

该属性已从规范中删除;您现在应该使用rtpeerconnection.ontrack来监视跟踪事件。这里包含它是为了帮助您调整现有代码和理解现有示例,这些示例可能还不是最新的


看起来您正在尝试一个过时的演示,
请向WebRTC官方咨询

在你的小提琴中,你没有正确地处理候选人和流。
如果您正在从
pc
呼叫
pc2
,则需要通过调用
pc.addstream(stream)
向pc添加流,然后将触发
pc2.onaddstream
pc2.onaddtrack
方法


我更新了你的小提琴

我更改了,但它没有在我的JSFIDLE中显示远程视频流…请参阅我编辑的答案。寻找更新的教程,因为如果您正在使用的教程有一个不推荐使用的变量,那么它的其余部分也可能不准确。看,我添加了pc.addstream(stream),但远程视频没有显示在这里有任何错误。你想干什么?您有两个对等连接,但提示用户“输入远程报价”并继续将其称为应答。我看不出这里的目标是什么。连接两个对等连接,还是连接到其他地方?