From aad1f2dd7b10ec03d78d703bc2c31b9e679a82b6 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期一, 05 一月 2026 17:19:23 +0800
Subject: [PATCH] 监管视频逻辑调整

---
 fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html |   63 ++++++++++++++++++--
 fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js      |   91 +++++++++++++++++-------------
 fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java    |    6 +-
 3 files changed, 111 insertions(+), 49 deletions(-)

diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java b/fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java
index 0c663cd..5b8e9b8 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java
@@ -88,7 +88,7 @@
      */
     public ApiCameraResp getPlayAddr(Camera param, String requireIp) {
 
-        if (StringUtils.isEmpty(param.getId())) {
+        if (StringUtils.isEmpty(param.getId()) || StringUtils.isEmpty(param.getPlayType())) {
             log.error("娌℃湁鑾峰彇鍒扮洃鎺т俊鎭紒");
             return new ApiCameraResp("ERROR", "娌℃湁鑾峰彇鍒扮洃鎺т俊鎭紒");
         }
@@ -108,7 +108,7 @@
         apiCameraData.setIp(camera.getIp());
         apiCameraData.setCtrlPort(camera.getControlPort());
         apiCameraData.setWebPort(camera.getWebPort());
-        apiCameraData.setPlayType(camera.getPlayType());
+        apiCameraData.setPlayType(param.getPlayType());
         apiCameraData.setSnapType(camera.getSnapType());
         apiCameraData.setSn(camera.getSn());
         apiCameraData.setChannel(camera.getChanNum());
@@ -119,7 +119,7 @@
         apiCameraData.setMediaAddr(camera.getMediaAddr());
 
         //鏍规嵁鎾斁鏂瑰紡鑾峰彇瀵瑰簲鐨勬挱鏀惧湴鍧�
-        ApiCameraResp resp = apiCameraManager.getApiCameraService(camera.getPlayType()).getPlayAddr(apiCameraData);
+        ApiCameraResp resp = apiCameraManager.getApiCameraService(apiCameraData.getPlayType()).getPlayAddr(apiCameraData);
         return resp;
     }
 
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 7ca15fb..aff5113 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
@@ -7,7 +7,7 @@
 var playCamera = null;
 var playList = {};
 
-var playTag = 1;  //榛樿鍐呯綉鎾斁
+var playTag = "1";  //榛樿鍐呯綉鎾斁
 
 var playUrl1 = null;
 var videoId1 = null;
@@ -47,14 +47,32 @@
 let mediaStream9;
 
 $(function () {
-    layui.use(['layer', 'table'], function () {
+    layui.use(['layer', 'form', 'table'], function () {
         layer = layui.layer;
         table = layui.table;
+        form = layui.form;
+
+        // 鐩戝惉鎾斁鏂瑰紡
+        form.on('select(select_play)', function (obj) {
+            return renderPlayType();
+        });
     });
 
     //鍒濆鍖栨覆鏌撴挱鏀惧垪琛�
     renderList();
 });
+
+/**
+ * 鍒囨崲鎾斁鏂瑰紡
+ */
+function renderPlayType() {
+    playTag = $("#playLan").val();
+
+    //鍐呯綉鎾斁锛岄噸缃悇涓挱鏀剧獥鍙�
+    reloadView(1);
+    reloadView(4);
+    reloadView(9);
+}
 
 /**
  * 娓叉煋鐩戞帶鍒楄〃
@@ -95,16 +113,21 @@
  * @param index
  */
 function getMedia(index) {
-    if(windowsNum == null){
+    if (windowsNum == null) {
         windowsNum = 1;
     }
     playCamera = null;
     var camera = listCamera[index];
     playList[windowsNum] = camera;
 
+    var playType = camera.playType;
+    if (playTag === "1") {
+        //鍐呯綉鎾斁,璧嬪�糤ebRtc鎾斁鏂瑰紡
+        playType = "WEB_RTC";
+    }
     var data = {
         id: camera.id,
-        playType: camera.playType
+        playType: playType
     };
     $.ajax({
         type: 'POST',
@@ -223,16 +246,22 @@
  * 鍒ゆ柇鍐呯綉鎾斁杩樻槸澶栫綉鎾斁
  */
 function startPlay() {
-
-    startPlay1();
+    if (playTag === "1") {
+        //鍐呯綉鎾斁
+        startPlay1();
+    }
+    if (playTag === "2") {
+        //澶栫綉鎾斁
+        startPlay2();
+    }
 }
 
 /**
  * 澶栫綉鎾斁
  */
-function startPlay1() {
+function startPlay2() {
 
-    if(windowsNum > splitWin){
+    if (windowsNum > splitWin) {
         windowsNum = 1;
     }
     if (!playCamera) {
@@ -240,28 +269,10 @@
     }
 
     if (playCamera.playUrl) {
+        var html = '<div class="mask" onclick="selectWin(' + splitWin + ',' + windowsNum + ')"></div>';
+        html += '<iframe src="' + playCamera.playUrl + '" width="99%" height="99%" frameborder="0" allowfullscreen></iframe>';
+        $("#f" + splitWin + "_d" + windowsNum).html(html);
 
-        var divId = "#f" + splitWin + "_d" + windowsNum;
-        var html = '<video class="video" id="video' + splitWin + '_' + windowsNum+'" style="width:100%;height: 100%"  controls>';
-        $(divId).html(html);
-
-        if (flvjs.isSupported()) {
-            var videoElement = document.getElementById("video" + splitWin + '_' + windowsNum);
-            var flvPlayer = flvjs.createPlayer({
-                type: 'flv',
-                isLive: true,
-                cors: true,
-                url: playCamera.playUrl
-            });
-            flvPlayer.attachMediaElement(videoElement);
-            flvPlayer.load();
-            flvPlayer.play();
-        }
-
-        // var html = '<video class="video" id="video'+splitWin + "_" + windowsNum+'" autoplay playsinline="true" webkit-playsinline="true" crossorigin="anonymous"';
-        // html += 'crossorigin="anonymous" src="blob:'+playCamera.playUrl+'" style="display: none;"></video>';
-        // html += '<canvas width="100%" height="100%" style="height: 100%">';
-        // $("#f" + splitWin + "_d" + windowsNum).html(html);
         curCamera = playList[windowsNum];
     } else {
         $("#f" + splitWin + "_d" + windowsNum).html("鏈幏鍙栧埌鎽勫儚澶�(" + playCamera.cameraName + ")鎾斁淇℃伅锛侊紒");
@@ -271,9 +282,9 @@
 /**
  * 鍐呯綉鎾斁
  */
-function startPlay2() {
+function startPlay1() {
 
-    if(windowsNum > splitWin){
+    if (windowsNum > splitWin) {
         windowsNum = 1;
     }
     if (!playCamera) {
@@ -287,49 +298,49 @@
             playUrl1 = playCamera.playUrl;
             videoId1 = playCamera.cameraId;
             webRtcToPlay1();
-        }else if (windowsNum === 2) {
+        } else if (windowsNum === 2) {
             playUrl2 = null;
             mediaStream2 = null;
             playUrl2 = playCamera.playUrl;
             videoId2 = playCamera.cameraId;
             webRtcToPlay2();
-        }else if (windowsNum === 3) {
+        } else if (windowsNum === 3) {
             playUrl3 = null;
             mediaStream3 = null;
             playUrl3 = playCamera.playUrl;
             videoId3 = playCamera.cameraId;
             webRtcToPlay3();
-        }else if (windowsNum === 4) {
+        } else if (windowsNum === 4) {
             playUrl4 = null;
             mediaStream4 = null;
             playUrl4 = playCamera.playUrl;
             videoId4 = playCamera.cameraId;
             webRtcToPlay4();
-        }else if (windowsNum === 5) {
+        } else if (windowsNum === 5) {
             playUrl5 = null;
             mediaStream5 = null;
             playUrl5 = playCamera.playUrl;
             videoId5 = playCamera.cameraId;
             webRtcToPlay5();
-        }else if (windowsNum === 6) {
+        } else if (windowsNum === 6) {
             playUrl6 = null;
             mediaStream6 = null;
             playUrl6 = playCamera.playUrl;
             videoId6 = playCamera.cameraId;
             webRtcToPlay6();
-        }else if (windowsNum === 7) {
+        } else if (windowsNum === 7) {
             playUrl7 = null;
             mediaStream7 = null;
             playUrl7 = playCamera.playUrl;
             videoId7 = playCamera.cameraId;
             webRtcToPlay7();
-        }else if (windowsNum === 8) {
+        } else if (windowsNum === 8) {
             playUrl8 = null;
             mediaStream8 = null;
             playUrl8 = playCamera.playUrl;
             videoId8 = playCamera.cameraId;
             webRtcToPlay8();
-        }else if (windowsNum === 9) {
+        } else if (windowsNum === 9) {
             playUr9 = null;
             mediaStream9 = null;
             playUrl9 = playCamera.playUrl;
@@ -598,6 +609,7 @@
 }
 
 /*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
 /*============= webRtc瑙嗛鎾斁5 ----- 寮�濮� ===============*/
 /**
  * 寮�濮嬫挱鏀�
@@ -661,6 +673,7 @@
 }
 
 /*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
 /*============= webRtc瑙嗛鎾斁4 ----- 寮�濮� ===============*/
 /**
  * 寮�濮嬫挱鏀�
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html b/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
index fdbe8e8..c9737a3 100644
--- a/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
+++ b/fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
@@ -16,6 +16,7 @@
             height: 100%;
             overflow-y: hidden;
         }
+
         /* 椤甸潰鍩虹閲嶇疆 */
         body {
             margin: 0;
@@ -97,17 +98,21 @@
             color: #fff;
             cursor: pointer;
         }
+
         .sp-table {
             overflow: auto;
         }
+
         .sp-table::-webkit-scrollbar {
             display: none; /* 闅愯棌婊氬姩鏉� */
         }
+
         .fenping_icon {
             position: absolute;
-            right: 30px;
-            top: 16px;
+            right: 20px;
+            top: 15px;
         }
+
         .div1 {
             width: 100%;
             height: 100%;
@@ -120,6 +125,7 @@
             box-sizing: border-box;
             overflow: hidden;
         }
+
         .div_v1 {
             background-color: #333;
             font-size: 24px;
@@ -131,6 +137,7 @@
             box-sizing: border-box;
             z-index: 1; /* 鍩虹灞傜骇 */
         }
+
         /* 閫変腑椤癸細绾㈣壊杈规锛堣鐩栬嚜韬懆杈圭殑鐧借壊鍒嗛殧绾匡級 */
         .div_v1.active::after {
             content: '';
@@ -145,6 +152,7 @@
             box-sizing: border-box;
             transition: all 0.2s ease;
         }
+
         .div4 {
             width: 100%;
             height: 100%;
@@ -157,6 +165,7 @@
             box-sizing: border-box;
             overflow: hidden;
         }
+
         .div_v4 {
             background-color: #333;
             font-size: 24px;
@@ -168,6 +177,7 @@
             box-sizing: border-box;
             z-index: 1; /* 鍩虹灞傜骇 */
         }
+
         /* 閫変腑椤癸細绾㈣壊杈规锛堣鐩栬嚜韬懆杈圭殑鐧借壊鍒嗛殧绾匡級 */
         .div_v4.active::after {
             content: '';
@@ -182,6 +192,7 @@
             box-sizing: border-box;
             transition: all 0.2s ease;
         }
+
         .div9 {
             width: 100%;
             height: 100%;
@@ -194,6 +205,7 @@
             box-sizing: border-box;
             overflow: hidden;
         }
+
         .div_v9 {
             background-color: #333;
             font-size: 24px;
@@ -205,6 +217,7 @@
             box-sizing: border-box;
             z-index: 1; /* 鍩虹灞傜骇 */
         }
+
         /* 閫変腑椤癸細绾㈣壊杈规锛堣鐩栬嚜韬懆杈圭殑鐧借壊鍒嗛殧绾匡級 */
         .div_v9.active::after {
             content: '';
@@ -219,9 +232,32 @@
             box-sizing: border-box;
             transition: all 0.2s ease;
         }
+
         .video {
             width: 100%;
             height: 100%;
+        }
+
+        .playList {
+            position: absolute;
+            right: 200px;
+            font-size: 16px;
+            width: 200px;
+        }
+        .layui-input {
+            background-color: #999;
+            border-color: #999;
+        }
+
+        /* 閬僵灞傦細瑕嗙洊鏁翠釜瀹瑰櫒锛岄�忔槑锛岀偣鍑绘椂瑙﹀彂鐖禿iv浜嬩欢 */
+        .mask {
+            position: absolute;
+            top: 0;
+            left: 0;
+            width: 100%;
+            height: 100%;
+            background: transparent;
+            z-index: 1; /* 閬僵灞傚湪iframe涓婃柟 */
         }
     </style>
 </head>
@@ -238,10 +274,21 @@
                             <h3>
                                 <i></i>瑙嗛瀹炴椂棰勮
                             </h3>
+                            <div class="playList">
+                                <form class="layui-form">
+                                    <select id="playLan" lay-filter="select_play" class="form-control">
+                                        <option value="1">鍐呯綉鎾斁</option>
+                                        <option value="2">澶栫綉鎾斁</option>
+                                    </select>
+                                </form>
+                            </div>
                             <div class="fenping_icon">
-                                <img onclick="fenping(1)" id="f_1" style="width: 30px" th:src="@{/img/web/group/fp_1_active.png}"/>
-                                <img onclick="fenping(4)" id="f_4" style="width: 30px" th:src="@{/img/web/group/fp_4.png}"/>
-                                <img onclick="fenping(9)" id="f_9" style="width: 30px" th:src="@{/img/web/group/fp_9.png}"/>
+                                <img onclick="fenping(1)" id="f_1" style="width: 38px"
+                                     th:src="@{/img/web/group/fp_1_active.png}"/>
+                                <img onclick="fenping(4)" id="f_4" style="width: 38px"
+                                     th:src="@{/img/web/group/fp_4.png}"/>
+                                <img onclick="fenping(9)" id="f_9" style="width: 38px"
+                                     th:src="@{/img/web/group/fp_9.png}"/>
                             </div>
                         </div>
 
@@ -366,11 +413,13 @@
                                 </ul>
                             </div>
                             <div class="sp-bianbei fl">
-                                <button type="button" class="sp-sxBtn sp-czBtn" onmousedown="ptzControl(9)" onmouseup="zoomStop()">
+                                <button type="button" class="sp-sxBtn sp-czBtn" onmousedown="ptzControl(9)"
+                                        onmouseup="zoomStop()">
                                     <i>锛�</i>
                                 </button>
                                 <span>鍙樼劍</span>
-                                <button type="button" class="sp-fdBtn sp-czBtn" onmousedown="ptzControl(10)" onmouseup="zoomStop()">
+                                <button type="button" class="sp-fdBtn sp-czBtn" onmousedown="ptzControl(10)"
+                                        onmouseup="zoomStop()">
                                     <i>锛�</i>
                                 </button>
                             </div>

--
Gitblit v1.9.3