From d24dd35d265a0b6bd0620285d226b5bed3d4566e Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期四, 11 十二月 2025 19:40:27 +0800
Subject: [PATCH] 大屏提交1:首页、GIS、视频页面
---
fzzy-igdss-web/src/main/resources/static/group/video.js | 1475 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,475 insertions(+), 0 deletions(-)
diff --git a/fzzy-igdss-web/src/main/resources/static/group/video.js b/fzzy-igdss-web/src/main/resources/static/group/video.js
new file mode 100644
index 0000000..5b6a247
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/static/group/video.js
@@ -0,0 +1,1475 @@
+var time;
+var splitWin = 1; //鍒嗗睆鏁帮紝榛樿4鍒嗗睆
+var deptCur = null; //褰撳墠搴撳尯
+var cameraList = null; //鐩戞帶鍒楄〃
+var cameraIndex = -1; //鐩戞帶涓嬫爣
+var cameraTimer; // 搴撳尯瀹氭椂
+var selectTag = 0; //鎾斁鏍囩锛�0-鑷姩杞挱锛�1-鎵嬪姩閫夋嫨
+var windowsNum = 1; //鎾斁绐楀彛涓嬫爣锛屾墜鍔ㄩ�夋嫨妯″紡涓嬩娇鐢�
+var handCameraIndex = null; //鎵嬪姩閫夋嫨鐩戞帶鐨勪笅鏍�
+var gundongTimer; //鐩戞帶鍒楄〃婊氬姩瀹氭椂鍣�
+
+var playUrl1 = null;
+var videoId1 = null;
+let webrtc1;
+let mediaStream1;
+var playUrl2 = null;
+var videoId2 = null;
+let webrtc2;
+let mediaStream2;
+var playUrl3 = null;
+var videoId3 = null;
+let webrtc3;
+let mediaStream3;
+var playUrl4 = null;
+var videoId4 = null;
+let webrtc4;
+let mediaStream4;
+var playUrl5 = null;
+var videoId5 = null;
+let webrtc5;
+let mediaStream5;
+var playUrl6 = null;
+var videoId6 = null;
+let webrtc6;
+let mediaStream6;
+var playUrl7 = null;
+var videoId7 = null;
+let webrtc7;
+let mediaStream7;
+var playUrl8 = null;
+var videoId8 = null;
+let webrtc8;
+let mediaStream8;
+var playUrl9 = null;
+var videoId9 = null;
+let webrtc9;
+let mediaStream9;
+var playUrl10 = null;
+var videoId10 = null;
+let webrtc10;
+let mediaStream10;
+var playUrl11 = null;
+var videoId11 = null;
+let webrtc11;
+let mediaStream11;
+var playUrl12 = null;
+var videoId12 = null;
+let webrtc12;
+let mediaStream12;
+var playUrl13 = null;
+var videoId13 = null;
+let webrtc13;
+let mediaStream13;
+var playUrl14 = null;
+var videoId14 = null;
+let webrtc14;
+let mediaStream14;
+var playUrl15 = null;
+var videoId15 = null;
+let webrtc15;
+let mediaStream15;
+var playUrl16 = null;
+var videoId16 = null;
+let webrtc16;
+let mediaStream16;
+
+$(function () {
+ // 鍒濆鍖栭〉闈�
+ initHtml();
+});
+
+// 鍒濆鍖栭〉闈�
+function initHtml() {
+ // 鏃堕棿
+ initTime();
+
+ //鐩戞帶鐐逛俊鎭�傚簲婊氬姩
+ initScrollbar(60);
+ //搴撳尯淇℃伅
+ // renderDeptArea();
+ //
+ // renderCamera();
+}
+
+
+// 娓叉煋搴撳尯淇℃伅
+function renderDeptArea() {
+ if (deptCur) {
+ $("#deptName").html(deptCur.deptName);
+ $("#deptAddress").html(deptCur.addr == null ? "---" : deptCur.addr);
+ $("#cameraSum").html(deptCur.cameraSum == null ? "---" : deptCur.cameraSum);
+ $("#cameraCn").html(deptCur.cameraCn == null ? "---" : deptCur.cameraCn);
+ $("#cameraYw").html(deptCur.cameraYw == null ? "---" : deptCur.cameraYw);
+ $("#cameraAf").html(deptCur.cameraAf == null ? "---" : deptCur.cameraAf);
+ }
+}
+
+// 娓叉煋鐩戞帶鍒楄〃
+function renderCamera() {
+ var html = '';
+ if (cameraList != null && cameraList.length > 0) {
+ var divcameraIndex = "";
+ $.each(cameraList, function (index, item) {
+ divcameraIndex = "divCamera" + index;
+ html += '<div class="panel-content-body-tr" id="' + divcameraIndex + '" ondblclick="selectHand(' + index + ')">';
+ html += '<span class="body-item" style="flex: 1.4">';
+ html += item.name;
+ html += '</span>';
+ html += '<span class="body-item" style="flex: 0.6">';
+ if (item.spjklx == "02") {
+ html += '鐞冩満';
+ } else {
+ html += '鏋満';
+ }
+ html += '</span></div>';
+ })
+ } else {
+ html += '<div class="panel-content-body-tr">';
+ html += '<span class="body-item" style="flex: 1.4">鏆傛棤鏁版嵁</span>';
+ html += '<span class="body-item" style="flex: 0.6"></span>';
+ html += '</div>';
+ }
+ $("#inventoryInfo").html(html);
+ if (selectTag == 0) {
+ cameraSwitch1();
+ }
+}
+
+/* ---------- 鐩戞帶鍒囨崲 ---------- */
+function cameraSwitch1() {
+ clearInterval(cameraTimer);
+ cameraSwitch2()
+ //5鍒嗛挓鍒囨崲瑙嗛
+ cameraTimer = setInterval(function () {
+ cameraSwitch2()
+ }, 60000);
+}
+
+function cameraSwitch2() {
+ for (var i = 1; i <= splitWin; i++) {
+ cameraIndex++;
+ //鎾斁瑙嗛
+ startPlay(i);
+ }
+}
+
+//瑙嗛鎾斁-璇锋眰鎽勫儚澶翠俊鎭�
+/**
+ *
+ * @param cameraNum 鎽勫儚澶村垪琛ㄤ笅鏍�
+ * @param windowsNum 鎾斁绐楀彛涓嬫爣
+ */
+function startPlay(windowsNum) {
+ if (cameraIndex === cameraList.length) {
+ cameraIndex = 0;
+ }
+
+ var data = cameraList[cameraIndex];
+ if (!data) {
+ $("#f" + splitWin + "_d" + windowsNum).html("鏈幏鍙栧埌鎽勫儚澶存挱鏀句俊鎭紒锛�");
+ return;
+ }
+ if (data.urlIn) {
+ if (windowsNum === 1) {
+ playUrl1 = null;
+ mediaStream1 = null;
+ playUrl1 = cameraList[cameraIndex].urlIn;
+ videoId1 = cameraList[cameraIndex].id;
+ webRtcToPlay1();
+ }else if (windowsNum === 2) {
+ playUrl2 = null;
+ mediaStream2 = null;
+ playUrl2 = cameraList[cameraIndex].urlIn;
+ videoId2 = cameraList[cameraIndex].id;
+ webRtcToPlay2();
+ }else if (windowsNum === 3) {
+ playUrl3 = null;
+ mediaStream3 = null;
+ playUrl3 = cameraList[cameraIndex].urlIn;
+ videoId3 = cameraList[cameraIndex].id;
+ webRtcToPlay3();
+ }else if (windowsNum === 4) {
+ playUrl4 = null;
+ mediaStream4 = null;
+ playUrl4 = cameraList[cameraIndex].urlIn;
+ videoId4 = cameraList[cameraIndex].id;
+ webRtcToPlay4();
+ }else if (windowsNum === 5) {
+ playUrl5 = null;
+ mediaStream5 = null;
+ playUrl5 = cameraList[cameraIndex].urlIn;
+ videoId5 = cameraList[cameraIndex].id;
+ webRtcToPlay5();
+ }else if (windowsNum === 6) {
+ playUrl6 = null;
+ mediaStream6 = null;
+ playUrl6 = cameraList[cameraIndex].urlIn;
+ videoId6 = cameraList[cameraIndex].id;
+ webRtcToPlay6();
+ }else if (windowsNum === 7) {
+ playUrl7 = null;
+ mediaStream7 = null;
+ playUrl7 = cameraList[cameraIndex].urlIn;
+ videoId7 = cameraList[cameraIndex].id;
+ webRtcToPlay7();
+ }else if (windowsNum === 8) {
+ playUrl8 = null;
+ mediaStream8 = null;
+ playUrl8 = cameraList[cameraIndex].urlIn;
+ videoId8 = cameraList[cameraIndex].id;
+ webRtcToPlay8();
+ }else if (windowsNum === 9) {
+ playUr9 = null;
+ mediaStream9 = null;
+ playUrl9 = cameraList[cameraIndex].urlIn;
+ videoId9 = cameraList[cameraIndex].id;
+ webRtcToPlay9();
+ }else if (windowsNum === 10) {
+ playUrl10 = null;
+ mediaStream10 = null;
+ playUrl10 = cameraList[cameraIndex].urlIn;
+ videoId10 = cameraList[cameraIndex].id;
+ webRtcToPlay10();
+ }else if (windowsNum === 11) {
+ playUrl11 = null;
+ mediaStream11 = null;
+ playUrl11 = cameraList[cameraIndex].urlIn;
+ videoId11 = cameraList[cameraIndex].id;
+ webRtcToPlay11();
+ }else if (windowsNum === 12) {
+ playUrl12 = null;
+ mediaStream12 = null;
+ playUrl12 = cameraList[cameraIndex].urlIn;
+ videoId12 = cameraList[cameraIndex].id;
+ webRtcToPlay12();
+ }else if (windowsNum === 13) {
+ playUrl13 = null;
+ mediaStream13 = null;
+ playUrl13 = cameraList[cameraIndex].urlIn;
+ videoId13 = cameraList[cameraIndex].id;
+ webRtcToPlay13();
+ }else if (windowsNum === 14) {
+ playUrl14 = null;
+ mediaStream14 = null;
+ playUrl14 = cameraList[cameraIndex].urlIn;
+ videoId14 = cameraList[cameraIndex].id;
+ webRtcToPlay14();
+ }else if (windowsNum === 15) {
+ playUrl15 = null;
+ mediaStream15 = null;
+ playUrl15 = cameraList[cameraIndex].urlIn;
+ videoId15 = cameraList[cameraIndex].id;
+ webRtcToPlay15();
+ }else if (windowsNum === 16) {
+ playUrl16 = null;
+ mediaStream16 = null;
+ playUrl16 = cameraList[cameraIndex].urlIn;
+ videoId16 = cameraList[cameraIndex].id;
+ webRtcToPlay16();
+ }
+ } else {
+ $("#f" + splitWin + "_d" + windowsNum).html("鏈幏鍙栧埌鎽勫儚澶�(" + data.name + ")鎾斁淇℃伅锛侊紒");
+ }
+}
+
+/**
+ * 鍒嗗睆鍒囨崲
+ * @param tagNum 鍒嗗睆鏁�
+ */
+function fenping(tagNum) {
+ //閲嶇疆鍒囨崲鍓嶇殑鍒嗗睆绐楀彛
+ reloadView(splitWin);
+
+ //璧嬪�煎綋鍓嶅垎灞忔暟
+ splitWin = tagNum;
+
+ //閲嶇疆鍒囨崲鍚庣殑鍒嗗睆绐楀彛
+ reloadView(splitWin);
+
+ //鍒囨崲鍒嗗睆鍥炬爣鍙婇〉闈�
+ if (tagNum == 1) {
+ $("#f_1").attr("src", "/img/web/group/fp_1_active.png");
+ $("#f_4").attr("src", "/img/web/group/fp_4.png");
+ $("#f_9").attr("src", "/img/web/group/fp_9.png");
+ $("#f_16").attr("src", "/img/web/group/fp_16.png");
+ $("#video_1").css('display', 'block');
+ $("#video_4").css('display', 'none');
+ $("#video_9").css('display', 'none');
+ $("#video_16").css('display', 'none');
+ }
+ if (tagNum == 4) {
+ $("#f_1").attr("src", "/img/web/group/fp_1.png");
+ $("#f_4").attr("src", "/img/web/group/fp_4_active.png");
+ $("#f_9").attr("src", "/img/web/group/fp_9.png");
+ $("#f_16").attr("src", "/img/web/group/fp_16.png");
+ $("#video_1").css('display', 'none');
+ $("#video_4").css('display', 'block');
+ $("#video_9").css('display', 'none');
+ $("#video_16").css('display', 'none');
+ }
+ if (tagNum == 9) {
+ $("#f_1").attr("src", "/img/web/group/fp_1.png");
+ $("#f_4").attr("src", "/img/web/group/fp_4.png");
+ $("#f_9").attr("src", "/img/web/group/fp_9_active.png");
+ $("#f_16").attr("src", "/img/web/group/fp_16.png");
+ $("#video_1").css('display', 'none');
+ $("#video_4").css('display', 'none');
+ $("#video_9").css('display', 'block');
+ $("#video_16").css('display', 'none');
+ }
+ if (tagNum == 16) {
+ $("#f_1").attr("src", "/img/web/group/fp_1.png");
+ $("#f_4").attr("src", "/img/web/group/fp_4.png");
+ $("#f_9").attr("src", "/img/web/group/fp_9.png");
+ $("#f_16").attr("src", "/img/web/group/fp_16_active.png");
+ $("#video_1").css('display', 'none');
+ $("#video_4").css('display', 'none');
+ $("#video_9").css('display', 'none');
+ $("#video_16").css('display', 'block');
+ }
+ //褰撳墠搴撳尯閲嶆柊鎾斁锛岀洃鎺у垪琛ㄦ挱鏀句笅鏍囬噸缃负0
+ cameraIndex = 0;
+ clearInterval(cameraTimer);
+ windowsNum = 1;
+ //鍒ゆ柇鎾斁鏂瑰紡
+ if (selectTag == 0) {
+ cameraSwitch1();
+ }
+}
+
+//閲嶇疆4鍒嗗睆鍜�9鍒嗗睆鐨勫悇涓挱鏀剧獥鍙�
+function reloadView(num) {
+ var html;
+ for (var i = 1; i <= num; i++) {
+ html = '';
+ html += '<video className="video" id="video' + num + '_' + i + ' autoPlay="" muted="" playsInline=""></video>';
+ $("#f" + num + "_d" + i).html(html);
+ }
+}
+
+/**
+ * 鎵嬪姩閫夋嫨鎾斁
+ * @param index 閫夋嫨鐩戞帶鐨勭洃鎺у垪琛ㄤ笅鏍�
+ */
+function selectHand(index) {
+ if (selectTag == 0) {
+
+ //娓呴櫎鍒楄〃婊氬姩锛岄噸鏂拌缃粴鍔ㄦ椂闂�
+ clearInterval(gundongTimer);
+ initScrollbar(1000 * 30);
+
+ showTip("宸插垏鎹㈡墜鍔ㄦ挱鏀炬ā寮忥紒鍙屽嚮宸︿晶鍒楄〃鐩戞帶杩涜鎾斁锛�");
+
+ windowsNum = 1;
+ selectTag = 1;
+ reloadView(splitWin);
+ }
+
+ if (windowsNum > splitWin) {
+ windowsNum = 1;
+ }
+ cameraIndex = index;
+ startPlay(windowsNum);
+ windowsNum++;
+
+ //娓呴櫎涓婃閫変腑鏁堟灉锛岃祴鍊兼柊閫変腑鏁堟灉
+ $("#divCamera" + handCameraIndex).removeClass("handSelect");
+ $("#divCamera" + index).addClass("handSelect");
+ handCameraIndex = index;
+}
+
+// 鍒锋柊鏃堕棿
+function initTime() {
+ setInterval(function () {
+ $("#navBarDate").html(formatDate('mm鏈坉d鏃�', new Date()));
+ $("#navBarTime").html(formatDate('HH:MM:SS', new Date()));
+ $("#navBarWeek").html(getWeekDate());
+ }, 1000);
+}
+
+/**
+ * 鏍煎紡鍖栨棩鏈�
+ *
+ * @param fmt
+ * @param date
+ * @return {*}
+ */
+function formatDate(fmt, date) {
+ var ret;
+ var opt = {
+ "Y+": date.getFullYear().toString(), // 骞�
+ "m+": (date.getMonth() + 1).toString(), // 鏈�
+ "d+": date.getDate().toString(), // 鏃�
+ "H+": date.getHours().toString(), // 鏃�
+ "M+": date.getMinutes().toString(), // 鍒�
+ "S+": date.getSeconds().toString() // 绉�
+ // 鏈夊叾浠栨牸寮忓寲瀛楃闇�姹傚彲浠ョ户缁坊鍔狅紝蹇呴』杞寲鎴愬瓧绗︿覆
+ };
+ for (var k in opt) {
+ ret = new RegExp("(" + k + ")").exec(fmt);
+ if (ret) {
+ fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
+ }
+ }
+ return fmt;
+}
+
+/**
+ * 鑾峰彇褰撳墠鏄熸湡鍑�
+ */
+function getWeekDate() {
+ var now = new Date();
+ var day = now.getDay();
+ var weeks = new Array("鏄熸湡鏃�", "鏄熸湡涓�", "鏄熸湡浜�", "鏄熸湡涓�", "鏄熸湡鍥�", "鏄熸湡浜�", "鏄熸湡鍏�");
+ var week = weeks[day];
+ return week;
+}
+
+//鐩戞帶鐐逛俊鎭粴鍔�
+function initScrollbar(num) {
+ gundongTimer = setInterval(function () {
+ if (!hasScrollbar()) {
+ document.getElementById('inventoryInfoBox').scrollTop = 0;
+ } else {
+ if (document.getElementById('inventoryInfoBox').scrollTop >= (document.getElementById('inventoryInfo').clientHeight - document.getElementById('inventoryInfoBox').clientHeight)) {
+ document.getElementById('inventoryInfoBox').scrollTop = 0;
+ } else {
+ document.getElementById('inventoryInfoBox').scrollTop++;
+ }
+ }
+ }, num);
+}
+
+//鍒ゆ柇搴曢儴鏄惁鍑虹幇婊氬姩鏉�
+function hasScrollbar() {
+ return document.getElementById('inventoryInfo').clientHeight > document.getElementById('inventoryInfoBox').clientHeight;
+}
+
+// 鍙充笅瑙掓彁閱掍俊鎭�
+function showTip(msg) {
+ layer.msg(msg);
+}
+
+
+/*============= webRtc瑙嗛鎾斁1 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay1() {
+ if (playUrl1) {
+ mediaStream1 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream1;
+ webrtc1 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc1.onsignalingstatechange = signalingstatechange1;
+
+ webrtc1.ontrack = ontrack1
+ let offer = await webrtc1.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc1.setLocalDescription(offer);
+ }
+}
+
+function ontrack1(event) {
+ mediaStream1.addTrack(event.track);
+}
+
+async function signalingstatechange1() {
+ switch (webrtc1.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl1 + "?uuid=" + videoId1 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc1.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc1.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc1.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁2 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay2() {
+ if (playUrl2) {
+ mediaStream2 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream2;
+ webrtc2 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc2.onsignalingstatechange = signalingstatechange2;
+
+ webrtc2.ontrack = ontrack2
+ let offer = await webrtc2.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc2.setLocalDescription(offer);
+ }
+}
+
+function ontrack2(event) {
+ mediaStream2.addTrack(event.track);
+}
+
+async function signalingstatechange2() {
+ switch (webrtc2.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl2 + "?uuid=" + videoId2 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc2.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc2.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc2.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁3 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay3() {
+ if (playUrl3) {
+ mediaStream3 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream3;
+ webrtc3 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc3.onsignalingstatechange = signalingstatechange3;
+
+ webrtc3.ontrack = ontrack3
+ let offer = await webrtc3.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc3.setLocalDescription(offer);
+ }
+}
+
+function ontrack3(event) {
+ mediaStream3.addTrack(event.track);
+}
+
+async function signalingstatechange3() {
+ switch (webrtc3.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl3 + "?uuid=" + videoId3 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc3.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc3.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc3.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁4 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay4() {
+ if (playUrl4) {
+ mediaStream4 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream4;
+ webrtc4 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc4.onsignalingstatechange = signalingstatechange4;
+
+ webrtc4.ontrack = ontrack4
+ let offer = await webrtc4.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc4.setLocalDescription(offer);
+ }
+}
+
+function ontrack4(event) {
+ mediaStream4.addTrack(event.track);
+}
+
+async function signalingstatechange4() {
+ switch (webrtc4.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl4 + "?uuid=" + videoId4 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc4.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc4.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc4.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+/*============= webRtc瑙嗛鎾斁5 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay5() {
+ if (playUrl5) {
+ mediaStream5 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream5;
+ webrtc5 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc5.onsignalingstatechange = signalingstatechange5;
+
+ webrtc5.ontrack = ontrack5
+ let offer = await webrtc4.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc5.setLocalDescription(offer);
+ }
+}
+
+function ontrack5(event) {
+ mediaStream5.addTrack(event.track);
+}
+
+async function signalingstatechange5() {
+ switch (webrtc5.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl5 + "?uuid=" + videoId5 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc5.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc5.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc5.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+/*============= webRtc瑙嗛鎾斁4 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay6() {
+ if (playUrl6) {
+ mediaStream6 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream6;
+ webrtc6 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc6.onsignalingstatechange = signalingstatechange6;
+
+ webrtc6.ontrack = ontrack6
+ let offer = await webrtc4.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc6.setLocalDescription(offer);
+ }
+}
+
+function ontrack6(event) {
+ mediaStream6.addTrack(event.track);
+}
+
+async function signalingstatechange6() {
+ switch (webrtc6.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl6 + "?uuid=" + videoId6 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc6.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc6.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc6.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁7 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay7() {
+ if (playUrl7) {
+ mediaStream7 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream7;
+ webrtc7 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc7.onsignalingstatechange = signalingstatechange7;
+
+ webrtc7.ontrack = ontrack7
+ let offer = await webrtc7.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc7.setLocalDescription(offer);
+ }
+}
+
+function ontrack7(event) {
+ mediaStream7.addTrack(event.track);
+}
+
+async function signalingstatechange7() {
+ switch (webrtc7.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl7 + "?uuid=" + videoId7 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc7.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc7.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc7.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁8 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay8() {
+ if (playUrl8) {
+ mediaStream8 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream8;
+ webrtc8 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrt8.onsignalingstatechange = signalingstatechange8;
+
+ webrtc8.ontrack = ontrack8
+ let offer = await webrtc8.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc8.setLocalDescription(offer);
+ }
+}
+
+function ontrack8(event) {
+ mediaStream8.addTrack(event.track);
+}
+
+async function signalingstatechange8() {
+ switch (webrtc8.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl8 + "?uuid=" + videoId8 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc8.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc8.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc8.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁9 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay9() {
+ if (playUrl9) {
+ mediaStream9 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream9;
+ webrtc9 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc9.onsignalingstatechange = signalingstatechange9;
+
+ webrtc9.ontrack = ontrack9
+ let offer = await webrtc4.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc9.setLocalDescription(offer);
+ }
+}
+
+function ontrack9(event) {
+ mediaStream9.addTrack(event.track);
+}
+
+async function signalingstatechange9() {
+ switch (webrtc9.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl9 + "?uuid=" + videoId9 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrt9.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc9.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc9.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁10 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay10() {
+ if (playUrl10) {
+ mediaStream10 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream10;
+ webrtc10 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc10.onsignalingstatechange = signalingstatechange10;
+
+ webrtc10.ontrack = ontrack10
+ let offer = await webrtc10.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc10.setLocalDescription(offer);
+ }
+}
+
+function ontrack10(event) {
+ mediaStream10.addTrack(event.track);
+}
+
+async function signalingstatechange10() {
+ switch (webrtc10.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl10 + "?uuid=" + videoId10 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc10.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc10.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc10.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁11 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay11() {
+ if (playUrl11) {
+ mediaStream11 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream11;
+ webrtc11 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc11.onsignalingstatechange = signalingstatechange11;
+
+ webrtc11.ontrack = ontrack11
+ let offer = await webrtc11.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc11.setLocalDescription(offer);
+ }
+}
+
+function ontrack11(event) {
+ mediaStream11.addTrack(event.track);
+}
+
+async function signalingstatechange11() {
+ switch (webrtc11.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl11 + "?uuid=" + videoId11 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc11.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc11.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc11.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁12 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay12() {
+ if (playUrl12) {
+ mediaStream12 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream12;
+ webrtc12 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc12.onsignalingstatechange = signalingstatechange12;
+
+ webrtc12.ontrack = ontrack12
+ let offer = await webrtc12.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc12.setLocalDescription(offer);
+ }
+}
+
+function ontrack12(event) {
+ mediaStream12.addTrack(event.track);
+}
+
+async function signalingstatechange12() {
+ switch (webrtc12.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl12 + "?uuid=" + videoId12 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc12.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc12.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc12.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁13 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay13() {
+ if (playUrl13) {
+ mediaStream13 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream13;
+ webrtc13 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc13.onsignalingstatechange = signalingstatechange13;
+
+ webrtc13.ontrack = ontrack13
+ let offer = await webrtc13.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc13.setLocalDescription(offer);
+ }
+}
+
+function ontrack13(event) {
+ mediaStream13.addTrack(event.track);
+}
+
+async function signalingstatechange13() {
+ switch (webrtc13.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl13 + "?uuid=" + videoId13 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc13.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc13.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc13.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁14 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay14() {
+ if (playUrl14) {
+ mediaStream14 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream14;
+ webrtc14 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc14.onsignalingstatechange = signalingstatechange14;
+
+ webrtc14.ontrack = ontrack14
+ let offer = await webrtc14.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc14.setLocalDescription(offer);
+ }
+}
+
+function ontrack14(event) {
+ mediaStream14.addTrack(event.track);
+}
+
+async function signalingstatechange14() {
+ switch (webrtc14.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl14 + "?uuid=" + videoId14 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc14.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc14.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc14.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁15 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay15() {
+ if (playUrl15) {
+ mediaStream15 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream15;
+ webrtc15 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc15.onsignalingstatechange = signalingstatechange15;
+
+ webrtc15.ontrack = ontrack15
+ let offer = await webrtc15.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc15.setLocalDescription(offer);
+ }
+}
+
+function ontrack15(event) {
+ mediaStream15.addTrack(event.track);
+}
+
+async function signalingstatechange15() {
+ switch (webrtc15.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl15 + "?uuid=" + videoId15 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc15.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc15.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc15.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/*============= webRtc瑙嗛鎾斁16 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag 鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function webRtcToPlay16() {
+ if (playUrl16) {
+ mediaStream16 = new MediaStream();
+ $("#video" + splitWin + "_" + windowsNum)[0].srcObject = mediaStream16;
+ webrtc16 = new RTCPeerConnection({
+ iceServers: [{
+ urls: ["stun:stun.l.google.com:19302"]
+ }],
+ sdpSemantics: "unified-plan"
+ });
+ webrtc16.onsignalingstatechange = signalingstatechange16;
+
+ webrtc16.ontrack = ontrack16
+ let offer = await webrtc16.createOffer({
+
+ offerToReceiveAudio: true,
+ offerToReceiveVideo: true
+ });
+ await webrtc16.setLocalDescription(offer);
+ }
+}
+
+function ontrack16(event) {
+ mediaStream16.addTrack(event.track);
+}
+
+async function signalingstatechange16() {
+ switch (webrtc16.signalingState) {
+ case 'have-local-offer':
+ // let uuid = $('#uuid').val();
+ let url = playUrl16 + "?uuid=" + videoId16 + "&channel=0";
+ $.post(url, {
+ data: btoa(webrtc16.localDescription.sdp)
+ }, function (data) {
+ try {
+ console.log(data);
+ webrtc16.setRemoteDescription(new RTCSessionDescription({
+ type: 'answer',
+ sdp: atob(data)
+ }))
+ } catch (e) {
+ console.warn(e);
+ }
+
+ });
+ break;
+ case 'stable':
+ break;
+ case 'closed':
+ break;
+ default:
+ console.log(`unhandled signalingState is ${webrtc16.signalingState}`);
+ break;
+ }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
--
Gitblit v1.9.3