Add support webrtc/tcp mode to video player

This commit is contained in:
Alexey Khit
2023-07-06 14:20:22 +03:00
parent fd3b3c9bf1
commit 51b494b193
+7 -9
View File
@@ -32,7 +32,7 @@ export class VideoRTC extends HTMLElement {
]; ];
/** /**
* [config] Supported modes (webrtc, mse, hls, mp4, mjpeg). * [config] Supported modes (webrtc, webrtc/tcp, mse, hls, mp4, mjpeg).
* @type {string} * @type {string}
*/ */
this.mode = "webrtc,mse,hls,mjpeg"; this.mode = "webrtc,mse,hls,mjpeg";
@@ -443,6 +443,8 @@ export class VideoRTC extends HTMLElement {
video2.addEventListener("loadeddata", ev => this.onpcvideo(ev), {once: true}); video2.addEventListener("loadeddata", ev => this.onpcvideo(ev), {once: true});
pc.addEventListener("icecandidate", ev => { pc.addEventListener("icecandidate", ev => {
if (ev.candidate && this.mode.indexOf("webrtc/tcp") >= 0 && ev.candidate.protocol === "udp") return;
const candidate = ev.candidate ? ev.candidate.toJSON().candidate : ""; const candidate = ev.candidate ? ev.candidate.toJSON().candidate : "";
this.send({type: "webrtc/candidate", value: candidate}); this.send({type: "webrtc/candidate", value: candidate});
}); });
@@ -474,16 +476,12 @@ export class VideoRTC extends HTMLElement {
this.onmessage["webrtc"] = msg => { this.onmessage["webrtc"] = msg => {
switch (msg.type) { switch (msg.type) {
case "webrtc/candidate": case "webrtc/candidate":
pc.addIceCandidate({ if (this.mode.indexOf("webrtc/tcp") >= 0 && msg.value.indexOf(" udp ") > 0) return;
candidate: msg.value,
sdpMid: "0" pc.addIceCandidate({candidate: msg.value, sdpMid: "0"}).catch(() => console.debug);
}).catch(() => console.debug);
break; break;
case "webrtc/answer": case "webrtc/answer":
pc.setRemoteDescription({ pc.setRemoteDescription({type: "answer", sdp: msg.value}).catch(() => console.debug);
type: "answer",
sdp: msg.value
}).catch(() => console.debug);
break; break;
case "error": case "error":
if (msg.value.indexOf("webrtc/offer") < 0) return; if (msg.value.indexOf("webrtc/offer") < 0) return;