2017-05-14 210 views
1

你好,我按照这个教程创建了一个简单的webrtc示例。 https://www.webrtc-experiment.com/docs/WebRTC-PeerConnection.html为什么函数“onaddstream”永远不会被调用?

所以看看我的JFFiddle: https://jsfiddle.net/xzspquew/9/ 请告诉我为什么我不能进入函数onaddstream? console.log(“这个函数被调用”)被称为neved。为什么?

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") 
} 
+0

这里有很多错误。你想做什么?您有两个对等连接,但您提示用户“输入远程报价”并继续将其称为答案。我无法辨别这里的目标是什么。连接两个对等连接,或连接到其他地方? – jib

回答

1

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

根据MDN文档,这种模式已经过时:

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

这个属性已经从规范删除;您现在应该使用RTCPeerConnection.ontrack来监视轨道事件。它包含在这里是为了帮助您调整现有的代码并理解现有的样本,这些样本可能还不是最新的。

+0

我改变了,但没有显示我的jsfiddle远程视频流.... – ErrorMan

+0

请参阅我编辑的答案。寻找更新的教程,因为如果你正在使用的教程有一个不推荐使用的变量,那么其余部分也可能不准确。 –

1

看起来你试图用一个过时的演示,
从官方的WebRTC samples

尝试this demo在你拨弄你没有妥善处理考生&流。
如果您拨打电话pcpc2,则需要通过调用pc.addstream(stream)将数据流添加到PC,然后使用pc2.onaddstreampc2.onaddtrack方法触发。

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

+0

看看https://jsfiddle.net/xzspquew/10/我添加了pc.addstream(流)但远程视频没有显示 – ErrorMan

+0

试试这个小提琴https://jsfiddle.net/8mchrc3v/1/ – Ajay

相关问题