<!DOCTYPE html> 
 | 
<html lang="en" xmlns:th="http://www.thymeleaf.org"> 
 | 
<head> 
 | 
    <meta charset="UTF-8"> 
 | 
    <title>测试页</title> 
 | 
    <script th:src="@{/js/jquery-3.6.4.min.js}"></script> 
 | 
    <script th:src="@{/js/adapter.min.js}"></script> 
 | 
    <script th:src="@{/js/webrtcstreamer.js}"></script> 
 | 
    <link rel="stylesheet" th:href="@{/css/bootstrap.css}"/> 
 | 
    <script th:src="@{/js/bootstrap.js}"></script> 
 | 
    <style> 
 | 
        .top-buffer { 
 | 
            margin-top: 10px; 
 | 
        } 
 | 
    </style> 
 | 
<body> 
 | 
<div class="container"> 
 | 
    <div class="row "> 
 | 
        <div class="dropdown"> 
 | 
            相机id:<select id="select"> 
 | 
        </select> 
 | 
        </div> 
 | 
    </div> 
 | 
    <div class="row top-buffer"> 
 | 
        <div class="col-md-1 col-md-offset-1"> 
 | 
            <button id="up" type="button" class="btn btn-primary">上</button> 
 | 
        </div> 
 | 
        <div class="col-md-4 col-md-offset-3"> 
 | 
            <div class="btn-group" role="group"> 
 | 
                <button id="controlZoomIn" type="button" class="btn btn-primary">调焦-</button> 
 | 
                <button id="controlZoomOut" type="button" class="btn btn-primary">调焦+</button> 
 | 
            </div> 
 | 
        </div> 
 | 
    </div> 
 | 
    <div class="row "> 
 | 
        <div class="col-md-1"> 
 | 
            <button id="left" type="button" class="btn btn-primary">左</button> 
 | 
        </div> 
 | 
        <div class="col-md-1 col-md-offset-1"> 
 | 
            <button id="right" type="button" class="btn btn-primary">右</button> 
 | 
        </div> 
 | 
        <div class="col-md-4 col-md-offset-2"> 
 | 
            <div class="btn-group" role="group"> 
 | 
                <button id="controlFocusNear" type="button" class="btn btn-primary">聚焦-</button> 
 | 
                <button id="controlFocusFar" type="button" class="btn btn-primary">聚焦+</button> 
 | 
            </div> 
 | 
        </div> 
 | 
    </div> 
 | 
    <div class="row "> 
 | 
        <div class="col-md-1 col-md-offset-1"> 
 | 
            <button id="down" type="button" class="btn btn-primary">下</button> 
 | 
        </div> 
 | 
        <div class="col-md-4 col-md-offset-3"> 
 | 
            <div class="btn-group" role="group"> 
 | 
                <button id="controlIrisOpen" type="button" class="btn btn-primary">光圈-</button> 
 | 
                <button id="controlIrisClose" type="button" class="btn btn-primary">光圈+</button> 
 | 
            </div> 
 | 
        </div> 
 | 
    </div> 
 | 
    <div class="row"> 
 | 
        <div class="col-md-6"> 
 | 
            <div class="row top-buffer"> 
 | 
                <div class="input-group"> 
 | 
                    <span class="input-group-addon">目的坐标值:</span> 
 | 
                    <input id="targetPostion" class="form-control" placeholder="目的坐标"/> 
 | 
                    <button id="setTargetPostion" type="button" class="btn btn-default">指向坐标</button> 
 | 
                </div> 
 | 
                <div class="input-group"> 
 | 
                    <span class="input-group-addon">P值:</span> 
 | 
                    <input id="p" class="form-control" placeholder="请输入P值"/> 
 | 
                </div> 
 | 
                <div class="input-group"> 
 | 
                    <span class="input-group-addon">T值:</span> 
 | 
                    <input id="t" class="form-control" placeholder="请输入T值"/> 
 | 
                </div> 
 | 
                <div class="input-group"> 
 | 
                    <span class="input-group-addon">Z值:</span> 
 | 
                    <input id="z" class="form-control" placeholder="请输入Z值"/> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="row top-buffer"> 
 | 
                <div class="btn-group" role="group"> 
 | 
                    <button id="getPTZ" type="button" class="btn btn-default">获取ptz</button> 
 | 
                    <button id="setPTZ" type="button" class="btn btn-default">设置ptz</button> 
 | 
                    <button id="setPreset" type="button" class="btn btn-default">设预置点</button> 
 | 
                    <button id="gotoPreset" type="button" class="btn btn-default">调预置点</button> 
 | 
                    <button id="getZeroPTZ" type="button" class="btn btn-default">调用零方位角</button> 
 | 
                    <button id="setZeroPTZ" type="button" class="btn btn-default">设置零方位角</button> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="row top-buffer"> 
 | 
                <div class="btn-group" role="group"> 
 | 
                    <button id="FocusMode" type="button" class="btn btn-default">手动聚焦</button> 
 | 
                    <div id="focusDiv" class="input-group"> 
 | 
                        <span class="input-group-addon">聚焦值:</span> 
 | 
                        <input id="focus" class="form-control" placeholder="聚焦值"/> 
 | 
                    </div> 
 | 
                    <button id="getFocusPos" type="button" class="btn btn-default">获取聚焦值</button> 
 | 
                    <button id="setFocusPos" type="button" class="btn btn-default">设置聚焦值</button> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="row top-buffer"> 
 | 
                <div class="btn-group" role="group"> 
 | 
                    <button id="WiperPwron" type="button" class="btn btn-default">开启雨刷</button> 
 | 
                    <button id="Defogcfg" type="button" class="btn btn-default">开启透雾</button> 
 | 
                    <button id="Infrarecfg" type="button" class="btn btn-default">开启红外</button> 
 | 
                    <button id="HeateRpwron" type="button" class="btn btn-default">开启云台加热</button> 
 | 
                    <button id="CameraDeicing" type="button" class="btn btn-default">开启镜头加热</button> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="row top-buffer"> 
 | 
                <div class="btn-group" role="group"> 
 | 
                    <button id="voice" type="button" class="btn btn-default">开始语音对讲</button> 
 | 
                    <button id="record" type="button" class="btn btn-default">开始录像</button> 
 | 
                    <button id="realCutPic" type="button" class="btn btn-default">实时抓图</button> 
 | 
                    <button id="saveCutPic" type="button" class="btn btn-default">存储抓图</button> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="row top-buffer"> 
 | 
                <div class="col-md-6"> 
 | 
                    <img class="thumbnail" id="imgContainer" style="width: 500px; height: 300px;"/> 
 | 
                </div> 
 | 
            </div> 
 | 
        </div> 
 | 
        <div class="col-md-1"/> 
 | 
        <div class="col-md-5"> 
 | 
            <div class="row top-buffer"> 
 | 
                <video id="video" muted autoplay loop controls style="width: 800px; height: 100%; object-fit: fill;"/> 
 | 
            </div> 
 | 
        </div> 
 | 
    </div> 
 | 
</div> 
 | 
<script th:inline="javascript" th:type="module"> 
 | 
  
 | 
    var cameraId, opt, optOpen, optClose, token; 
 | 
    window.onload = function () { 
 | 
        $.ajax({ 
 | 
            url: "../hik/list", 
 | 
            type: "get", 
 | 
            success: function (data) { 
 | 
                console.log(data); 
 | 
                var arr = data.data; 
 | 
                for (var i = 0; i < arr.length; i++) { 
 | 
                    console.log(arr[i].id); 
 | 
                    var camera = { 
 | 
                        type: arr[i].gdtype, 
 | 
                        ipaddr: arr[i].ip, 
 | 
                        username: arr[i].username, 
 | 
                        password: arr[i].password, 
 | 
                        port: arr[i].rtspPort, 
 | 
                        longitude: arr[i].longitude, 
 | 
                        latitude: arr[i].latitude, 
 | 
                        altitude: arr[i].altitude 
 | 
                    }; 
 | 
                    cameraMap.set(arr[i].id, camera); 
 | 
                    //先创建好select里面的option元素 
 | 
                    var option = document.createElement("option"); 
 | 
                    //给option的text赋值,这就是你点开下拉框能够看到的东西 
 | 
                    $(option).text(arr[i].id); 
 | 
                    //获取select 下拉框对象,并将option添加进select 
 | 
                    $('#select').append(option); 
 | 
                } 
 | 
            } 
 | 
        }) 
 | 
        opt = {"username": "admin", "password": "admin123"}; 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json' 
 | 
            }, 
 | 
            url: "../login", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(opt), 
 | 
            success: function (data) { 
 | 
                console.log(data); 
 | 
                token = data.token; 
 | 
            } 
 | 
        }) 
 | 
        // 初始化内容 
 | 
        console.log(cameraMap); 
 | 
    } 
 | 
    //云台上下左右 
 | 
    $("#up").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 2; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
  
 | 
    }) 
 | 
    $("#up").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 2; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#down").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 8; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#down").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 8; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#left").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 4; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#left").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 4; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#right").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 6; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#right").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 6; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    //变倍 
 | 
    $("#controlZoomIn").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 10; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#controlZoomIn").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 10; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#controlZoomOut").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 11; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#controlZoomOut").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 11; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    //变焦 
 | 
    $("#controlFocusNear").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 12; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#controlFocusNear").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 12; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#controlFocusFar").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 13; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#controlFocusFar").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 13; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    //光圈 
 | 
    $("#controlIrisOpen").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 14; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#controlIrisOpen").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 14; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#controlIrisClose").mousedown(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 15; 
 | 
        var enable = true; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
    $("#controlIrisClose").mouseup(function () { 
 | 
        var url = "../hik/PTZControlWithSpeed"; 
 | 
        var code = 15; 
 | 
        var enable = false; 
 | 
        commondMethod(url, code, enable); 
 | 
    }) 
 | 
  
 | 
    $("#setPreset").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "presetIndex": 1}; 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: "../hik/setPreset", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(opt), 
 | 
            success: function (data) { 
 | 
                console.log(data); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
    $("#gotoPreset").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "presetIndex": 1}; 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: "../hik/gotoPreset", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(opt), 
 | 
            success: function (data) { 
 | 
                console.log(data); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
    $("#getPTZ").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        opt = {"cameraId": cameraId, "channelNum": 1}; 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: "../hik/getPTZ", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(opt), 
 | 
            success: function (datas) { 
 | 
                console.log(datas); 
 | 
                $("#p").val(datas.data.p); 
 | 
                $("#t").val(datas.data.t); 
 | 
                $("#z").val(datas.data.z); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
    $("#setPTZ").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        var p = $('#p').val(); 
 | 
        var t = $('#t').val(); 
 | 
        var z = $('#z').val(); 
 | 
        //定义一个带有Map字段的实体对象 
 | 
        var myEntity = { 
 | 
            channelNum: 1, 
 | 
            cameraId: cameraId, 
 | 
            ptzMap: { 
 | 
                p: p, 
 | 
                t: t, 
 | 
                z: z 
 | 
            } 
 | 
        }; 
 | 
        console.log(opt) 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: "../hik/setPTZ", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(myEntity), 
 | 
            success: function (data) { 
 | 
                console.log(data); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
    $("#setTargetPostion").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        var camera = cameraMap.get(cameraId); 
 | 
        var camP = camera.longitude + ',' + camera.latitude + ',' + camera.altitude; 
 | 
        var targetP = $('#targetPostion').val(); 
 | 
        //定义一个带有Map字段的实体对象 
 | 
        var myEntity = { 
 | 
            channelNum: 1, 
 | 
            cameraId: cameraId, 
 | 
            targetPosition: targetP, 
 | 
            camPosition: camP, 
 | 
        }; 
 | 
        console.log(myEntity) 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: "../hik/setTargetPosition", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(myEntity), 
 | 
            success: function (data) { 
 | 
                console.log(data); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
    $("#setZeroPTZ").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        opt = {"cameraId": cameraId, "channelNum": 1}; 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: "../hik/setZeroPTZ", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(opt), 
 | 
            success: function (data) { 
 | 
                console.log(data); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
    $("#WiperPwron").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "enable": true, "code": 16}; 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: "../hik/PTZControlWithSpeed", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(opt), 
 | 
            success: function (data) { 
 | 
                console.log(data); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
    var defogflag = true; 
 | 
    $("#Defogcfg").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true}; 
 | 
        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false}; 
 | 
        if (defogflag) { 
 | 
            $(this).text("关闭透雾"); 
 | 
            defogflag = false; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/defogcfg", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optOpen), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } else { 
 | 
            $(this).text("开启透雾"); 
 | 
            defogflag = true; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/defogcfg", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optClose), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } 
 | 
  
 | 
    }) 
 | 
    var infrareflag = true; 
 | 
    $("#Infrarecfg").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true}; 
 | 
        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false}; 
 | 
        if (infrareflag) { 
 | 
            $(this).text("关闭红外"); 
 | 
            infrareflag = false; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/infrarecfg", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optOpen), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } else { 
 | 
  
 | 
            $(this).text("开启红外"); 
 | 
            infrareflag = true; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/infrarecfg", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optClose), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } 
 | 
    }) 
 | 
    var focusModeflag = true; 
 | 
    $("#FocusMode").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true}; 
 | 
        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false}; 
 | 
        if (focusModeflag) { 
 | 
            $(this).text("自动聚焦"); 
 | 
            focusModeflag = false; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/focusMode", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optOpen), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } else { 
 | 
            $(this).text("手动聚焦"); 
 | 
            focusModeflag = true; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/focusMode", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optClose), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } 
 | 
    }) 
 | 
    var heateRpwronflag = true; 
 | 
    $("#HeateRpwron").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true}; 
 | 
        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false}; 
 | 
        if (heateRpwronflag) { 
 | 
            $(this).text("关闭云台加热"); 
 | 
            heateRpwronflag = false; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/heateRpwron", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optOpen), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } else { 
 | 
            $(this).text("开启云台加热"); 
 | 
            heateRpwronflag = true; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/heateRpwron", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optClose), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } 
 | 
    }) 
 | 
    var CameraDeicingflag = true; 
 | 
    $("#CameraDeicing").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true}; 
 | 
        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false}; 
 | 
        if (CameraDeicingflag) { 
 | 
            $(this).text("关闭镜头加热"); 
 | 
            CameraDeicingflag = false; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json' 
 | 
                }, 
 | 
                url: "../hik/cameraDeicing", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optOpen), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } else { 
 | 
            $(this).text("开启镜头加热"); 
 | 
            CameraDeicingflag = true; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/cameraDeicing", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optClose), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } 
 | 
    }) 
 | 
    $("#realCutPic").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        opt = {"cameraId": cameraId, "channelNum": 1}; 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: "../hik/captureJPEGPicture", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(opt), 
 | 
            success: function (data) { 
 | 
                console.log(data.data); 
 | 
                $("#imgContainer").attr("src", "data:image/png;base64," + data.data); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
    $("#saveCutPic").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        opt = {"cameraId": cameraId, "channelNum": 1}; 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: "../hik/picCutCate", 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(opt), 
 | 
            success: function (data) { 
 | 
                console.log(data.data); 
 | 
                $('#imgContainer').attr('src', data.data); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
    var recordflag = true; 
 | 
    $("#record").click(function () { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        optOpen = {"cameraId": cameraId, "channelNum": 1, "enable": true}; 
 | 
        optClose = {"cameraId": cameraId, "channelNum": 1, "enable": false}; 
 | 
        if (recordflag) { 
 | 
            $(this).text("停止录像"); 
 | 
            recordflag = false; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/record", 
 | 
                type: "post", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optOpen), 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } else { 
 | 
            $(this).text("开始录像"); 
 | 
            recordflag = true; 
 | 
            $.ajax({ 
 | 
                headers: { 
 | 
                    'Accept': 'application/json', 
 | 
                    'Content-Type': 'application/json', 
 | 
                    'Authorization': token 
 | 
                }, 
 | 
                url: "../hik/record", 
 | 
                dataType: "json", 
 | 
                data: JSON.stringify(optClose), 
 | 
                type: "post", 
 | 
                success: function (data) { 
 | 
                    console.log(data); 
 | 
                } 
 | 
            }) 
 | 
        } 
 | 
    }) 
 | 
  
 | 
    var cameraMap = new Map(); 
 | 
  
 | 
    /*云台公共方法*/ 
 | 
    function commondMethod(url, code, enable) { 
 | 
        cameraId = $('#select option:selected').val(); 
 | 
        opt = {"cameraId": cameraId, "channelNum": 1, "speed": 8, "enable": enable, "code": code}; 
 | 
        $.ajax({ 
 | 
            headers: { 
 | 
                'Accept': 'application/json', 
 | 
                'Content-Type': 'application/json', 
 | 
                'Authorization': token 
 | 
            }, 
 | 
            url: url, 
 | 
            type: "post", 
 | 
            dataType: "json", 
 | 
            data: JSON.stringify(opt), 
 | 
            success: function (data) { 
 | 
                console.log(data); 
 | 
            } 
 | 
        }) 
 | 
    } 
 | 
  
 | 
    let webRtcServer = null; 
 | 
    let videoMap = new Map(); 
 | 
    $('video').click(function (e) { 
 | 
        let ID = e.target.id;//获取当前点击事件的元素 
 | 
        console.log(ID); 
 | 
        if (videoMap.get(ID) != null) { 
 | 
            closeVideo(ID, videoMap.get(ID)); 
 | 
        } else { 
 | 
            var cameraId = $('#select option:selected').val(); 
 | 
            let camera = cameraMap.get(cameraId); 
 | 
            console.log(camera); 
 | 
            if (camera.type == "ys") { 
 | 
                realViewYs("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port); 
 | 
            } else if (camera.type == "dh") { 
 | 
                realViewDh("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port); 
 | 
            } else { 
 | 
                realViewHik("127.0.0.1", ID, camera.username, camera.password, camera.ipaddr, camera.port); 
 | 
            } 
 | 
        } 
 | 
    }); 
 | 
  
 | 
    //预览海康相机 
 | 
    function realViewHik(serverip, elem, username, password, ipaddr, port) { 
 | 
       // webRtcServer = new WebRtcStreamer(elem, "http://" + serverip + ":8000"); 
 | 
        webRtcServer = new WebRtcStreamer(elem, "http://192.168.1.227:9000"); 
 | 
        let rtspUrl = "rtsp://" + username + ":" + password + "@" + ipaddr + ":" + port + "/ch1/main/av_stream"; 
 | 
        let option = "rtptransport=tcp"; 
 | 
        console.log("rtsp地址:" + rtspUrl); 
 | 
        webRtcServer.connect(rtspUrl, null, option, null); 
 | 
        videoMap.set(elem, webRtcServer); 
 | 
    } 
 | 
  
 | 
    //预览大华相机 
 | 
    function realViewDh(serverip, elem, username, password, ipaddr, port) { 
 | 
        webRtcServer = new WebRtcStreamer(elem, "http://" + serverip + ":8000"); 
 | 
        let rtspUrl = "rtsp://" + username + ":" + password + "@" + ipaddr + ":" + port + "/cam/realmonitor?channel=1&subtype=0"; 
 | 
        let option = "rtptransport=tcp"; 
 | 
        console.log("rtsp地址:" + rtspUrl); 
 | 
  
 | 
        webRtcServer.connect(rtspUrl, null, option, null); 
 | 
        videoMap.set(elem, webRtcServer); 
 | 
    } 
 | 
  
 | 
    //预览宇视相机 
 | 
    function realViewYs(serverip, elem, username, password, ipaddr, port) { 
 | 
        webRtcServer = new WebRtcStreamer(elem, "http://" + serverip + ":8000"); 
 | 
        let rtspUrl = "rtsp://" + username + ":" + password + "@" + ipaddr + ":" + port + "/media/video1/multicast"; 
 | 
        console.log("rtsp地址:" + rtspUrl); 
 | 
        let option = "rtptransport=tcp"; 
 | 
        webRtcServer.connect(rtspUrl, null, option, null); 
 | 
        videoMap.set(elem, webRtcServer); 
 | 
    } 
 | 
  
 | 
    function closeVideo(id, webrtc) { 
 | 
        webrtc.disconnect(); 
 | 
        videoMap.delete(id); 
 | 
    } 
 | 
  
 | 
    //页面退出时销毁 
 | 
    window.onbeforeunload = function () { 
 | 
        webRtcServer.disconnect(); 
 | 
    } 
 | 
</script> 
 | 
</body> 
 | 
</html> 
 |