<!DOCTYPE html>
<html>
<head><title>Loopback test</title></head>
<body>
<video id="remoteVideo" autoplay muted></video>
<script>
var localStream, localPeerConnection, remotePeerConnection;
var remoteVideo = document.getElementById("remoteVideo");
function start() {
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia;
navigator.getUserMedia(
{
audio:false,
video:{
"mandatory": {
"minWidth": "1280",
"minHeight": "720",
}
}
},
gotLocalStream,
gotError);
}
function gotLocalStream(stream) {
localStream = stream;
var servers = null;
localPeerConnection = new webkitRTCPeerConnection(servers);
localPeerConnection.onicecandidate = gotLocalIceCandidate;
remotePeerConnection = new webkitRTCPeerConnection(servers);
remotePeerConnection.onicecandidate = gotRemoteIceCandidate;
remotePeerConnection.onaddstream = gotRemoteStream;
localPeerConnection.addStream(localStream);
localPeerConnection.createOffer(gotLocalDescription);
}
function gotError(error) {
console.log("navigator.getUserMedia error: ", error);
}
function gotRemoteStream(event) {
remoteVideo.src = URL.createObjectURL(event.stream);
}
function gotLocalDescription(description) {
localPeerConnection.setLocalDescription(description);
remotePeerConnection.setRemoteDescription(description);
remotePeerConnection.createAnswer(gotRemoteDescription);
}
function gotRemoteDescription(description) {
remotePeerConnection.setLocalDescription(description);
localPeerConnection.setRemoteDescription(description);
}
function gotLocalIceCandidate(event) {
if (event.candidate)
remotePeerConnection.addIceCandidate(new RTCIceCandidate(event.candidate));
}
function gotRemoteIceCandidate(event) {
if (event.candidate)
localPeerConnection.addIceCandidate(new RTCIceCandidate(event.candidate));
}
window.onload=start;
</script>
</body>
</html>