czt
2026-01-05 aad1f2dd7b10ec03d78d703bc2c31b9e679a82b6
监管视频逻辑调整
已修改3个文件
136 ■■■■ 文件已修改
fzzy-igdss-web/src/main/java/com/fzzy/security/manager/SecManager.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
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);
}
/**
 * 渲染监控列表
@@ -102,9 +120,14 @@
    var camera = listCamera[index];
    playList[windowsNum] = camera;
    var playType = camera.playType;
    if (playTag === "1") {
        //内网播放,赋值WebRtc播放方式
        playType = "WEB_RTC";
    }
    var data = {
        id: camera.id,
        playType: camera.playType
        playType: playType
    };
    $.ajax({
        type: 'POST',
@@ -223,14 +246,20 @@
 * 判断内网播放还是外网播放
 */
function startPlay() {
    if (playTag === "1") {
        //内网播放
    startPlay1();
    }
    if (playTag === "2") {
        //外网播放
        startPlay2();
    }
}
/**
 * 外网播放
 */
function startPlay1() {
function startPlay2() {
    if(windowsNum > splitWin){
        windowsNum = 1;
@@ -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,7 +282,7 @@
/**
 * 内网播放
 */
function startPlay2() {
function startPlay1() {
    if(windowsNum > splitWin){
        windowsNum = 1;
@@ -598,6 +609,7 @@
}
/*============= 视频播放 ----- 结束 ===============*/
/*============= webRtc视频播放5 ----- 开始 ===============*/
/**
 * 开始播放
@@ -661,6 +673,7 @@
}
/*============= 视频播放 ----- 结束 ===============*/
/*============= webRtc视频播放4 ----- 开始 ===============*/
/**
 * 开始播放
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;
        }
        /* 遮罩层:覆盖整个容器,透明,点击时触发父div事件 */
        .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>