From f6abc8c724eed706487b7616bc6c816e5db5c939 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期二, 09 十二月 2025 20:13:48 +0800
Subject: [PATCH] 数量检测页面提交

---
 fzzy-igdss-web/src/main/resources/static/security/video-webrtc.js |  242 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 242 insertions(+), 0 deletions(-)

diff --git a/fzzy-igdss-web/src/main/resources/static/security/video-webrtc.js b/fzzy-igdss-web/src/main/resources/static/security/video-webrtc.js
new file mode 100644
index 0000000..4556ba1
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/static/security/video-webrtc.js
@@ -0,0 +1,242 @@
+var layer;
+var playUrl= null;
+var loginTag = false;
+
+$(function () {
+    layui.use(['layer'], function () {
+        layer = layui.layer;
+    });
+
+    getMedia();
+});
+
+/**
+ * 鑾峰彇鎾斁淇℃伅
+ */
+function getMedia() {
+    var data = {
+        id: cameraData.id,
+        playType: cameraData.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") {
+                layer.msg(result.msg);
+            } else {
+                playUrl = result.playUrl;
+                toPlay();
+                onLogin();
+            }
+        },
+        error: function (result) {
+            layer.msg(result.msg);
+        }
+    });
+}
+
+/*============= webRtc瑙嗛鎾斁 ----- 寮�濮� ===============*/
+/**
+ * 寮�濮嬫挱鏀�
+ * @param winTag  鎾斁绐楀彛
+ * @returns {Promise<void>}
+ */
+async function toPlay() {
+    if(playUrl){
+        mediaStream = new MediaStream();
+        $("#video")[0].srcObject = mediaStream;
+        webrtc = new RTCPeerConnection({
+            iceServers: [{
+                urls: ["stun:stun.l.google.com:19302"]
+            }],
+            sdpSemantics: "unified-plan"
+        });
+        webrtc.onsignalingstatechange = signalingstatechange;
+
+        webrtc.ontrack = ontrack
+        let offer = await webrtc.createOffer({
+
+            offerToReceiveAudio: true,
+            offerToReceiveVideo: true
+        });
+        await webrtc.setLocalDescription(offer);
+    }
+}
+
+function ontrack(event) {
+    mediaStream.addTrack(event.track);
+}
+
+async function signalingstatechange() {
+    switch (webrtc.signalingState) {
+        case 'have-local-offer':
+            // let uuid = $('#uuid').val();
+            let url = playUrl + "?uuid=" + cameraData.id + "&channel=0";
+            $.post(url, {
+                data: btoa(webrtc.localDescription.sdp)
+            }, function (data) {
+                try {
+                    console.log(data);
+                    webrtc.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 ${webrtc.signalingState}`);
+            break;
+    }
+}
+/*============= 瑙嗛鎾斁 ----- 缁撴潫 ===============*/
+
+/**
+ *
+ * @param command 浜戝彴浜嬩欢绫诲瀷
+ * @param flag 鏄惁鍋滄鐩稿簲浜嬩欢
+ */
+function handPTZ(command, flag){
+    if(!loginTag){
+        layer.alert("璁惧浜戝彴鐧诲綍澶辫触锛岃閲嶈瘯锛�");
+        return;
+    }
+
+    //澶у崕浜戝彴鎺у埗
+    dhPlayerPTZ(command, flag);
+}
+
+/**
+ * 浜戝彴鎺у埗 -棰勭疆浣嶇疆璋冪敤
+ */
+function handPreset() {
+
+}
+
+/*============= 澶у崕JS浜戝彴鎺у埗 ----- 寮�濮� ===============*/
+/**
+ * @description 璁惧鐧诲綍
+ */
+function onLogin (){
+    onLogout();
+    let ip = cameraData.ip;
+    let port= cameraData.webPort;
+    let user= cameraData.loginId;
+    let pwd=  cameraData.pwd;
+
+    let target = ip + ':' + port;
+    setIP(target);
+    /**
+     * RPC.login 鐧诲綍
+     * @param {string} $user.value 鐢ㄦ埛鍚�
+     * @param {string} $password.value 瀵嗙爜
+     * @param {boolean} false 鏄惁httpOnly,榛樿false
+     * @returns {Promise}
+     */
+    RPC.login(user, pwd, false).then((res) => {
+
+        setCookie('DWebClientSessionID', '', -1);
+        setCookie('DhWebClientSessionID', '', -1);
+        /**
+         * RPC.keepAlive 淇濇椿
+         */
+        RPC.keepAlive(300, 60000, _getSession(), target, 0);
+        const browser = BrowserType();
+        if (browser.includes('ie')) {
+            window.onunload = () => {
+                ajax({
+                    url: 'global.logout'
+                });
+            };
+        } else if (browser.includes('chrome')) {
+            const params = {
+                method: 'global.logout',
+                params: null,
+                id: 10000,
+                session: _getSession()
+            };
+            pubsub.subscribe('onbeforeunload',() => {
+                navigator.sendBeacon('/RPC2', JSON.stringify(params));
+            });
+        } else {
+            pubsub.subscribe('onbeforeunload',() => {
+                ajax({
+                    url: 'global.logout'
+                });
+            });
+        }
+        //鐧诲綍鎴愬姛锛岃褰曠櫥褰曟垚鍔熺殑纭洏褰曞儚鏈�
+        loginTag = true;
+
+    }).catch((err) => {
+        console.log(err);
+    });
+}
+/**
+ * @description 璁惧娉ㄩ攢
+ */
+function onLogout (){
+    /**
+     * RPC.Global.logout 娉ㄩ攢鎺ュ彛
+     * @returns {Promise}
+     */
+    RPC.Global.logout().then(function() {
+        setLoginState(false);
+        playerInstance.forEach(item => {
+            if(item) {
+                item.stop();
+                item.close();
+                item = null;
+            }
+            loginTag = false;
+        });
+    });
+}
+
+/**
+ * @description 璁惧浜戝彴浜嬩欢
+ * @param {string} type 浜戝彴浜嬩欢绫诲瀷
+ * @param {boolean} isStop 鏄惁鍋滄鐩稿簲浜嬩欢
+ */
+function dhPlayerPTZ (type, isStop) {
+
+    //浜戝彴姝ラ暱
+    // let stepVal = $_('#h5_ptz_step').value - 0;
+    let stepVal = 5;
+    let arg2 = 0;
+    let arg2Arr = ['LeftUp', 'RightUp', 'LeftDown', 'RightDown'];
+    let presetArr = ['GotoPreset','SetPreset', 'ClearPreset'];
+    //棰勭疆鐐�
+    // let presetNum = $_('#h5_preset').value - 0;
+    let presetNum =  0;
+    if(arg2Arr.indexOf(type) > -1) {
+        arg2 = stepVal;
+    }
+    if(!isStop) {
+        if(presetArr.indexOf(type) > -1) {
+            /**
+             * RPC.PTZManager 浜戝彴鐩稿叧
+             * @param {string} 鏂规硶
+             * @param {number} channel 閫氶亾
+             * @param {object} 鍙傛暟闆嗗悎
+             */
+            RPC.PTZManager('start', 0, { 'code': type, 'arg1': presetNum, 'arg2': 0, 'arg3': 0 });
+        } else {
+            RPC.PTZManager('start', 0, { 'code': type, 'arg1': stepVal, 'arg2': arg2, 'arg3': 0 });
+        }
+    } else {
+        RPC.PTZManager('stop', 0, { 'code': type, 'arg1': stepVal, 'arg2': arg2, 'arg3': 0 });
+    }
+}
+/*============= 澶у崕JS浜戝彴鎺у埗 ----- 缁撴潫 ===============*/
\ No newline at end of file

--
Gitblit v1.9.3