流式传输到同一台pc-webRTC
下面是我获取流并将其发送到同一台机器的代码 我得到一个流,用一个视频标签显示它,然后尝试发送流并在同一页面中显示另一个视频标签 这里有我遗漏的东西吗?还是我的概念完全错了流式传输到同一台pc-webRTC,webrtc,Webrtc,下面是我获取流并将其发送到同一台机器的代码 我得到一个流,用一个视频标签显示它,然后尝试发送流并在同一页面中显示另一个视频标签 这里有我遗漏的东西吗?还是我的概念完全错了 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/19
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<video autoplay width="1280" height="720"></video>
<br />
<video id="rec" autoplay width="1280" height="720"></video>
<script>
var peerConnection1 = new webkitRTCPeerConnection(null);
var peerConnection2 = new webkitRTCPeerConnection(null);
var p1desc,p2desc
peerConnection1.createOffer(success1,function(e){},{'offerToReceiveAudio':true,'offerToReceiveVideo':true});
function success1(desc)
{
peerConnection1.setLocalDescription(desc);
p2srd(desc);
}
function p2srd(desc)
{
peerConnection2.setRemoteDescription(desc);
peerConnection2.createAnswer(success2);
}
function success2(desc)
{
peerConnection2.setLocalDescription(desc);
p1srd(desc);
}
function p1srd(desc)
{
peerConnection1.setRemoteDescription(desc);
begin();
}
function begin()
{
var p = navigator.mediaDevices.getUserMedia({ audio: true, video: true });
p.then(function(mediaStream) {
peerConnection1.addStream(mediaStream);
var video = document.querySelector('video');
video.src = window.URL.createObjectURL(mediaStream);
video.onloadedmetadata = function(e) {
};
});
p.catch(function(err) { console.log(err.name); });
peerConnection2.onaddstream = function (e){
var vidr = document.getElementById('rec');
vidr.src = window.URL.createObjectURL(e.stream);
};
}
无标题文件
var peerConnection1=新的WebKitRTPeerconnection(null);
var peerConnection2=新的WebKitRTPeerconnection(null);
变量p1desc,p2desc
peerConnection1.createOffer(成功1,函数(e){},{'OfferReceiveAudio':true,'OfferReceiveVideo':true});
功能成功1(描述)
{
peerConnection1.setLocalDescription(描述);
p2srd(desc);
}
功能p2srd(描述)
{
peerConnection2.setRemoteDescription(描述);
peerConnection2.createAnswer(成功2);
}
功能成功2(描述)
{
peerConnection2.setLocalDescription(描述);
p1srd(desc);
}
功能p1srd(描述)
{
peerConnection1.setRemoteDescription(描述);
begin();
}
函数begin()
{
var p=navigator.mediaDevices.getUserMedia({audio:true,video:true});
p、 然后(函数(mediaStream){
peerConnection1.addStream(mediaStream);
var video=document.querySelector('video');
video.src=window.URL.createObjectURL(mediaStream);
video.onloadedmetadata=函数(e){
};
});
p、 catch(函数(err){console.log(err.name);});
peerConnection2.onaddstream=函数(e){
var vidr=document.getElementById('rec');
vidr.src=window.URL.createObjectURL(e.stream);
};
}
您缺少ICE候选人。试试这个(在Chrome上使用这个):
var pc1=new RTCPeerConnection(),pc2=new RTCPeerConnection();
var start=()=>navigator.mediaDevices.getUserMedia({video:true,audio:true})
.then(stream=>pc1.addStream(video1.srcObject=stream))
.渔获物(原木);
var add=(pc,can)=>can&&pc.addIceCandidate(can).catch(log);
pc1.onicecandidate=e=>add(pc2,e.candidate);
pc2.onicecandidate=e=>add(pc1,e.candidate);
pc2.onaddstream=e=>video2.srcObject=e.stream;
pc1.oniceconnectionstatechange=e=>log(pc1.iceConnectionState);
pc1.onnegotiationneeded=e=>
然后(d=>pc1.setLocalDescription(d))
.then(()=>pc2.setRemoteDescription(pc1.localDescription))
。然后(()=>pc2.createAnswer())。然后(d=>pc2.setLocalDescription(d))
.then(()=>pc1.setRemoteDescription(pc2.localDescription))
.渔获物(原木);
var log=msg=>div.innerHTML+=“
”+msg代码>
开始