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