为什么函数" onaddstream"永远不会被称为?

时间:2017-05-14 14:37:05

标签: webrtc

您好我按照本教程创建了一个简单的webrtc示例。 https://www.webrtc-experiment.com/docs/WebRTC-PeerConnection.html

所以看看我的JFFiddle: https://jsfiddle.net/xzspquew/9/  请告诉我为什么我无法进入onaddstream功能?调用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")
}

2 个答案:

答案 0 :(得分:1)

该教程似乎已过时。也许是https://webrtc.org/start/#demos-and-samples

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

https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/onaddstream

  

此属性已从规范中删除;您现在应该使用RTCPeerConnection.ontrack来监视跟踪事件。它包含在此处是为了帮助您调整现有代码并了解现有样本,这些样本可能尚未更新。

答案 1 :(得分:1)

看起来你正在尝试一个过时的演示,
尝试来自WebRTC官方this demo

samples

在你的小提琴中,你没有处理候选人和溪流正常 如果您从pc拨打电话pc2,则需要通过拨打pc.addstream(stream)将电子流添加到电脑,然后会触发pc2.onaddstreampc2.onaddtrack方法。

我更新了你的小提琴https://jsfiddle.net/8mchrc3v/1/