From 452cf744b08f2148729427fec50b07a4cf0cad31 Mon Sep 17 00:00:00 2001
From: sgj <1442489573@qq.com>
Date: 星期一, 23 三月 2026 15:18:15 +0800
Subject: [PATCH] 在线用户菜单页排序修复

---
 fzzy-igdss-web/src/main/resources/static/group/video.js | 1402 +++++----------------------------------------------------
 1 files changed, 135 insertions(+), 1,267 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
index 5b6a247..e66a7b2 100644
--- a/fzzy-igdss-web/src/main/resources/static/group/video.js
+++ b/fzzy-igdss-web/src/main/resources/static/group/video.js
@@ -1,82 +1,19 @@
 var time;
-var splitWin = 1;  //鍒嗗睆鏁帮紝榛樿4鍒嗗睆
+var splitWin = 4;  //鍒嗗睆鏁帮紝榛樿1鍒嗗睆
 var deptCur = null; //褰撳墠搴撳尯
+var deptIndex = 0;  //搴撳尯涓嬫爣
 var cameraList = null;  //鐩戞帶鍒楄〃
-var cameraIndex = -1;  //鐩戞帶涓嬫爣
+var cameraIndex = 0;  //鐩戞帶涓嬫爣
 var cameraTimer;     // 搴撳尯瀹氭椂
-var selectTag = 0; //鎾斁鏍囩锛�0-鑷姩杞挱锛�1-鎵嬪姩閫夋嫨
-var windowsNum = 1; //鎾斁绐楀彛涓嬫爣锛屾墜鍔ㄩ�夋嫨妯″紡涓嬩娇鐢�
-var handCameraIndex = null;  //鎵嬪姩閫夋嫨鐩戞帶鐨勪笅鏍�
+var windowsNum = 1; //
 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();
+
+    // 鍒濆鍖朩ebSocket
+    // initWS(companyId,bizType, bizTag, userId);
 });
 
 // 鍒濆鍖栭〉闈�
@@ -84,40 +21,76 @@
     // 鏃堕棿
     initTime();
 
+    initDicSlogan();
+
     //鐩戞帶鐐逛俊鎭�傚簲婊氬姩
     initScrollbar(60);
+
     //搴撳尯淇℃伅
-    // renderDeptArea();
-    //
-    // renderCamera();
+    renderDeptArea();
 }
 
+// socket淇℃伅杩斿洖铏曠悊
+function socketOnMessage(pocket) {
+    //console.log(pocket);
+    if (pocket.bizId == "slogan") {
+        var data = pocket.data;
+        dicSlogan = data;
+        initDicSlogan();
+    }
+}
 
 // 娓叉煋搴撳尯淇℃伅
 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);
+    reloadView(splitWin);
+    //鍒ゆ柇涓嬫爣锛屽鏋滃簱鍖哄垏鎹笅鏍囩瓑浜庡簱鍖哄垪琛ㄩ暱搴︼紝鍒欓噸鏂板惊鐜�
+    if (deptIndex == deptList.length) {
+        deptIndex = 0;
     }
+    deptCur = deptList[deptIndex];
+
+    $("#deptName").css("font-size", "18px");
+    $("#deptName").html(deptCur.kqmc);
+    $("#deptAddress").html(deptCur.xzqhmc == null ? "---" : deptCur.xzqhmc);
+    $("#yxcr").html(deptCur.contact == null ? "---" : deptCur.contact);
+    $("#cfs").html(deptCur.contactTel == null ? "---" : deptCur.contactTel);
+    ajaxCamera();
+}
+
+//鏌ヨ搴撳尯涓嬬洃鎺т俊鎭�
+function ajaxCamera() {
+    //鍏堟妸鐩戞帶鍒楄〃缃┖
+    cameraList = null;
+    $.ajax({
+        type: "POST",
+        url: "/group/camera-list",
+        dataType: "json",
+        contentType: "application/json;charset=UTF-8",
+        data: JSON.stringify({
+            "deptId": deptCur.id
+        }),
+        success: function (result) {
+            if (result.code == "0000") {
+                cameraList = result.data;
+                renderCamera();
+            }
+        },
+        error: function (error) {
+        }
+    });
 }
 
 // 娓叉煋鐩戞帶鍒楄〃
 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 += '<div class="panel-content-body-tr">';
             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") {
+            if (item.type == "02") {
                 html += '鐞冩満';
             } else {
                 html += '鏋満';
@@ -131,146 +104,89 @@
         html += '</div>';
     }
     $("#inventoryInfo").html(html);
-    if (selectTag == 0) {
-        cameraSwitch1();
-    }
+
+    cameraSwitch1();
 }
 
 /* ---------- 鐩戞帶鍒囨崲 ---------- */
 function cameraSwitch1() {
-    clearInterval(cameraTimer);
-    cameraSwitch2()
-    //5鍒嗛挓鍒囨崲瑙嗛
-    cameraTimer = setInterval(function () {
-        cameraSwitch2()
-    }, 60000);
-}
-
-function cameraSwitch2() {
-    for (var i = 1; i <= splitWin; i++) {
-        cameraIndex++;
-        //鎾斁瑙嗛
-        startPlay(i);
+    //鑻ュ簱鍖轰笅鐩戞帶鍒楄〃涓虹┖锛屽垯杩涘叆涓嬩釜搴撳尯
+    if (cameraList == null || cameraList.length === 0) {
+        deptIndex++;
+        cameraIndex = 0;
+        clearInterval(cameraTimer);
+        renderDeptArea();
+    }else {
+        cameraSwitch2();
+        //1鍒嗛挓鍒囨崲瑙嗛
+        cameraTimer = setInterval(function () {
+            cameraSwitch2()
+        }, 1000 * 60);
     }
 }
 
-//瑙嗛鎾斁-璇锋眰鎽勫儚澶翠俊鎭�
+function cameraSwitch2() {
+    if(cameraIndex < cameraList.length){
+        for (var i = 1; i <= splitWin; i++) {
+            if (cameraIndex < cameraList.length) {
+                //鎾斁瑙嗛
+                startPlay(cameraIndex, i);
+                cameraIndex++;
+            }
+        }
+    }else {
+        cameraIndex = 0;
+        deptIndex++;
+        clearInterval(cameraTimer);
+        renderDeptArea();
+    }
+}
+
 /**
  *
  * @param cameraNum   鎽勫儚澶村垪琛ㄤ笅鏍�
  * @param windowsNum 鎾斁绐楀彛涓嬫爣
  */
-function startPlay(windowsNum) {
-    if (cameraIndex === cameraList.length) {
-        cameraIndex = 0;
-    }
+function startPlay(cameraNum, windowsNum) {
 
-    var data = cameraList[cameraIndex];
-    if (!data) {
+    var camera = cameraList[cameraNum];
+    console.log("鐩戞帶鍒楄〃涓嬫爣=" + cameraNum + ",鐩戞帶鍚嶇О=" + camera.name + ",绐楀彛涓嬫爣=" + windowsNum);
+    if (!camera) {
         $("#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();
+
+    var data = {
+        id: camera.id,
+        playType: camera.playType
+    };
+    $.ajax({
+        type: 'POST',
+        url: "/security/get-media",
+        dataType: 'JSON',
+        contentType: "application/json;charset=UTF-8",
+        data: JSON.stringify(data),
+        success: function (result) {
+            if (result.code != "SUCCESS") {
+                toPlay(camera.name, windowsNum, null, result.msg);
+            } else {
+                toPlay(camera.name, windowsNum, result.playUrl, null);
+            }
+        },
+        error: function (result) {
+            toPlay(camera.name, windowsNum, null,  "鏈幏鍙栧埌鎾斁淇℃伅锛侊紒");
         }
+    });
+}
+
+function toPlay(name,windowsNum, url, msg) {
+    var html = '';
+    if (url) {
+        html += '<iframe src="' + url + '" width="100%" height="100%" frameborder="0" allowfullscreen></iframe>';
     } else {
-        $("#f" + splitWin + "_d" + windowsNum).html("鏈幏鍙栧埌鎽勫儚澶�(" + data.name + ")鎾斁淇℃伅锛侊紒");
+        html += '<div style="margin-top: 25%;">'+name+'<br>' +msg+'</div>';
     }
+    $("#f" + splitWin + "_d" + windowsNum).html(html);
 }
 
 /**
@@ -278,6 +194,14 @@
  * @param tagNum  鍒嗗睆鏁�
  */
 function fenping(tagNum) {
+    if (tagNum === 9) {
+        layer.msg("褰撳墠娴佸獟浣撴殏涓嶆敮鎸�9鍒嗗睆鎾斁锛�");
+        return;
+    }
+    if (tagNum === 16) {
+        layer.msg("褰撳墠娴佸獟浣撴殏涓嶆敮鎸�9鍒嗗睆鎾斁锛�");
+        return;
+    }
     //閲嶇疆鍒囨崲鍓嶇殑鍒嗗睆绐楀彛
     reloadView(splitWin);
 
@@ -288,7 +212,7 @@
     reloadView(splitWin);
 
     //鍒囨崲鍒嗗睆鍥炬爣鍙婇〉闈�
-    if (tagNum == 1) {
+    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");
@@ -298,7 +222,7 @@
         $("#video_9").css('display', 'none');
         $("#video_16").css('display', 'none');
     }
-    if (tagNum == 4) {
+    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");
@@ -308,7 +232,7 @@
         $("#video_9").css('display', 'none');
         $("#video_16").css('display', 'none');
     }
-    if (tagNum == 9) {
+    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");
@@ -318,7 +242,7 @@
         $("#video_9").css('display', 'block');
         $("#video_16").css('display', 'none');
     }
-    if (tagNum == 16) {
+    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");
@@ -332,10 +256,8 @@
     cameraIndex = 0;
     clearInterval(cameraTimer);
     windowsNum = 1;
-    //鍒ゆ柇鎾斁鏂瑰紡
-    if (selectTag == 0) {
-        cameraSwitch1();
-    }
+
+    cameraSwitch1();
 }
 
 //閲嶇疆4鍒嗗睆鍜�9鍒嗗睆鐨勫悇涓挱鏀剧獥鍙�
@@ -346,37 +268,6 @@
         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;
 }
 
 // 鍒锋柊鏃堕棿
@@ -450,1026 +341,3 @@
 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