-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDSCPDemo.html
81 lines (66 loc) · 2.35 KB
/
DSCPDemo.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<p> local video </p>
<video id="local_video" width="100" autoplay="true" muted="true"></video>
<p> remove video </p>
<video id="remote_video" width="100" autoplay="true"></video>
<p> selected Video </p>
<input id="updateSrcObjChk" type="checkbox" > update srcObject on switch <br>
<h6 id="selectedName"> none </h6>
<video id="other_video" width="100" autoplay="true"></video>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
<script>
var pc1 = new RTCPeerConnection({"iceServers": []}, { optional: [{ googDscp: true}] });
var pc2 = new RTCPeerConnection({"iceServers": []}, { optional: [{ googDscp: true}] });
let targetMediaStream = null;
const targetVideoElement = document.getElementById('other_video');
function switchVideo(event) {
const newMediaStream = event.target.srcObject;
if (targetMediaStream == null) {
targetMediaStream = new MediaStream();
targetVideoElement.srcObject = targetMediaStream;
}
targetMediaStream.getVideoTracks().forEach(track => targetMediaStream.removeTrack(track));
newMediaStream.getVideoTracks().forEach(track => targetMediaStream.addTrack(track));
if (document.getElementById("updateSrcObjChk").checked) {
targetVideoElement.srcObject = targetMediaStream;
}
console.group('makarand ', event);
document.getElementById("selectedName").textContent = event.srcElement.id;
}
pc2.onaddstream = function(evt) {
var video = document.getElementById('remote_video');
video.srcObject = evt.stream;
video.addEventListener('click', switchVideo);
};
function negotiate() {
return pc1.createOffer()
.then(offer => {
pc1.setLocalDescription(offer)
return pc2.setRemoteDescription(offer);
})
.then(_ => {
return pc2.createAnswer();
})
.then(answer => {
pc2.setLocalDescription(answer);
return pc1.setRemoteDescription(answer);
});
}
navigator.mediaDevices.getUserMedia({ audio: true, video: true })
.then(function(stream) {
var video = document.getElementById('local_video');
video.srcObject = stream;
video.addEventListener('click', switchVideo);
pc1.addStream(stream);
negotiate();
});
pc2.onicecandidate = function (event) {
if (event.candidate) {
pc1.addIceCandidate(event.candidate);;
}
};
pc1.onicecandidate = function (event) {
if (event.candidate) {
pc2.addIceCandidate(event.candidate);;
}
};
</script>