You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.8 KiB
HTML

8 months ago
<html>
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>WebRTC demo</title>
<style>
button {
padding: 8px 16px;
}
pre {
overflow-x: hidden;
overflow-y: auto;
}
video {
width: 100%;
height: 1024px;
}
.option {
margin-bottom: 8px;
}
.camera_block {
margin: 10px
}
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
<script>
// peer connection
var pc_rgb = null;
// data channel
var dc = null, dcInterval = null;
function start_rgb() {
var config = {
sdpSemantics: 'unified-plan'
};
pc_rgb = new RTCPeerConnection(config);
pc_rgb.addEventListener('track', function(evt) {
if (evt.track.kind == 'video') {
document.getElementById('video_rgb').srcObject = evt.streams[0];
}
});
fetch('/offer_video', {
body: JSON.stringify({
url: "demo.mp4"
}),
headers: {
'Content-Type': 'application/json'
},
method: 'POST'
}).then(function(response) {
return response.json();
}).then(function(server_offer) {
pc_rgb.setRemoteDescription(server_offer);
pc_rgb.createAnswer().then(function(answer) {
pc_rgb.setLocalDescription(answer).then(function() {
fetch('/answer_video', {
body: JSON.stringify({
sdp: pc_rgb.localDescription.sdp,
type: pc_rgb.localDescription.type
}),
headers: {
'Content-Type': 'application/json'
},
method: 'POST'
});
})
});
}).catch(function(e) {
alert(e);
});
}
window.onload = (event) => {
console.log("page is fully loaded");
start_rgb();
};
</script>
</head>
<body>
<div id="cameras" style="display: flex; flex-direction: row;">
<div id="camera_rgb" class="camera_block">
<video id="video_rgb" autoplay="true" playsinline="true" class="camera_block" ></video>
</div>
</div>
</body>