import './jsencrypt.min.js' // import { // WebControl // } from './jsWebControl-1.0.0.min.js' var isChrome = navigator.userAgent.indexOf('Chrome') > -1 // 是否是谷歌 if (isChrome) { // let WebControl = null var aa = () => import('./jsWebControl-1.0.0.min.js') aa().then(res => { console.log(res) WebControl = res.WebControl }) } console.log('谷歌' + isChrome) var oWebControl = null; var pubKey = ''; var initCount = 0; var a, b, c, d, types, layouts; var width, height; // var _thiss; // 获取公钥 // function getPubKey(callback) { // oWebControl.JS_RequestInterface({ // funcName: "getRSAPubKey", // argument: JSON.stringify({ // keyLength: 1024 // }) // }).then(function (oData) { // console.log(oData) // if (oData.responseMsg.data) { // pubKey = oData.responseMsg.data // callback() // } // }) // } // RSA加密 function setEncrypt(value) { var encrypt = new JSEncrypt(); encrypt.setPublicKey(pubKey); return encrypt.encrypt(value); } // 反初始化 export function unInitObjPlugin() { console.log('调用unInitObjPlugin', '5555555'); // if (!oWebControl) { return false; } oWebControl.JS_RequestInterface({ funcName: "destroyWnd" }).then(function (oData) { console.log(JSON.stringify(oData ? oData.responseMsg : '')); console.log('销毁失败'); }); // var bIE = (!!window.ActiveXObject || 'ActiveXObject' in window); // 是否为IE浏览器 if (bIE) { if (oWebControl != null) { oWebControl.JS_Disconnect().then(function () { console.log("JS_Disconnect"); }, function () { }); } } else { if (oWebControl != null) { oWebControl.JS_DestroyWnd().then(function () { console.log("JS_DestroyWnd"); }, function () { }); oWebControl.JS_StopService("window").then(function () { oWebControl.JS_Disconnect().then(function () { console.log("JS_Disconnect"); }, function () { }); }); } } } //预览视频 export function OpenVideo(cameraIndexCode, streamMode, winIndex) { var transMode = +'1'; //传输协议:1、TCP 0、UDP var gpuMode = +'0'; //是否启用GPU硬解:1、启用 0、不启用 oWebControl.JS_RequestInterface({ funcName: "startPreview", argument: JSON.stringify({ cameraIndexCode: cameraIndexCode, streamMode: streamMode, transMode: transMode, gpuMode: gpuMode, wndId: -1 }) }).then(function (oData) { console.log(oData.responseMsg.code === 336) console.log(JSON.stringify(oData ? oData.responseMsg : '')); // if(oData.responseMsg.code === 336){ // return // } console.log('预览视频失败'); }); } // 设置窗口控制回调 function setCallbacks() { oWebControl.JS_SetWindowControlCallback({ cbIntegrationCallBack: cbIntegrationCallBack }); } // 页面缩放比例 function getRatio() { let bodyWidth = document.body.clientWidth // console.log(window.screen.width) let bodyHeight = document.body.clientHeight let scaleWidthNum = bodyWidth / 1920 let scaleHeightNum = bodyHeight / 1080 let ratio; if (scaleWidthNum > scaleHeightNum) { ratio = scaleHeightNum } else { ratio = scaleWidthNum } return ratio; } // 初始化 export function InitObjPlugin(appkey, secret, ip, port, type, videoData, layout) { console.log(videoData) a = appkey b = secret c = ip d = port types = type layouts = layout // oWebControl = new WebControl({ szPluginContainer: "playWnd", //指定容器id iServicePortStart: 15900, iServicePortEnd: 15909, szClassId: "23BF3B0A-2C56-4D97-9C03-0CB103AA8F11", cbConnectSuccess: function () { setCallbacks(); oWebControl.JS_StartService("window", { dllPath: "./VideoPluginConnect.dll" //dllPath: "./DllForTest-Win32.dll" }).then(function () { // if (type) { // var a = document.getElementById('videoBoxContainer') // width = a.offsetWidth - 10 // height = a.offsetHeight - 60 // } else { // console.log(document.getElementById('videoOverview').offsetWidth,document.getElementById('videoOverview').offsetHeight) var bottomHeight = 0 // if(window.location.href.indexOf('/project/')!=-1){ // bottomHeight = 60 // } width = document.getElementById('videoOverview').offsetWidth height = document.getElementById('videoOverview').offsetHeight - bottomHeight let ratio = 1 // console.log(JSON.parse(localStorage.getItem('systemInfo')).zoomType) if (enabledProjectV2 != 1) { if (localStorage.getItem('systemInfo') && JSON.parse(localStorage.getItem('systemInfo')).zoomType != 1) { ratio = getRatio() } } console.log(ratio) width = width * ratio height = height * ratio // width = 500 // height = 500 // console.dir(document.getElementById('videoOverview')) console.log(width, height) // } window.$timeId = null; if (window.localStorage.getItem('isIframe')) { if (window.localStorage.getItem('isIframe') == '1') { // width = 796 // height = 672 width = width * 0.66 height = height * 0.98 } console.log(window.localStorage.getItem('isIframe')) } // 0.766667 console.log(12) window.onresize = function () { width = document.getElementById('videoOverview').offsetWidth height = document.getElementById('videoOverview').offsetHeight - bottomHeight let ratio = 1 // if(enabledProjectV2!=1){ // ratio = getRatio() // } width = width * ratio height = height * ratio clearTimeout(window.$timeId); window.$timeId = setTimeout(() => { var a = document.getElementById('videoBoxContainer') || document.querySelector('.videocBox') if (a) { width = a.offsetWidth height = a.offsetHeight - 80 } if (oWebControl != null) { oWebControl.JS_Resize(width, height); // setWndCover(); } }, 10); } oWebControl.JS_CreateWnd("playWnd", width, height, { cbSetDocTitle: function (uuid) { oWebControl._pendBg = false; window.parent.postMessage({ action: 'updateTitle', msg: '子页面通知父页面修改title', info: uuid }, '\*'); // '\*'表示跨域参数,请结合自身业务合理设置 } }).then(function () { console.log("JS_CreateWnd success"); // ; init(videoData) }); }, function () { }); }, cbConnectError: function () { console.log("cbConnectError"); oWebControl = null; console.log("插件未启动,正在尝试启动,请稍候..."); WebControl.JS_WakeUp("VideoWebPlugin://"); initCount++; console.log(initCount) if (initCount < 3) { setTimeout(function () { InitObjPlugin(a, b, c, d, types); }, 3000) } else { console.log("插件启动失败,请检查插件是否安装!"); if (confirm("检测到视频插件未安装,是否下载视频插件?")) { // window.location.href = "http://139.159.136.114:8081/itbgp/file/b092b773-ca5a-479d-b5bc-1ed84d46e762.exe" // window.location.href = "/video/VideoWebPlugin.exe" window.location.href = "http://124.71.178.44:9000/image/VideoWebPlugin.exe" // window.location.href = "https://jk.cscec1b1.com:5138/image/VideoWebPlugin.exe" } // _thiss.$confirm('检测到视频插件未安装,是否下载视频插件?', '提示', { // confirmButtonText: '确定', // cancelButtonText: '取消', // type: 'warning' // }).then(() => { // window.location.href="http://139.217.224.209:8080/itbgp/file/VideoWebPlugin.exe" // }).catch(() => { // _thiss.$message({ // type: 'info', // message: '已取消下载' // }); // }); } }, cbConnectClose: function () { console.log("cbConnectClose"); oWebControl = null; } }); } //初始化 function init(videoData) { console.log(videoData) getPubKey(function () { ////////////////////////////////// 请自行修改以下变量值 //////////////////////////////////// // var appkey = "20880397"; //综合安防管理平台提供的appkey,必填 // var secret = setEncrypt("WhyICfLp0NAalGjRa8Hx"); //综合安防管理平台提供的secret,必填 var appkey = a; //综合安防管理平台提供的appkey,必填 var secret = setEncrypt(b); //综合安防管理平台提供的secret,必填 var ip = c; //综合安防管理平台IP地址,必填 var playMode = 0; //初始播放模式:0-预览,1-回放 var port = parseInt(d); //综合安防管理平台端口,若启用HTTPS协议,默认443 var snapDir = "D:\\SnapDir"; //抓图存储路径 var videoDir = "D:\\VideoDir"; //紧急录像或录像剪辑存储路径 var layout = layouts; //playMode指定模式的布局 // var layout = "2x2"; //playMode指定模式的布局 var enableHTTPS = 1; //是否启用HTTPS协议与综合安防管理平台交互,是为1,否为0 var encryptedFields = 'secret'; //加密字段,默认加密领域为secret var showToolbar = 1; //是否显示工具栏,0-不显示,非0-显示 var showSmart = 1; //是否显示智能信息(如配置移动侦测后画面上的线框),0-不显示,非0-显示 var buttonIDs = "0,16,256,257,258,259,260,512,513,514,515,516,517,768,769"; //自定义工具条按钮 ////////////////////////////////// 请自行修改以上变量值 //////////////////////////////////// oWebControl.JS_RequestInterface({ funcName: "init", argument: JSON.stringify({ appkey: appkey, //API网关提供的appkey secret: secret, //API网关提供的secret ip: ip, //API网关IP地址 playMode: playMode, //播放模式(决定显示预览还是回放界面) port: port, //端口 snapDir: snapDir, //抓图存储路径 videoDir: videoDir, //紧急录像或录像剪辑存储路径 layout: layout, //布局 enableHTTPS: enableHTTPS, //是否启用HTTPS协议 encryptedFields: encryptedFields, //加密字段 showToolbar: showToolbar, //是否显示工具栏 showSmart: showSmart, //是否显示智能信息 buttonIDs: buttonIDs //自定义工具条按钮 }) }).then(function (oData) { console.log(width, height, oWebControl) console.log('COMPANY++++++++++++++',COMPANY) console.log(window.localStorage.getItem('isIframe')) if (COMPANY=='xingxuan') { oWebControl.oDocOffset.top = 94; oWebControl.oDocOffset.left = 280; } oWebControl.JS_Resize(width, height); // console.log('OpenVideo') for (let i = 0; i < videoData.length; i++) { if (i < 24 && videoData.length >= i) { // setTimeout(()=>{ OpenVideo(videoData[i].serialNumber, 0, i + 1) // },1000) } } // oWebControl.JS_Resize(1000, 600); // 初始化后resize一次,规避firefox下首次显示窗口后插件窗口未与DIV窗口重合问题 }); }); } //判断有没有初始化插件 export function isLoadPlugin(devList, layout) { console.log('isLoadPlugin', oWebControl, devList) if (oWebControl) { devList.forEach(element => { setTimeout(() => { OpenVideo(element.serialNumber, 1) }, 500) }); } else { InitObjPlugin( devList[0].appId, devList[0].appSecret, devList[0].account, devList[0].password, false, devList, layout ); } } // 推送消息 function cbIntegrationCallBack(oData) { console.log(JSON.stringify(oData.responseMsg)); } //获取公钥 function getPubKey(callback) { oWebControl.JS_RequestInterface({ funcName: "getRSAPubKey", argument: JSON.stringify({ keyLength: 1024 }) }).then(function (oData) { console.log(oData); if (oData.responseMsg.data) { pubKey = oData.responseMsg.data; callback() } }) } // 滚动条scroll // window.onscroll = function () { // if (oWebControl != null) { // width = document.getElementById('videoOverview').offsetWidth // height = document.getElementById('videoOverview').offsetHeight - 0 // oWebControl.JS_Resize(width, height); // // setWndCover(); // } // } // 监听滚动条 window.addEventListener('scroll', () => { // console.log('滚动条') if(oWebControl != null){ width = document.getElementById('videoOverview').offsetWidth-20 height = document.getElementById('videoOverview').offsetHeight-18 oWebControl.JS_Resize(width, height ); } },true); // 监听窗口 // window.addEventListener('resize', () => { // console.log('窗口') // if(oWebControl != null){ // width = document.getElementById('videoOverview').offsetWidth-38 // height = document.getElementById('videoOverview').offsetHeight-20 // oWebControl.JS_Resize(width, height ); // } // },true); //窗口关闭时销毁插件 window.onunload = function () { if (oWebControl != null) { oWebControl.JS_HideWnd(); // 先让窗口隐藏,规避可能的插件窗口滞后于浏览器消失问题 oWebControl.JS_Disconnect().then(function () { }, function () { }); } } export function resizeFn(val) { if (oWebControl) { width = document.getElementById('videoOverview').offsetWidth height = document.getElementById('videoOverview').offsetHeight - 0 if (val && val == 1) { oWebControl.JS_Resize(width / 2 + 20, height - 215); } else { oWebControl.JS_Resize(width, height); } // setWndCover(); } } // 设置窗口遮挡 function setWndCover() { console.log('setWndCover') var iWidth = document.body.clientWidth; var iHeight = document.body.clientHeight; var oDivRect = document.getElementById('playWnd').getBoundingClientRect(); var iCoverLeft = (oDivRect.left < 0) ? Math.abs(oDivRect.left) : 0; var iCoverTop = (oDivRect.top < 0) ? Math.abs(oDivRect.top) : 0; var iCoverRight = (oDivRect.right - iWidth > 0) ? Math.round(oDivRect.right - iWidth) : 0; var iCoverBottom = (oDivRect.bottom - iHeight > 0) ? Math.round(oDivRect.bottom - iHeight) : 0; iCoverLeft = (iCoverLeft > width) ? width : iCoverLeft; iCoverTop = (iCoverTop > height) ? height : iCoverTop; iCoverRight = (iCoverRight > width) ? width : iCoverRight; iCoverBottom = (iCoverBottom > height) ? height : iCoverBottom; if (iLastCoverLeft != iCoverLeft) { console.log("iCoverLeft: " + iCoverLeft); iLastCoverLeft = iCoverLeft; oWebControl.JS_SetWndCover("left", iCoverLeft); } if (iLastCoverTop != iCoverTop) { console.log("iCoverTop: " + iCoverTop); iLastCoverTop = iCoverTop; oWebControl.JS_SetWndCover("top", iCoverTop); } if (iLastCoverRight != iCoverRight) { console.log("iCoverRight: " + iCoverRight); iLastCoverRight = iCoverRight; oWebControl.JS_SetWndCover("right", iCoverRight); } if (iLastCoverBottom != iCoverBottom) { console.log("iCoverBottom: " + iCoverBottom); iLastCoverBottom = iCoverBottom; oWebControl.JS_SetWndCover("bottom", iCoverBottom); } } //隐藏插件窗口 export function hidePluginWindow() { // console.log(123) // console.log('hidePluginWindow') oWebControl.JS_HideWnd() // oWebControl.JS_RequestInterface({ // funcName: "hideWnd" // }).then(function(data){ // console.log('hidePluginWindow',data) // }) } //显示插件窗口 export function showPluginWindow() { // console.log(112) // console.log('showPluginWindow') oWebControl.JS_ShowWnd() // oWebControl.JS_RequestInterface({ // funcName: "showWnd" // }).then(function(data){ // console.log('showPluginWindow',data) // }) } export function setOffset(l, t) { WebControl.JS_SetDocOffset({ left: l, top: t }) console.log(l, t, "===============================") } export function setWidthAndHeight(width, height) { oWebControl.JS_Resize(width, height); }