我已经实现了两个webrtc客户端(对等端)和一个简单的信令服务器。当地有三个要素。尽管获得媒体,同伴和信令服务器之间的提供/回答方法似乎有效,但我只能在两个对等体中显示本地视频(两者都在不同的浏览器标签中)
以下是提议者发送给其他对等方的SDP
v=0
o=- 1118386230690454721 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS
另一个同伴以类似的SDP回答,但其他会话ID。
localVideo = document.querySelector('#localVideo');
remoteVideo = document.querySelector('#remoteVideo');
socket = io.connect("http://localhost:3000");
pc = new RTCPeerConnection(null);
var constraints = {video: true, audio: true};
getUserMedia(constraints, handleUserMedia, handleUserMediaError);
pc.onaddstream = handleRemoteStreamAdded;
pc.onremovestream = handleRemoteStreamRemoved;
pc.onicecandidate = handleIceCandidate;
var lspd;
pc.createOffer().then(function(offer) {
lspd = offer;
return pc.setLocalDescription(offer);
}).then(function() {
var offerData = {
sdp: lspd,
customerName: "name",
room: room
}
socket.emit('offer', offerData);
}).catch(function(reason) {
console.log("Error on createOffer: " + reason);
});
socket.on('answering', function (msg){
pc.setRemoteDescription(msg);
});
function handleRemoteStreamAdded(event) {
remoteVideo.src = window.URL.createObjectURL(event.stream);
remoteStream = event.stream;
}
function handleUserMedia(stream) {
localVideo.src = window.URL.createObjectURL(stream);
localStream = stream;
pc.addStream(stream);
}
onaddstream永远不会在两个对等体中添加,我永远无法看到远程视频。此外,似乎SDP还不完整。
关于我可以尝试或调试什么以便在同伴之间进行通信的任何想法?
由于
答案 0 :(得分:1)
在将流添加到peerconnection之前,您正在调用createOffer。您需要将调用createOffer(以及之后的所有内容)的代码移动到handleUserMedia函数。