From bc3e9b68c66fdeeb7c49155ff46ed68d3650cc18 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期一, 15 十二月 2025 18:35:33 +0800
Subject: [PATCH] 安防视频调整

---
 fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js |  939 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 770 insertions(+), 169 deletions(-)

diff --git a/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js b/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
index 3c0f2ae..2ad4c1b 100644
--- a/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
+++ b/fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
@@ -1,99 +1,108 @@
 var layer;
 var splitWin = 1;  //鍒嗗睆鏁帮紝榛樿1鍒嗗睆
-var windowsNum = 1; //鎾斁绐楀彛涓嬫爣锛屾墜鍔ㄩ�夋嫨妯″紡涓嬩娇鐢�
+var windowsNum = null; //鎾斁绐楀彛涓嬫爣锛屾墜鍔ㄩ�夋嫨妯″紡涓嬩娇鐢�
 var timer;
 var table;
-var cameraData;
-var playUrl= null;
+var curCamera = null;
+var playCamera = null;
+var playList = {};
+
+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;
 
 $(function () {
     layui.use(['layer', 'table'], function () {
         layer = layui.layer;
         table = layui.table;
     });
-    
-    showPtz = function(){
-        $("#ptz-block").css("opacity",1);
-    };
-
-    disPtz = function(){
-        $("#ptz-block").css("opacity",0);
-    };
 
     //鍒濆鍖栨覆鏌撴挱鏀惧垪琛�
     renderList();
 });
 
 /**
- * 鎾斁绐楀彛閫変腑
- * @param win1 鍒嗗睆鏁�
- * @param win2 閫変腑绐楀彛鏁�
+ * 娓叉煋鐩戞帶鍒楄〃
  */
-function selectWin(win1,win2) {
-    removeSelectCss();
-    splitWin = win1;
-    windowsNum = win2;
-    addSelectCss();
-}
-
-/**
- * 鍘婚櫎閫変腑CSS
- */
-function removeSelectCss() {
-    $("#f" + splitWin + "_d" + windowsNum).removeClass("selectWin");
-}
-
-/**
- * 澧炲姞閫変腑CSS
- */
-function addSelectCss() {
-    $("#f" + splitWin + "_d" + windowsNum).addClass("selectWin");
-}
-
-/**
- * 鍒嗗睆鍒囨崲
- * @param tagNum  鍒嗗睆鏁�
- */
-function fenping(tagNum) {
-
-    //鍒囨崲鍒嗗睆鍥炬爣鍙婇〉闈�
-    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");
-        $("#video_1").css('display', 'block');
-        $("#video_4").css('display', 'none');
-        $("#video_9").css('display', 'none');
+function renderList() {
+    if (!listCamera || listCamera.length == 0) {
+        return;
     }
-    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");
-        $("#video_1").css('display', 'none');
-        $("#video_4").css('display', 'block');
-        $("#video_9").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");
-        $("#video_1").css('display', 'none');
-        $("#video_4").css('display', 'none');
-        $("#video_9").css('display', 'block');
-    }
+    var eleTable = document.getElementById("cameraList");
+    var _tr;
+    var _td;
+
+    $.each(listCamera, function (index, item) {
+
+        _tr = document.createElement("tr");
+        _tr.ondblclick = function () {
+            getMedia(index);
+        };
+
+        _td = document.createElement("td");
+        _td.innerText = item.name;
+        _tr.appendChild(_td);
+
+        _td = document.createElement("td");
+        _td.innerText = item.type == "01" ? "鏋満" : "鐞冩満";
+        _tr.appendChild(_td);
+
+        _td = document.createElement("td");
+        _td.innerText = item.status == "OFF" ? "绂荤嚎" : "鍦ㄧ嚎";
+        _tr.appendChild(_td);
+
+        eleTable.appendChild(_tr);
+    })
 }
 
 /**
- * 鐐瑰嚮鎾斁
- * @param cameraId
+ * 鐐瑰嚮鑾峰彇鎾斁淇℃伅
+ * @param index
  */
-play = function (data) {
-    layer.msg("姝e湪鑾峰彇鎾斁淇℃伅鈥︹��");
-    cameraData = null;
-    playUrl = null;
+function getMedia(index) {
+    if(windowsNum == null){
+        windowsNum = 1;
+    }
+    playCamera = null;
+    var camera = listCamera[index];
+    playList[windowsNum] = camera;
+
     var data = {
-        id: data.id,
-        playType: data.playType
+        id: camera.id,
+        playType: camera.playType
     };
     $.ajax({
         type: 'POST',
@@ -105,144 +114,226 @@
             if (result.code != "SUCCESS") {
                 layer.msg(result.msg);
             } else {
-                cameraData = result;
-                playUrl = result.playUrl;
-                play2();
+                playCamera = result;
+                startPlay();
             }
         },
         error: function (result) {
-            play2();
+            layer.msg(result.msg);
+            startPlay();
         }
     });
 };
 
-play2 = function () {
-
-    if (!cameraData) {
-        layer.alert("鏈幏鍙栧埌褰撳墠鎽勫儚澶存挱鏀句俊鎭紒锛�");
-        return;
+/**
+ * 鎾斁绐楀彛閫変腑
+ * @param win1 鍒嗗睆鏁�
+ * @param win2 閫変腑绐楀彛鏁�
+ */
+function selectWin(win1, win2) {
+    if (windowsNum) {
+        removeSelectCss();
     }
+    splitWin = win1;
+    windowsNum = win2;
+    addSelectCss();
 
-    if(PlayType.VLC == cameraData.playType){ //璇存槑浣跨敤鏈湴VLC鎾斁
-        vlcToPlay();
-    }
-
-    if (PlayType.PLAY_TYPE_WEB_RTC_DH == cameraData.playType
-    || PlayType.PLAY_TYPE_WEB_RTC_HIK == cameraData.playType) {//浣跨敤web-rtc鎾斁
-        webRtcToPlay();
-    }
-};
-
-
-function renderList() {
-    if (!listCamera || listCamera.length == 0) {
-        return;
-    }
-    var eleTable = document.getElementById("cameraList");
-    var _tr;
-    var _td;
-    listCamera.forEach(function (data) {
-        _tr = document.createElement("tr");
-        _tr.ondblclick = function () {
-            play(data);
-        };
-
-        _td = document.createElement("td");
-        _td.innerText = data.name;
-        _tr.appendChild(_td);
-
-        _td = document.createElement("td");
-        _td.innerText = data.type == "01" ? "鏋満" : "鐞冩満";
-        _tr.appendChild(_td);
-
-        _td = document.createElement("td");
-        _td.innerText = data.status == "OFF" ? "绂荤嚎" : "鍦ㄧ嚎";
-        _tr.appendChild(_td);
-
-        eleTable.appendChild(_tr);
-    });
+    curCamera = playList[windowsNum];
 }
-
 
 /**
- * 鎾斁杩樻槸鏆傚仠
+ * 鍘婚櫎閫変腑CSS
  */
-function playStop() {
-    var videL = $('#easyPlayer');
-    if (videL.paused) {
-        videL.play();
-    } else {
-        videL.pause();
+function removeSelectCss() {
+    const target = document.getElementById("f" + splitWin + "_d" + windowsNum);
+    target.classList.remove('active');
+}
+
+/**
+ * 澧炲姞閫変腑CSS
+ */
+function addSelectCss() {
+    const target = document.getElementById("f" + splitWin + "_d" + windowsNum);
+    target.classList.add('active');
+}
+
+/**
+ * 鍒嗗睆鍒囨崲
+ * @param tagNum  鍒嗗睆鏁�
+ */
+function fenping(tagNum) {
+    if (windowsNum) {
+        removeSelectCss();
+    }
+    playList = {};
+
+    //閲嶇疆鍒囨崲鍓嶇殑鍒嗗睆绐楀彛
+    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");
+        $("#video_1").css('display', 'grid');
+        $("#video_4").css('display', 'none');
+        $("#video_9").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");
+        $("#video_1").css('display', 'none');
+        $("#video_4").css('display', 'grid');
+        $("#video_9").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");
+        $("#video_1").css('display', 'none');
+        $("#video_4").css('display', 'none');
+        $("#video_9").css('display', 'grid');
+    }
+    windowsNum = null;
+}
+
+/**
+ * 閲嶇疆鍒嗗睆鍓嶇殑绐楀彛
+ * @param num
+ */
+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);
     }
 }
-/*============= vlc瑙嗛鎾斁 ----- 寮�濮� ===============*/
-function vlcToPlay() {
-    $("#video").css('display','none');
-    $("#vlcPlayer").css('display','block');
-    var html = '';
-    html += '<object type="application/x-vlc-plugin"' +
-        'events="true" width="100%" height="100%"' +
-        'pluginspage="http://www.videolan.org"' +
-        'th:codebase="@{../../static/plugins/vlc/npapi-vlc-2.2.2.tar.xz}">' +
-        '<param name="mrl" value="' + playUrl + '"/>'+
-        '<param name="volume" value="50"/>' +
-        '<param name="autoplay" value="true"/>' +
-        '<param name="loop" value="false"/>' +
-        '<param name="fullscreen" value="true"/>' +
-        '<param name="toolbar" value="false"/>' +
-        '</object>';
-    $("#vlcPlayer").html(html);
+
+
+
+function startPlay() {
+
+    if(windowsNum > splitWin){
+        windowsNum = 1;
+    }
+    if (!playCamera) {
+        $("#f" + splitWin + "_d" + windowsNum).html("鏈幏鍙栧埌鎽勫儚澶存挱鏀句俊鎭紒锛�");
+    }
+
+    if (playCamera.playUrl) {
+        if (windowsNum === 1) {
+            playUrl1 = null;
+            mediaStream1 = null;
+            playUrl1 = playCamera.playUrl;
+            videoId1 = playCamera.cameraId;
+            webRtcToPlay1();
+        }else if (windowsNum === 2) {
+            playUrl2 = null;
+            mediaStream2 = null;
+            playUrl2 = playCamera.playUrl;
+            videoId2 = playCamera.cameraId;
+            webRtcToPlay2();
+        }else if (windowsNum === 3) {
+            playUrl3 = null;
+            mediaStream3 = null;
+            playUrl3 = playCamera.playUrl;
+            videoId3 = playCamera.cameraId;
+            webRtcToPlay3();
+        }else if (windowsNum === 4) {
+            playUrl4 = null;
+            mediaStream4 = null;
+            playUrl4 = playCamera.playUrl;
+            videoId4 = playCamera.cameraId;
+            webRtcToPlay4();
+        }else if (windowsNum === 5) {
+            playUrl5 = null;
+            mediaStream5 = null;
+            playUrl5 = playCamera.playUrl;
+            videoId5 = playCamera.cameraId;
+            webRtcToPlay5();
+        }else if (windowsNum === 6) {
+            playUrl6 = null;
+            mediaStream6 = null;
+            playUrl6 = playCamera.playUrl;
+            videoId6 = playCamera.cameraId;
+            webRtcToPlay6();
+        }else if (windowsNum === 7) {
+            playUrl7 = null;
+            mediaStream7 = null;
+            playUrl7 = playCamera.playUrl;
+            videoId7 = playCamera.cameraId;
+            webRtcToPlay7();
+        }else if (windowsNum === 8) {
+            playUrl8 = null;
+            mediaStream8 = null;
+            playUrl8 = playCamera.playUrl;
+            videoId8 = playCamera.cameraId;
+            webRtcToPlay8();
+        }else if (windowsNum === 9) {
+            playUr9 = null;
+            mediaStream9 = null;
+            playUrl9 = playCamera.playUrl;
+            videoId9 = playCamera.cameraId;
+            webRtcToPlay9();
+        }
+
+        curCamera = playList[windowsNum];
+    } else {
+        $("#f" + splitWin + "_d" + windowsNum).html("鏈幏鍙栧埌鎽勫儚澶�(" + playCamera.cameraName + ")鎾斁淇℃伅锛侊紒");
+    }
 }
 
-/*============= webRtc瑙嗛鎾斁 ----- 寮�濮� ===============*/
-
-/*============= webRtc瑙嗛鎾斁 ----- 寮�濮� ===============*/
+/*============= webRtc瑙嗛鎾斁1 ----- 寮�濮� ===============*/
 /**
  * 寮�濮嬫挱鏀�
  * @param winTag  鎾斁绐楀彛
  * @returns {Promise<void>}
  */
-async function webRtcToPlay() {
-    layer.msg("寮�濮嬪惎鍔ㄦ挱鏀锯�︹��");
-    $("#vlcPlayer").css('display','none');
-    $("#video").css('display','block');
-
-    if(playUrl){
-        mediaStream = new MediaStream();
-        $("#video")[0].srcObject = mediaStream;
-        webrtc = new RTCPeerConnection({
+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"
         });
-        webrtc.onsignalingstatechange = signalingstatechange;
+        webrtc1.onsignalingstatechange = signalingstatechange1;
 
-        webrtc.ontrack = ontrack
-        let offer = await webrtc.createOffer({
+        webrtc1.ontrack = ontrack1
+        let offer = await webrtc1.createOffer({
 
             offerToReceiveAudio: true,
             offerToReceiveVideo: true
         });
-        await webrtc.setLocalDescription(offer);
+        await webrtc1.setLocalDescription(offer);
     }
 }
 
-function ontrack(event) {
-    mediaStream.addTrack(event.track);
+function ontrack1(event) {
+    mediaStream1.addTrack(event.track);
 }
 
-async function signalingstatechange() {
-    switch (webrtc.signalingState) {
+async function signalingstatechange1() {
+    switch (webrtc1.signalingState) {
         case 'have-local-offer':
             // let uuid = $('#uuid').val();
-            let url = playUrl + "?uuid=" + cameraData.cameraId + "&channel=0";
+            let url = playUrl1 + "?uuid=" + videoId1 + "&channel=0";
             $.post(url, {
-                data: btoa(webrtc.localDescription.sdp)
+                data: btoa(webrtc1.localDescription.sdp)
             }, function (data) {
                 try {
                     console.log(data);
-                    webrtc.setRemoteDescription(new RTCSessionDescription({
+                    webrtc1.setRemoteDescription(new RTCSessionDescription({
                         type: 'answer',
                         sdp: atob(data)
                     }))
@@ -257,9 +348,519 @@
         case 'closed':
             break;
         default:
-            console.log(`unhandled signalingState is ${webrtc.signalingState}`);
+            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;
+    }
+}
+
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
\ No newline at end of file

--
Gitblit v1.9.3