From d84bc5cb51114509efdd5697ee00142a738be5de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=9C=E7=AC=99=E6=AD=8C?= <2277317060@qq.com>
Date: Wed, 18 Oct 2023 10:43:30 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9B=91=E6=8E=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/resources/static/board/board.js | 7 +-
.../resources/static/board/monitoring1.css | 4 +
.../resources/static/board/monitoring1.js | 1997 +++++++++++++++++
.../main/resources/static/js/webVideoCtrl1.js | 1 +
.../resources/templates/board/board1.html | 2 +-
.../templates/board/monitoring1.html | 4 +-
6 files changed, 2010 insertions(+), 5 deletions(-)
create mode 100644 haiwei-admin/src/main/resources/static/board/monitoring1.css
create mode 100644 haiwei-admin/src/main/resources/static/board/monitoring1.js
create mode 100644 haiwei-admin/src/main/resources/static/js/webVideoCtrl1.js
diff --git a/haiwei-admin/src/main/resources/static/board/board.js b/haiwei-admin/src/main/resources/static/board/board.js
index c4d1680..572555e 100644
--- a/haiwei-admin/src/main/resources/static/board/board.js
+++ b/haiwei-admin/src/main/resources/static/board/board.js
@@ -1,4 +1,7 @@
$(() => {
+ setTimeout(()=>{
+ $("#centerModal1").show()
+ },1000)
tableAnimation('#chart2')
$.get(ctx + 'broad/home/deviceInfo', {}, (e) => {
@@ -36,8 +39,8 @@ $(() => {
${val.name}
-
${val.data1}: ${val.num1.data || 0}${val.unit1}
-
${val.data2}: ${val.num2.data || 0}${val.unit2}
+
${val.data1}: ${val.num1 || 0}${val.unit1}
+
${val.data2}: ${val.num2 || 0}${val.unit2}
diff --git a/haiwei-admin/src/main/resources/static/board/monitoring1.css b/haiwei-admin/src/main/resources/static/board/monitoring1.css
new file mode 100644
index 0000000..02849e2
--- /dev/null
+++ b/haiwei-admin/src/main/resources/static/board/monitoring1.css
@@ -0,0 +1,4 @@
+.plugin{
+ width: 100%;
+ height: 100%;
+}
diff --git a/haiwei-admin/src/main/resources/static/board/monitoring1.js b/haiwei-admin/src/main/resources/static/board/monitoring1.js
new file mode 100644
index 0000000..0cc4b2c
--- /dev/null
+++ b/haiwei-admin/src/main/resources/static/board/monitoring1.js
@@ -0,0 +1,1997 @@
+// 初始化插件
+
+// 全局保存当前选中窗口
+var g_iWndIndex = 0; //可以不用设置这个变量,有窗口参数的接口中,不用传值,开发包会默认使用当前选择窗口
+var g_oLocalConfig = null; //本地配置
+
+//错误码
+//通用错误
+var ERROR_CODE_UNKNOWN = 1000; //未知错误
+var ERROR_CODE_NETWORKERROR = 1001; //网络错误
+var ERROR_CODE_PARAMERROR = 1002; //缺少插件元素
+
+//登录模块
+var ERROR_CODE_LOGIN_NOLOGIN = 2000; // 未登录
+var ERROR_CODE_LOGIN_REPEATLOGIN = 2001; //设备已登录,重复登录
+var ERROR_CODE_LOGIN_NOSUPPORT = 2002; //当前设备不支持Digest登录
+
+//预览播放
+var ERROR_CODE_PLAY_PLUGININITFAIL = 3000; //插件初始化失败
+var ERROR_CODE_PLAY_NOREPEATPLAY = 3001; //当前窗口已经在预览
+var ERROR_CODE_PLAY_PLAYBACKABNORMAL = 3002; //回放异常
+var ERROR_CODE_PLAY_PLAYBACKSTOP = 3003; //回放停止
+var ERROR_CODE_PLAY_NOFREESPACE = 3004; //录像过程中,硬盘容量不足
+
+//对讲
+var ERROR_CODE_TALK_FAIL = 5000; //语音对讲失败
+
+let isLogin = false
+
+
+var version = "V3.3.0build20230322"
+$(() => {
+
+ // 初始化插件参数及插入插件
+ WebVideoCtrl.I_InitPlugin({
+ bWndFull: true, //是否支持单窗口双击全屏,默认支持 true:支持 false:不支持
+ iWndowType: 1,
+ cbSelWnd: function (xmlDoc) {
+ g_iWndIndex = parseInt($(xmlDoc).find("SelectWnd").eq(0).text(), 10);
+ var szInfo = "当前选择的窗口编号:" + g_iWndIndex;
+ showCBInfo(szInfo);
+ },
+ cbDoubleClickWnd: function (iWndIndex, bFullScreen) {
+ var szInfo = "当前放大的窗口编号:" + iWndIndex;
+ if (!bFullScreen) {
+ szInfo = "当前还原的窗口编号:" + iWndIndex;
+ }
+ showCBInfo(szInfo);
+ },
+ cbEvent: function (iEventType, iParam1, iParam2) {
+ if (2 == iEventType) {// 回放正常结束
+ showCBInfo("窗口" + iParam1 + "回放结束!");
+ } else if (-1 == iEventType) {
+ showCBInfo("设备" + iParam1 + "网络错误!");
+ } else if (3001 == iEventType) {
+ clickStopRecord(g_szRecordType, iParam1);
+ }
+ },
+ cbInitPluginComplete: function () {
+ WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin").then(() => {
+ // 检查插件是否最新
+ WebVideoCtrl.I_CheckPluginVersion().then((bFlag) => {
+ if (bFlag) {
+ alert("检测到新的插件版本,双击开发包目录里的HCWebSDKPlugin.exe升级!");
+ }
+ });
+ }, () => {
+ alert("插件初始化失败,请确认是否已安装插件;如果未安装,请双击开发包目录里的HCWebSDKPlugin.exe安装!");
+ });
+ }
+ });
+
+ // 窗口事件绑定
+ $(window).bind({
+ resize: function () {
+ //WebVideoCtrl.I_Resize($("body").width(), $("body").height());
+ }
+ });
+
+ //初始化日期时间
+ var szCurTime = dateFormat(new Date(), "yyyy-MM-dd");
+ $("#starttime").val(szCurTime + " 00:00:00");
+ $("#endtime").val(szCurTime + " 23:59:59");
+ $("#downloadstarttime").val(szCurTime + " 00:00:00");
+ $("#downloadendtime").val(szCurTime + " 23:59:59");
+
+})
+
+// 显示操作信息
+function showOPInfo(szInfo, status, xmlDoc) {
+ var szTip = "" + dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss") + " " + szInfo;
+ if (typeof status != "undefined" && status != 200) {
+ var szStatusString = $(xmlDoc).find("statusString").eq(0).text();
+ var szSubStatusCode = $(xmlDoc).find("subStatusCode").eq(0).text();
+ if ("" === szSubStatusCode) {
+ if ("" === szSubStatusCode && "" === szStatusString) {
+ szTip += "(" + status + ")";
+ } else {
+ szTip += "(" + status + ", " + szStatusString + ")";
+ }
+ } else {
+ szTip += "(" + status + ", " + szSubStatusCode + ")";
+ }
+ }
+ szTip += "
";
+
+ $("#opinfo").html(szTip + $("#opinfo").html());
+}
+
+// 显示回调信息
+function showCBInfo(szInfo) {
+ szInfo = "" + dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss") + " " + szInfo + "
";
+ $("#cbinfo").html(szInfo + $("#cbinfo").html());
+}
+
+// 格式化时间
+function dateFormat(oDate, fmt) {
+ var o = {
+ "M+": oDate.getMonth() + 1, //月份
+ "d+": oDate.getDate(), //日
+ "h+": oDate.getHours(), //小时
+ "m+": oDate.getMinutes(), //分
+ "s+": oDate.getSeconds(), //秒
+ "q+": Math.floor((oDate.getMonth() + 3) / 3), //季度
+ "S": oDate.getMilliseconds()//毫秒
+ };
+ if (/(y+)/.test(fmt)) {
+ fmt = fmt.replace(RegExp.$1, (oDate.getFullYear() + "").substr(4 - RegExp.$1.length));
+ }
+ for (var k in o) {
+ if (new RegExp("(" + k + ")").test(fmt)) {
+ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
+ }
+ }
+ return fmt;
+}
+
+// 获取窗口尺寸
+function getWindowSize() {
+ var nWidth = $(window).width(),
+ nHeight = $(window).height()
+
+ return {width: nWidth, height: nHeight};
+}
+
+// 打开选择框 0:文件夹 1:文件
+function clickOpenFileDlg(id, iType) {
+ WebVideoCtrl.I_OpenFileDlg(iType).then(function (szDirPath) {
+ if (szDirPath != -1 && szDirPath != "" && szDirPath != null) {
+ $("#" + id).val(szDirPath);
+ }
+ }, function () {
+ console.log("打开文件路径失败");
+ });
+}
+
+// 获取本地参数
+function clickGetLocalCfg() {
+ WebVideoCtrl.I_GetLocalCfg().then((oLocalConfig) => {
+ g_oLocalConfig = oLocalConfig;
+ $("#netsPreach").val(oLocalConfig.buffNumberType);
+ $("#wndSize").val(oLocalConfig.playWndType);
+ $("#rulesInfo").val(oLocalConfig.ivsMode);
+ $("#captureFileFormat").val(oLocalConfig.captureFileFormat);
+ $("#packSize").val(oLocalConfig.packgeSize);
+ $("#recordPath").val(oLocalConfig.recordPath);
+ $("#downloadPath").val(oLocalConfig.downloadPath);
+ $("#previewPicPath").val(oLocalConfig.capturePath);
+ $("#playbackPicPath").val(oLocalConfig.playbackPicPath);
+ $("#devicePicPath").val(oLocalConfig.deviceCapturePath);
+ $("#playbackFilePath").val(oLocalConfig.playbackFilePath);
+ $("#protocolType").val(oLocalConfig.protocolType);
+ $("#secretKey").val("\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F");
+ console.log("本地配置获取成功!");
+ }, (oError) => {
+ var szInfo = "本地配置获取失败!";
+ console.log(szInfo, oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 设置本地参数
+async function clickSetLocalCfg() {
+ g_oLocalConfig.buffNumberType = $("#netsPreach").val();
+ g_oLocalConfig.playWndType = $("#wndSize").val();
+ g_oLocalConfig.ivsMode = $("#rulesInfo").val();
+ g_oLocalConfig.captureFileFormat = $("#captureFileFormat").val();
+ g_oLocalConfig.packgeSize = $("#packSize").val();
+ g_oLocalConfig.recordPath = $("#recordPath").val();
+ g_oLocalConfig.downloadPath = $("#downloadPath").val();
+ g_oLocalConfig.capturePath = $("#previewPicPath").val();
+ g_oLocalConfig.playbackPicPath = $("#playbackPicPath").val();
+ g_oLocalConfig.deviceCapturePath = $("#devicePicPath").val();
+ g_oLocalConfig.playbackFilePath = $("#playbackFilePath").val();
+ g_oLocalConfig.protocolType = $("#protocolType").val();
+ if ("\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F" !== $("#secretKey").val()) {
+ g_oLocalConfig.secretKey = await WebVideoCtrl.I_GetEncryptString($("#secretKey").val());
+ }
+ WebVideoCtrl.I_SetLocalCfg(g_oLocalConfig).then(() => {
+ console.log("本地配置设置成功!");
+ }, (oError) => {
+ var szInfo = "本地配置设置失败!";
+ console.log(szInfo, oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 窗口分割数
+function changeWndNum(iType) {
+ iType = parseInt(iType, 10);
+ WebVideoCtrl.I_ChangeWndNum(iType).then(() => {
+ console.log("窗口分割成功!");
+ }, (oError) => {
+ var szInfo = "窗口分割失败!";
+ console.log(szInfo, oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 登录
+function clickLogin() {
+ var szIP = '192.168.0.64',
+ szPort = '80',
+ szUsername = 'admin',
+ szPassword = 'dlts84288437';
+
+ if ("" == szIP || "" == szPort) {
+ return;
+ }
+ if (isLogin) {
+ setTimeout(() => {
+ clickStartRealPlay()
+ }, 2000)
+ return
+ }
+
+ var szDeviceIdentify = szIP + "_" + szPort;
+
+ WebVideoCtrl.I_Login(szIP, 1, szPort, szUsername, szPassword, {
+ timeout: 3000,
+ success: function (xmlDoc) {
+ console.log(szDeviceIdentify + " 登录成功!");
+ isLogin = true
+ $("#ip").prepend("");
+ setTimeout(function () {
+ $("#ip").val(szDeviceIdentify);
+ setTimeout(function () {
+ getChannelInfo();
+ }, 1000);
+ getDevicePort();
+ setTimeout(() => {
+ clickStartRealPlay()
+ }, 2000)
+ }, 10);
+ },
+ error: function (oError) {
+ if (ERROR_CODE_LOGIN_REPEATLOGIN === status) {
+ console.log(szDeviceIdentify + " 已登录过!");
+ } else {
+ console.log(szDeviceIdentify + " 登录失败!", oError.errorCode, oError.errorMsg);
+ }
+ }
+ });
+}
+
+// 退出
+function clickLogout() {
+ var szDeviceIdentify = $("#ip").val();
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ WebVideoCtrl.I_Logout(szDeviceIdentify).then(() => {
+ console.log(szDeviceIdentify + " " + "退出成功!");
+ }, () => {
+ console.log(szDeviceIdentify + " " + "退出失败!");
+ });
+}
+
+// 获取设备信息
+function clickGetDeviceInfo() {
+ var szDeviceIdentify = $("#ip").val();
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ WebVideoCtrl.I_GetDeviceInfo(szDeviceIdentify, {
+ success: function (xmlDoc) {
+ var arrStr = [];
+ arrStr.push("设备名称:" + $(xmlDoc).find("deviceName").eq(0).text() + "\r\n");
+ arrStr.push("设备ID:" + $(xmlDoc).find("deviceID").eq(0).text() + "\r\n");
+ arrStr.push("型号:" + $(xmlDoc).find("model").eq(0).text() + "\r\n");
+ arrStr.push("设备序列号:" + $(xmlDoc).find("serialNumber").eq(0).text() + "\r\n");
+ arrStr.push("MAC地址:" + $(xmlDoc).find("macAddress").eq(0).text() + "\r\n");
+ arrStr.push("主控版本:" + $(xmlDoc).find("firmwareVersion").eq(0).text() + " " + $(xmlDoc).find("firmwareReleasedDate").eq(0).text() + "\r\n");
+ arrStr.push("编码版本:" + $(xmlDoc).find("encoderVersion").eq(0).text() + " " + $(xmlDoc).find("encoderReleasedDate").eq(0).text() + "\r\n");
+
+ console.log(szDeviceIdentify + " 获取设备信息成功!");
+ alert(arrStr.join(""));
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 获取设备信息失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+}
+
+// 获取通道
+function getChannelInfo() {
+ var szDeviceIdentify = $("#ip").val(),
+ oSel = $("#channels").empty();
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ // 模拟通道
+ WebVideoCtrl.I_GetAnalogChannelInfo(szDeviceIdentify, {
+ success: function (xmlDoc) {
+ var oChannels = $(xmlDoc).find("VideoInputChannel");
+
+ $.each(oChannels, function (i) {
+ var id = $(this).find("id").eq(0).text(),
+ name = $(this).find("name").eq(0).text();
+ if ("" == name) {
+ name = "Camera " + (i < 9 ? "0" + (i + 1) : (i + 1));
+ }
+ oSel.append("");
+ });
+ console.log(szDeviceIdentify + " 获取模拟通道成功!");
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 获取模拟通道失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ // 数字通道
+ WebVideoCtrl.I_GetDigitalChannelInfo(szDeviceIdentify, {
+ success: function (xmlDoc) {
+ var oChannels = $(xmlDoc).find("InputProxyChannelStatus");
+
+ $.each(oChannels, function (i) {
+ var id = $(this).find("id").eq(0).text(),
+ name = $(this).find("name").eq(0).text(),
+ online = $(this).find("online").eq(0).text();
+ if ("false" == online) {// 过滤禁用的数字通道
+ return true;
+ }
+ if ("" == name) {
+ name = "IPCamera " + (i < 9 ? "0" + (i + 1) : (i + 1));
+ }
+ oSel.append("");
+ });
+ console.log(szDeviceIdentify + " 获取数字通道成功!");
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 获取数字通道失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ // 零通道
+ WebVideoCtrl.I_GetZeroChannelInfo(szDeviceIdentify, {
+ success: function (xmlDoc) {
+ var oChannels = $(xmlDoc).find("ZeroVideoChannel");
+
+ $.each(oChannels, function (i) {
+ var id = $(this).find("id").eq(0).text(),
+ name = $(this).find("name").eq(0).text();
+ if ("" == name) {
+ name = "Zero Channel " + (i < 9 ? "0" + (i + 1) : (i + 1));
+ }
+ if ("true" == $(this).find("enabled").eq(0).text()) {// 过滤禁用的零通道
+ oSel.append("");
+ }
+ });
+ console.log(szDeviceIdentify + " 获取零通道成功!");
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 获取零通道失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+}
+
+// 获取端口
+function getDevicePort() {
+ var szDeviceIdentify = $("#ip").val();
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ WebVideoCtrl.I_GetDevicePort(szDeviceIdentify).then((oPort) => {
+ $("#deviceport").val(oPort.iDevicePort);
+ $("#rtspport").val(oPort.iRtspPort);
+
+ console.log(szDeviceIdentify + " 获取端口成功!");
+ }, (oError) => {
+ var szInfo = "获取端口失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 获取数字通道
+async function clickGetDigitalChannelInfo() {
+ var szDeviceIdentify = $("#ip").val(),
+ iAnalogChannelNum = 0;
+
+ $("#digitalchannellist").empty();
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ // 模拟通道
+ try {
+ var oAnalogChannelInfo = await WebVideoCtrl.I_GetAnalogChannelInfo(szDeviceIdentify, {});
+ iAnalogChannelNum = $(oAnalogChannelInfo).find("VideoInputChannel").length;
+ } finally {
+ // 数字通道
+ WebVideoCtrl.I_GetDigitalChannelInfo(szDeviceIdentify, {
+ success: function (xmlDoc) {
+ var oChannels = $(xmlDoc).find("InputProxyChannelStatus");
+
+ $.each(oChannels, function () {
+ var id = parseInt($(this).find("id").eq(0).text(), 10),
+ ipAddress = $(this).find("ipAddress").eq(0).text(),
+ srcInputPort = $(this).find("srcInputPort").eq(0).text(),
+ managePortNo = $(this).find("managePortNo").eq(0).text(),
+ online = $(this).find("online").eq(0).text(),
+ proxyProtocol = $(this).find("proxyProtocol").eq(0).text();
+
+ var objTr = $("#digitalchannellist").get(0).insertRow(-1);
+ var objTd = objTr.insertCell(0);
+ objTd.innerHTML = (id - iAnalogChannelNum) < 10 ? "D0" + (id - iAnalogChannelNum) : "D" + (id - iAnalogChannelNum);
+ objTd = objTr.insertCell(1);
+ objTd.width = "25%";
+ objTd.innerHTML = ipAddress;
+ objTd = objTr.insertCell(2);
+ objTd.width = "15%";
+ objTd.innerHTML = srcInputPort;
+ objTd = objTr.insertCell(3);
+ objTd.width = "20%";
+ objTd.innerHTML = managePortNo;
+ objTd = objTr.insertCell(4);
+ objTd.width = "15%";
+ objTd.innerHTML = "true" == online ? "在线" : "离线";
+ objTd = objTr.insertCell(5);
+ objTd.width = "25%";
+ objTd.innerHTML = proxyProtocol;
+ });
+ console.log(szDeviceIdentify + " 获取数字通道成功!");
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 没有数字通道!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 开始预览
+function clickStartRealPlay(iStreamType) {
+
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szDeviceIdentify = '192.168.0.64_80',
+ iRtspPort = 554,
+ iChannelID = 1,
+ bZeroChannel = false,
+ szInfo = "";
+
+ if ("undefined" === typeof iStreamType) {
+ iStreamType = parseInt($("#streamtype").val(), 10);
+ }
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+ var startRealPlay = function () {
+ WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, {
+ iStreamType: 1,
+ iChannelID: iChannelID,
+ bZeroChannel: bZeroChannel,
+ success: function () {
+ szInfo = "开始预览成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 开始预览失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ };
+
+ if (oWndInfo != null) {// 已经在播放了,先停止
+ WebVideoCtrl.I_Stop({
+ success: function () {
+ startRealPlay();
+ }
+ });
+ } else {
+ startRealPlay();
+ }
+}
+
+function setTextOverlay() {
+ var szDeviceIdentify = $("#ip").val();
+ var szInfo = "";
+ var that = this;
+ var iChannelID = parseInt($("#channels").val(), 10);
+ var szUrl = "ISAPI/System/Video/inputs/channels/" + iChannelID + "/overlays";
+ WebVideoCtrl.I_GetTextOverlay(szUrl, szDeviceIdentify, {
+ success: function (data) {
+ $(data).find("TextOverlay").eq(0).find("displayText").eq(0).text("我tet");
+ $(data).find("TextOverlay").eq(0).find("positionX").eq(0).text("20");
+ $(data).find("TextOverlay").eq(0).find("positionY").eq(0).text("30");
+ var xmldoc = toXMLStr(data);
+ var newOptions = {
+ type: "PUT",
+ data: xmldoc,
+ success: function () {
+ szInfo = "绘制osd信息成功";
+ console.log(szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 设置osd信息失败!", oError.errorCode, oError.errorMsg);
+ }
+ };
+
+ WebVideoCtrl.I_SendHTTPRequest(szDeviceIdentify, szUrl, newOptions);
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 设置osd信息失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+}
+
+// 停止预览
+function clickStopRealPlay() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_Stop({
+ success: function () {
+ szInfo = "停止预览成功!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 停止预览失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 打开声音
+function clickOpenSound() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ var allWndInfo = WebVideoCtrl.I_GetWindowStatus();
+ // 循环遍历所有窗口,如果有窗口打开了声音,先关闭
+ for (var i = 0, iLen = allWndInfo.length; i < iLen; i++) {
+ oWndInfo = allWndInfo[i];
+ if (oWndInfo.bSound) {
+ WebVideoCtrl.I_CloseSound(oWndInfo.iIndex);
+ break;
+ }
+ }
+
+ WebVideoCtrl.I_OpenSound().then(() => {
+ console.log(oWndInfo.szDeviceIdentify + " " + "打开声音成功!");
+ }, (oError) => {
+ var szInfo = " 打开声音失败!";
+ console.log(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+ }
+}
+
+// 关闭声音
+function clickCloseSound() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_CloseSound().then(() => {
+ console.log(oWndInfo.szDeviceIdentify + " " + "关闭声音成功!");
+ }, (oError) => {
+ var szInfo = " 关闭声音失败!";
+ console.log(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+ }
+}
+
+// 设置音量
+function clickSetVolume() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ iVolume = parseInt($("#volume").val(), 10),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_SetVolume(iVolume).then(() => {
+ console.log(oWndInfo.szDeviceIdentify + " " + "设置音量成功");
+ }, (oError) => {
+ var szInfo = " 设置音量失败!";
+ console.log(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+ }
+}
+
+// 抓图
+async function clickCapturePic(szType) {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ var oLocalConfig = await WebVideoCtrl.I_GetLocalCfg();
+ var szCaptureFileFormat = "0";
+ if (oLocalConfig) {
+ szCaptureFileFormat = oLocalConfig.captureFileFormat;
+ }
+
+ var szChannelID = $("#channels").val();
+ var szPicName = oWndInfo.szDeviceIdentify + "_" + szChannelID + "_" + new Date().getTime();
+ //如果是回放抓图,需要增加如下前缀:"playback_"
+ if ("playback" === szType) {
+ szPicName = "playback_" + oWndInfo.szDeviceIdentify + "_" + szChannelID + "_" + new Date().getTime();
+ }
+
+ szPicName += ("0" === szCaptureFileFormat) ? ".jpg" : ".bmp";
+
+ WebVideoCtrl.I_CapturePic(szPicName, {
+ bDateDir: true //是否生成日期文件
+ }).then(function () {
+ szInfo = "抓图成功!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ }, function (oError) {
+ szInfo = " 抓图失败!";
+ console.log(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+ }
+}
+
+// 抓图
+function clickCapturePicData() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_CapturePicData().then(function (data) {
+ console.log(data);
+ szInfo = "抓图上传成功!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ }, function () {
+ szInfo = "抓图失败!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ });
+ }
+}
+
+// 开始录像
+var g_szRecordType = "";
+
+function clickStartRecord(szType) {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ g_szRecordType = szType;
+
+ if (oWndInfo != null) {
+ var szChannelID = $("#channels").val(),
+ szFileName = oWndInfo.szDeviceIdentify + "_" + szChannelID + "_" + new Date().getTime();
+
+ WebVideoCtrl.I_StartRecord(szFileName, {
+ bDateDir: true, //是否生成日期文件
+ success: function () {
+ if ('realplay' === szType) {
+ szInfo = "开始录像成功!";
+ } else if ('playback' === szType) {
+ szInfo = "开始剪辑成功!";
+ }
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ if ('realplay' === szType) {
+ szInfo = " 开始录像失败!";
+ } else if ('playback' === szType) {
+ szInfo = " 开始剪辑失败!";
+ }
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 停止录像
+function clickStopRecord(szType, iWndIndex) {
+ if ("undefined" === typeof iWndIndex) {
+ iWndIndex = g_iWndIndex;
+ }
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_StopRecord({
+ success: function () {
+ if ('realplay' === szType) {
+ szInfo = "停止录像成功!";
+ } else if ('playback' === szType) {
+ szInfo = "停止剪辑成功!";
+ }
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ if ('realplay' === szType) {
+ szInfo = "停止录像失败!";
+ } else if ('playback' === szType) {
+ szInfo = "停止剪辑失败!";
+ }
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 获取对讲通道
+function clickGetAudioInfo() {
+ var szDeviceIdentify = $("#ip").val();
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ WebVideoCtrl.I_GetAudioInfo(szDeviceIdentify, {
+ success: function (xmlDoc) {
+ var oAudioChannels = $(xmlDoc).find("TwoWayAudioChannel"),
+ oSel = $("#audiochannels").empty();
+ $.each(oAudioChannels, function () {
+ var id = $(this).find("id").eq(0).text();
+
+ oSel.append("");
+ });
+ console.log(szDeviceIdentify + " 获取对讲通道成功!");
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 获取对讲通道失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+}
+
+// 开始对讲
+function clickStartVoiceTalk() {
+ var szDeviceIdentify = $("#ip").val(),
+ iAudioChannel = parseInt($("#audiochannels").val(), 10),
+ szInfo = "";
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ if (isNaN(iAudioChannel)) {
+ alert("请选择对讲通道!");
+ return;
+ }
+
+ WebVideoCtrl.I_StartVoiceTalk(szDeviceIdentify, iAudioChannel).then(() => {
+ szInfo = "开始对讲成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ }, (oError) => {
+ var szInfo = " 开始对讲失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 停止对讲
+function clickStopVoiceTalk() {
+ var szDeviceIdentify = $("#ip").val();
+ WebVideoCtrl.I_StopVoiceTalk().then(() => {
+ szInfo = "停止对讲成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ }, (oError) => {
+ var szInfo = " 停止对讲失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 启用电子放大
+function clickEnableEZoom() {
+ var szDeviceIdentify = $("#ip").val();
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_EnableEZoom().then(() => {
+ szInfo = "启用电子放大成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ }, (oError) => {
+ szInfo = "启用电子放大失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+
+ });
+ }
+}
+
+// 禁用电子放大
+function clickDisableEZoom() {
+ var szDeviceIdentify = $("#ip").val();
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_DisableEZoom().then(() => {
+ szInfo = "禁用电子放大成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ }, (oError) => {
+ szInfo = "禁用电子放大失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+ }
+}
+
+// 启用3D放大
+function clickEnable3DZoom() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+ var szDeviceIdentify = $("#ip").val();
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_Enable3DZoom().then(() => {
+ szInfo = "启用3D放大成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ }, (oError) => {
+ szInfo = "启用3D放大失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+ }
+}
+
+// 禁用3D放大
+function clickDisable3DZoom() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+ var szDeviceIdentify = $("#ip").val();
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_Disable3DZoom().then(() => {
+ szInfo = "禁用3D放大成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ }, (oError) => {
+ szInfo = "禁用3D放大失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+ }
+}
+
+// 全屏
+function clickFullScreen() {
+ WebVideoCtrl.I_FullScreen(true).then(() => {
+ console.log("全屏成功");
+ }, (oError) => {
+ console.log("全屏失败!", oError.errorCode, oError.errorMsg);
+ });
+}
+
+// PTZ控制 9为自动,1,2,3,4,5,6,7,8为方向PTZ
+var g_bPTZAuto = false;
+
+function mouseDownPTZControl(iPTZIndex) {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false,
+ iPTZSpeed = $("#ptzspeed").val();
+
+ if (bZeroChannel) {// 零通道不支持云台
+ return;
+ }
+
+ if (oWndInfo != null) {
+ if (9 == iPTZIndex && g_bPTZAuto) {
+ iPTZSpeed = 0;// 自动开启后,速度置为0可以关闭自动
+ } else {
+ g_bPTZAuto = false;// 点击其他方向,自动肯定会被关闭
+ }
+
+ WebVideoCtrl.I_PTZControl(iPTZIndex, false, {
+ iPTZSpeed: iPTZSpeed,
+ success: function (xmlDoc) {
+ if (9 == iPTZIndex && g_bPTZAuto) {
+ console.log(oWndInfo.szDeviceIdentify + " 停止云台成功!");
+ } else {
+ console.log(oWndInfo.szDeviceIdentify + " 开启云台成功!");
+ }
+ if (9 == iPTZIndex) {
+ g_bPTZAuto = !g_bPTZAuto;
+ }
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 开启云台失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 方向PTZ停止
+function mouseUpPTZControl() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(1, true, {
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 停止云台成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 停止云台失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 设置预置点
+function clickSetPreset() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ iPresetID = parseInt($("#preset").val(), 10);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_SetPreset(iPresetID, {
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 设置预置点成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 设置预置点失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 调用预置点
+function clickGoPreset() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ iPresetID = parseInt($("#preset").val(), 10);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_GoPreset(iPresetID, {
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 调用预置点成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 调用预置点失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 搜索录像
+var g_iSearchTimes = 0;
+
+function clickRecordSearch(iType) {
+ var szDeviceIdentify = $("#ip").val(),
+ iChannelID = parseInt($("#channels").val(), 10),
+ bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false,
+ iStreamType = parseInt($("#record_streamtype").val(), 10),
+ szStartTime = $("#starttime").val(),
+ szEndTime = $("#endtime").val();
+ if (Date.parse(szEndTime.replace(/-/g, "/")) - Date.parse(szStartTime.replace(/-/g, "/")) < 0) {
+ alert("开始时间大于结束时间");
+ return;
+ }
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ if (bZeroChannel) {// 零通道不支持录像搜索
+ return;
+ }
+
+ if (0 == iType) {// 首次搜索
+ $("#searchlist").empty();
+ g_iSearchTimes = 0;
+ }
+
+ //如果是前端设备,需要将搜索时间转换为UTC时间
+ WebVideoCtrl.I_RecordSearch(szDeviceIdentify, iChannelID, szStartTime, szEndTime, {
+ iStreamType: iStreamType,
+ iSearchPos: g_iSearchTimes,
+ success: function (xmlDoc) {
+ if ("MORE" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) {
+ for (var i = 0, nLen = $(xmlDoc).find("searchMatchItem").length; i < nLen; i++) {
+ var szPlaybackURI = $(xmlDoc).find("playbackURI").eq(i).text();
+ if (szPlaybackURI.indexOf("name=") < 0) {
+ break;
+ }
+ var szStartTime = $(xmlDoc).find("startTime").eq(i).text();
+ var szEndTime = $(xmlDoc).find("endTime").eq(i).text();
+ var szFileName = szPlaybackURI.substring(szPlaybackURI.indexOf("name=") + 5, szPlaybackURI.indexOf("&size="));
+
+ var objTr = $("#searchlist").get(0).insertRow(-1);
+ var objTd = objTr.insertCell(0);
+ objTd.id = "downloadTd" + i;
+ objTd.innerHTML = g_iSearchTimes + 1;
+ objTd = objTr.insertCell(1);
+ objTd.width = "30%";
+ objTd.innerHTML = szFileName;
+ objTd = objTr.insertCell(2);
+ objTd.width = "30%";
+ objTd.innerHTML = (szStartTime.replace("T", " ")).replace("Z", "");
+ objTd = objTr.insertCell(3);
+ objTd.width = "30%";
+ objTd.innerHTML = (szEndTime.replace("T", " ")).replace("Z", "");
+ objTd = objTr.insertCell(4);
+ objTd.width = "10%";
+ objTd.innerHTML = "下载";
+ $("#downloadTd" + g_iSearchTimes).data("fileName", szFileName);
+ $("#downloadTd" + g_iSearchTimes).data("playbackURI", szPlaybackURI);
+ ++g_iSearchTimes;
+ }
+
+ clickRecordSearch(1);// 继续搜索
+ } else if ("OK" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) {
+ var iLength = $(xmlDoc).find("searchMatchItem").length;
+ for (var i = 0; i < iLength; i++) {
+ var szPlaybackURI = $(xmlDoc).find("playbackURI").eq(i).text();
+ if (szPlaybackURI.indexOf("name=") < 0) {
+ break;
+ }
+ var szStartTime = $(xmlDoc).find("startTime").eq(i).text();
+ var szEndTime = $(xmlDoc).find("endTime").eq(i).text();
+ var szFileName = szPlaybackURI.substring(szPlaybackURI.indexOf("name=") + 5, szPlaybackURI.indexOf("&size="));
+
+ var objTr = $("#searchlist").get(0).insertRow(-1);
+ var objTd = objTr.insertCell(0);
+ objTd.id = "downloadTd" + i;
+ objTd.innerHTML = g_iSearchTimes + 1;
+ objTd = objTr.insertCell(1);
+ objTd.width = "30%";
+ objTd.innerHTML = szFileName;
+ objTd = objTr.insertCell(2);
+ objTd.width = "30%";
+ objTd.innerHTML = (szStartTime.replace("T", " ")).replace("Z", "");
+ objTd = objTr.insertCell(3);
+ objTd.width = "30%";
+ objTd.innerHTML = (szEndTime.replace("T", " ")).replace("Z", "");
+ objTd = objTr.insertCell(4);
+ objTd.width = "10%";
+ objTd.innerHTML = "下载";
+ $("#downloadTd" + g_iSearchTimes).data("fileName", szFileName);
+ $("#downloadTd" + g_iSearchTimes).data("playbackURI", szPlaybackURI);
+ ++g_iSearchTimes;
+ }
+ console.log(szDeviceIdentify + " 搜索录像文件成功!");
+ } else if ("NO MATCHES" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) {
+ setTimeout(function () {
+ g_iSearchTimes = 0;
+ console.log(szDeviceIdentify + " 没有录像文件!");
+ }, 50);
+ }
+ },
+ error: function (oError) {
+ g_iSearchTimes = 0;
+ console.log(szDeviceIdentify + " 搜索录像文件失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+}
+
+// 开始回放
+function clickStartPlayback() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szDeviceIdentify = $("#ip").val(),
+ iRtspPort = parseInt($("#rtspport").val(), 10),
+ iStreamType = parseInt($("#record_streamtype").val(), 10),
+ bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false,
+ iChannelID = parseInt($("#channels").val(), 10),
+ szStartTime = $("#starttime").val(),
+ szEndTime = $("#endtime").val(),
+ szInfo = "",
+ bChecked = $("#transstream").prop("checked"),
+ iRet = -1;
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ if (bZeroChannel) {// 零通道不支持回放
+ return;
+ }
+
+ var startPlayback = function () {
+ if (bChecked) {// 启用转码回放
+ var oTransCodeParam = {
+ TransFrameRate: "14",// 0:全帧率,5:1,6:2,7:4,8:6,9:8,10:10,11:12,12:16,14:15,15:18,13:20,16:22
+ TransResolution: "1",// 255:Auto,3:4CIF,2:QCIF,1:CIF
+ TransBitrate: "19"// 2:32K,3:48K,4:64K,5:80K,6:96K,7:128K,8:160K,9:192K,10:224K,11:256K,12:320K,13:384K,14:448K,15:512K,16:640K,17:768K,18:896K,19:1024K,20:1280K,21:1536K,22:1792K,23:2048K,24:3072K,25:4096K,26:8192K
+ };
+ WebVideoCtrl.I_StartPlayback(szDeviceIdentify, {
+ iRtspPort: iRtspPort,
+ iStreamType: iStreamType,
+ iChannelID: iChannelID,
+ szStartTime: szStartTime,
+ szEndTime: szEndTime,
+ oTransCodeParam: oTransCodeParam,
+ success: function () {
+ szInfo = "开始回放成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ szInfo = "开始回放失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ } else {
+ WebVideoCtrl.I_StartPlayback(szDeviceIdentify, {
+ iRtspPort: iRtspPort,
+ iStreamType: iStreamType,
+ iChannelID: iChannelID,
+ szStartTime: szStartTime,
+ szEndTime: szEndTime,
+ success: function () {
+ szInfo = "开始回放成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ szInfo = "开始回放失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+ };
+
+ if (oWndInfo != null) {// 已经在播放了,先停止
+ WebVideoCtrl.I_Stop({
+ success: function () {
+ startPlayback();
+ }
+ });
+ } else {
+ startPlayback();
+ }
+}
+
+// 停止回放
+function clickStopPlayback() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_Stop({
+ success: function () {
+ szInfo = "停止回放成功!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ szInfo = "停止回放失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 开始倒放
+function clickReversePlayback() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szDeviceIdentify = $("#ip").val(),
+ iRtspPort = parseInt($("#rtspport").val(), 10),
+ iStreamType = parseInt($("#record_streamtype").val(), 10),
+ bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false,
+ iChannelID = parseInt($("#channels").val(), 10),
+ szStartTime = $("#starttime").val(),
+ szEndTime = $("#endtime").val(),
+ szInfo = "";
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ if (bZeroChannel) {// 零通道不支持倒放
+ return;
+ }
+
+ var reversePlayback = function () {
+ WebVideoCtrl.I_ReversePlayback(szDeviceIdentify, {
+ iRtspPort: iRtspPort,
+ iStreamType: iStreamType,
+ iChannelID: iChannelID,
+ szStartTime: szStartTime,
+ szEndTime: szEndTime
+ }).then(() => {
+ szInfo = "开始倒放成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ }, (oError) => {
+ szInfo = "开始倒放失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+ };
+
+ if (oWndInfo != null) {// 已经在播放了,先停止
+ WebVideoCtrl.I_Stop({
+ success: function () {
+ reversePlayback();
+ }
+ });
+ } else {
+ reversePlayback();
+ }
+}
+
+// 单帧
+function clickFrame() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_Frame({
+ success: function () {
+ szInfo = "单帧播放成功!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ szInfo = "单帧播放失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 暂停
+function clickPause() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_Pause({
+ success: function () {
+ szInfo = "暂停成功!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ szInfo = "暂停失败!";
+ console.log(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 恢复
+function clickResume() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_Resume({
+ success: function () {
+ szInfo = "恢复成功!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ szInfo = "恢复失败!";
+ console.log(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 慢放
+function clickPlaySlow() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PlaySlow({
+ success: function () {
+ szInfo = "慢放成功!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ szInfo = "慢放失败!";
+ console.log(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 快放
+function clickPlayFast() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
+ szInfo = "";
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PlayFast({
+ success: function () {
+ szInfo = "快放成功!";
+ console.log(oWndInfo.szDeviceIdentify + " " + szInfo);
+ },
+ error: function (oError) {
+ szInfo = "快放失败!";
+ console.log(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// OSD时间
+function clickGetOSDTime() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_GetOSDTime({
+ success: function (szOSDTime) {
+ $("#osdtime").val(szOSDTime);
+ console.log(oWndInfo.szDeviceIdentify + " 获取OSD时间成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 获取OSD时间失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 下载录像
+var g_iDownloadID = -1;
+var g_tDownloadProcess = 0;
+
+function clickStartDownloadRecord(i) {
+ var szDeviceIdentify = $("#ip").val(),
+ szChannelID = $("#channels").val(),
+ szFileName = $("#downloadTd" + i).data("fileName"),
+ szPlaybackURI = $("#downloadTd" + i).data("playbackURI");
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ WebVideoCtrl.I_StartDownloadRecord(szDeviceIdentify, szPlaybackURI, szFileName, {
+ bDateDir: true //是否生成日期文件
+ }).then((iDownloadID) => {
+ g_iDownloadID = iDownloadID;
+ $("").appendTo("body");
+ g_tDownloadProcess = setInterval("downProcess(" + i + ")", 1000);
+ }, (oError) => {
+ WebVideoCtrl.I_GetLastError().then((iErrorValue) => {
+ if (34 == iErrorValue) {
+ console.log(szDeviceIdentify + " 已下载!");
+ } else if (33 == iErrorValue) {
+ console.log(szDeviceIdentify + " 空间不足!");
+ } else {
+ console.log(szDeviceIdentify + " 下载失败!");
+ }
+ });
+ });
+}
+
+function clickStartDownloadRecordByTime() {
+ var szDeviceIdentify = $("#ip").val(),
+ szChannelID = $("#channels").val(),
+ szFileName = $("#downloadTd0").data("fileName"),
+ szPlaybackURI = $("#downloadTd0").data("playbackURI"),
+ szStartTime = $("#downloadstarttime").val(),
+ szEndTime = $("#downloadendtime").val();
+ if (null == szDeviceIdentify) {
+ return;
+ }
+ if (Date.parse(szEndTime.replace(/-/g, "/")) - Date.parse(szStartTime.replace(/-/g, "/")) < 0) {
+ alert("开始时间大于结束时间");
+ return;
+ }
+ WebVideoCtrl.I_StartDownloadRecordByTime(szDeviceIdentify, szPlaybackURI, szFileName, szStartTime, szEndTime, {
+ bDateDir: true //是否生成日期文件
+ }).then((iDownloadID) => {
+ g_iDownloadID = iDownloadID;
+ $("").appendTo("body");
+ g_tDownloadProcess = setInterval("downProcess(" + 0 + ")", 1000);
+ }, (oError) => {
+ console.log(szDeviceIdentify + " 下载失败!");
+ });
+}
+
+function clickStopDownload() {
+ WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID).then(() => {
+ console.log("停止下载成功!");
+ clearInterval(g_tDownloadProcess);
+ g_tDownloadProcess = 0;
+ g_iDownloadID = -1;
+ $("#downProcess").remove();
+ }, (oError) => {
+ console.log(szDeviceIdentify + " 停止下载失败!", oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 下载进度
+async function downProcess() {
+ var iStatus = await WebVideoCtrl.I_GetDownloadStatus(g_iDownloadID);
+ if (0 == iStatus) {
+ $("#downProcess").css({
+ width: $("#searchlist").width() + "px",
+ height: "100px",
+ lineHeight: "100px",
+ left: $("#searchdiv").offset().left + "px",
+ top: $("#searchdiv").offset().top + "px"
+ });
+ var iProcess = await WebVideoCtrl.I_GetDownloadProgress(g_iDownloadID);
+ if (iProcess < 0) {
+ clearInterval(g_tDownloadProcess);
+ g_tDownloadProcess = 0;
+ g_iDownloadID = -1;
+ } else if (iProcess < 100) {
+ $("#downProcess").text(iProcess + "%");
+ } else {
+ $("#downProcess").text("100%");
+ setTimeout(function () {
+ $("#downProcess").remove();
+ }, 1000);
+
+ await WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID);
+
+ console.log("录像下载完成!");
+ clearInterval(g_tDownloadProcess);
+ g_tDownloadProcess = 0;
+ g_iDownloadID = -1;
+ }
+ } else {
+ await WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID);
+
+ clearInterval(g_tDownloadProcess);
+ g_tDownloadProcess = 0;
+ g_iDownloadID = -1;
+ }
+}
+
+// 导出配置文件
+function clickExportDeviceConfig() {
+ var szDeviceIdentify = $("#ip").val(),
+ szInfo = "";
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+ var szDevicePassWord = $("#edfpassword").val();
+
+ WebVideoCtrl.I_ExportDeviceConfig(szDeviceIdentify, szDevicePassWord).then(() => {
+ szInfo = "导出配置文件成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ }, (oError) => {
+ szInfo = "导出配置文件失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 导入配置文件
+function clickImportDeviceConfig() {
+ var szDeviceIdentify = $("#ip").val(),
+ szFileName = $("#configFile").val(),
+ szDevicePassWord = $("#edfpassword").val(),
+ szInfo = "";
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ if ("" == szFileName) {
+ alert("请选择配置文件!");
+ return;
+ }
+
+ WebVideoCtrl.I_ImportDeviceConfig(szDeviceIdentify, szFileName, szDevicePassWord).then(() => {
+ szInfo = "导入成功!";
+ console.log(szDeviceIdentify + " " + szInfo);
+ WebVideoCtrl.I_Restart(szDeviceIdentify, {
+ success: function (xmlDoc) {
+ $("重启中...
").appendTo("body");
+ var oSize = getWindowSize();
+ $("#restartDiv").css({
+ width: oSize.width + "px",
+ height: oSize.height + "px",
+ lineHeight: oSize.height + "px",
+ left: 0,
+ top: 0
+ });
+ setTimeout("reconnect('" + szDeviceIdentify + "')", 20000);
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 重启失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }, (oError) => {
+ szInfo = "导入失败!";
+ console.log(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 重连
+function reconnect(szDeviceIdentify) {
+ WebVideoCtrl.I_Reconnect(szDeviceIdentify, {
+ timeout: 3000,
+ success: function (xmlDoc) {
+ $("#restartDiv").remove();
+ },
+ error: function () {
+ setTimeout(function () {
+ reconnect(szDeviceIdentify);
+ }, 5000);
+ }
+ });
+}
+
+// 开始升级
+var g_tUpgrade = 0;
+
+function clickStartUpgrade(szDeviceIdentify) {
+ var szDeviceIdentify = $("#ip").val(),
+ szFileName = $("#upgradeFile").val();
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ if ("" == szFileName) {
+ alert("请选择升级文件!");
+ return;
+ }
+ WebVideoCtrl.I_StartUpgrade(szDeviceIdentify, szFileName).then(function () {
+ g_tUpgrade = setInterval("getUpgradeStatus('" + szDeviceIdentify + "')", 1000);
+ }, function () {
+ clearInterval(g_tUpgrade);
+ console.log(szDeviceIdentify + " 升级失败!");
+ });
+}
+
+// 获取升级状态
+async function getUpgradeStatus(szDeviceIdentify) {
+ var bUpdating = await WebVideoCtrl.I_UpgradeStatus(szDeviceIdentify);
+ if (bUpdating) {
+ var iProcess = await WebVideoCtrl.I_UpgradeProgress(szDeviceIdentify);
+ if (iProcess < 0) {
+ clearInterval(g_tUpgrade);
+ g_tUpgrade = 0;
+ console.log(szDeviceIdentify + " 获取进度失败!");
+ return;
+ } else if (iProcess < 100) {
+ if (0 == $("#restartDiv").length) {
+ $("").appendTo("body");
+ var oSize = getWindowSize();
+ $("#restartDiv").css({
+ width: oSize.width + "px",
+ height: oSize.height + "px",
+ lineHeight: oSize.height + "px",
+ left: 0,
+ top: 0
+ });
+ }
+ $("#restartDiv").text(iProcess + "%");
+ } else {
+ await WebVideoCtrl.I_StopUpgrade();
+ clearInterval(g_tUpgrade);
+ g_tUpgrade = 0;
+
+ $("#restartDiv").remove();
+
+ WebVideoCtrl.I_Restart(szDeviceIdentify, {
+ success: function (xmlDoc) {
+ $("重启中...
").appendTo("body");
+ var oSize = getWindowSize();
+ $("#restartDiv").css({
+ width: oSize.width + "px",
+ height: oSize.height + "px",
+ lineHeight: oSize.height + "px",
+ left: 0,
+ top: 0
+ });
+ setTimeout("reconnect('" + szDeviceIdentify + "')", 20000);
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 重启失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+ } else {
+ await WebVideoCtrl.I_StopUpgrade();
+ clearInterval(g_tUpgrade);
+ g_tUpgrade = 0;
+
+ $("#restartDiv").remove();
+
+ WebVideoCtrl.I_Restart(szDeviceIdentify, {
+ success: function () {
+ $("重启中...
").appendTo("body");
+ var oSize = getWindowSize();
+ $("#restartDiv").css({
+ width: oSize.width + "px",
+ height: oSize.height + "px",
+ lineHeight: oSize.height + "px",
+ left: 0,
+ top: 0
+ });
+ setTimeout("reconnect('" + szDeviceIdentify + "')", 20000);
+ },
+ error: function (oError) {
+ console.log(szDeviceIdentify + " 重启失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 检查插件版本
+function clickCheckPluginVersion() {
+ var szDeviceIdentify = $("#ip").val();
+ WebVideoCtrl.I_CheckPluginVersion().then((bNeedUpdate) => {
+ if (bNeedUpdate) {
+ alert("检测到新的插件版本!");
+ } else {
+ alert("您的插件版本已经是最新的!");
+ }
+ }, () => {
+ console.log(szDeviceIdentify + " 检测插件新版本失败");
+ });
+}
+
+function clickRestoreDefault() {
+ var szDeviceIdentify = $("#ip").val(),
+ szMode = "basic";
+ WebVideoCtrl.I_RestoreDefault(szDeviceIdentify, szMode).then(() => {
+ $("#restartDiv").remove();
+ console.log(szDeviceIdentify + " 恢复默认参数成功!");
+ }, (oError) => {
+ console.log(szDeviceIdentify + " 恢复默认参数失败!", oError.errorCode, oError.errorMsg);
+ });
+}
+
+function PTZZoomIn() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(10, false, {
+ iWndIndex: g_iWndIndex,
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 调焦+成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 调焦+失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+function PTZZoomout() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(11, false, {
+ iWndIndex: g_iWndIndex,
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 调焦-成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 调焦-失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+function PTZZoomStop() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(11, true, {
+ iWndIndex: g_iWndIndex,
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 调焦停止成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 调焦停止失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+function PTZFocusIn() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(12, false, {
+ iWndIndex: g_iWndIndex,
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 聚焦+成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 聚焦+失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+function PTZFoucusOut() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(13, false, {
+ iWndIndex: g_iWndIndex,
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 聚焦-成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 聚焦-失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+function PTZFoucusStop() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(12, true, {
+ iWndIndex: g_iWndIndex,
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 聚焦停止成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 聚焦停止失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+function PTZIrisIn() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(14, false, {
+ iWndIndex: g_iWndIndex,
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 光圈+成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 光圈+失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+function PTZIrisOut() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(15, false, {
+ iWndIndex: g_iWndIndex,
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 光圈-成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 光圈-失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+function PTZIrisStop() {
+ var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex);
+
+ if (oWndInfo != null) {
+ WebVideoCtrl.I_PTZControl(14, true, {
+ iWndIndex: g_iWndIndex,
+ success: function (xmlDoc) {
+ console.log(oWndInfo.szDeviceIdentify + " 光圈停止成功!");
+ },
+ error: function (oError) {
+ console.log(oWndInfo.szDeviceIdentify + " 光圈停止失败!", oError.errorCode, oError.errorMsg);
+ }
+ });
+ }
+}
+
+// 切换模式
+function changeIPMode(iType) {
+ var arrPort = [0, 7071, 80];
+
+ $("#serverport").val(arrPort[iType]);
+}
+
+// 获取设备IP,B1暂不支持
+// function clickGetDeviceIP() {
+// var iDeviceMode = parseInt($("#devicemode").val(), 10),
+// szAddress = $("#serveraddress").val(),
+// iPort = parseInt($("#serverport").val(), 10) || 0,
+// szDeviceID = $("#deviceid").val(),
+// szDeviceInfo = "";
+
+// szDeviceInfo = WebVideoCtrl.I_GetIPInfoByMode(iDeviceMode, szAddress, iPort, szDeviceID);
+
+// if ("" == szDeviceInfo) {
+// console.log("设备IP和端口解析失败!");
+// } else {
+// console.log("设备IP和端口解析成功!");
+
+// var arrTemp = szDeviceInfo.split("-");
+// $("#loginip").val(arrTemp[0]);
+// $("#deviceport").val(arrTemp[1]);
+// }
+// }
+
+// 启用多边形绘制
+var g_bEnableDraw = false;
+
+function clickEnableDraw() {
+ WebVideoCtrl.I_SetPlayModeType(6).then(() => {
+ g_bEnableDraw = true;
+ console.log("启用绘制成功!");
+ }, (oError) => {
+ console.log("启用绘制失败!", oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 禁用多边形绘制
+function clickDisableDraw() {
+ WebVideoCtrl.I_SetSnapDrawMode(0, -1).then(() => {
+ g_bEnableDraw = false;
+ console.log("禁用绘制成功!");
+ }, (oError) => {
+ console.log("禁用绘制失败!", oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 添加图形,最多不超过16个图形
+function clickAddSnapPolygon() {
+ if (!g_bEnableDraw) {
+ return;
+ }
+
+ var szId = $("#snapId").val();
+ var szName = encodeString($("#snapName").val());
+
+ var szInfo = "";
+ szInfo += "";
+ szInfo += "";
+ szInfo += "" + szId + ""; // [1, 32]
+ szInfo += "0"; //如果想绘制多边形,polygonType指需要改为1
+ szInfo += "17"; // [MinClosed, 17]
+ szInfo += "4"; // [4, 17]
+ szInfo += "#" + szId + "#" + szName + "";
+ szInfo += "false";
+ szInfo += "02550";
+ szInfo += "";
+ szInfo += "";
+ szInfo += "";
+
+ WebVideoCtrl.I_SetSnapPolygonInfo(g_iWndIndex, szInfo).then(() => {
+ console.log("添加图形成功!");
+ });
+ WebVideoCtrl.I_SetSnapDrawMode(g_iWndIndex, 2);
+}
+
+// 删除图形
+function clickDelSnapPolygon() {
+ if (!g_bEnableDraw) {
+ return;
+ }
+
+ var szId = $("#snapId").val();
+ var aShapes = [];
+ aShapes.push({
+ polygonType: 0,
+ id: szId
+ });
+
+ WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex, aShapes);
+}
+
+// 获取图形,保存到自己数据库中
+function clickGetSnapPolygon() {
+ WebVideoCtrl.I_GetSnapPolygonInfo(g_iWndIndex).then((szXml) => {
+ alert(szXml);
+ });
+}
+
+// 设置图形,页面打开时可以设置以前设置过的图形
+function clickSetSnapPolygon() {
+ if (!g_bEnableDraw) {
+ return;
+ }
+
+ WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex);
+
+ var szInfo = "";
+ szInfo += "";
+ szInfo += "";
+ szInfo += "1";
+ szInfo += "1";
+ szInfo += "#1#设置1";
+ szInfo += "true";
+ szInfo += "02550";
+ szInfo += "";
+ szInfo += "0.7379030.229730";
+ szInfo += "0.9475810.804054";
+ szInfo += "0.3629030.777027";
+ szInfo += "";
+ szInfo += "";
+ szInfo += "";
+ szInfo += "2";
+ szInfo += "0";
+ szInfo += "#2#设置2";
+ szInfo += "true";
+ szInfo += "2552550";
+ szInfo += "";
+ szInfo += "0.20.2";
+ szInfo += "0.80.2";
+ szInfo += "0.80.8";
+ szInfo += "0.20.8";
+ szInfo += "";
+ szInfo += "";
+ szInfo += "";
+
+ WebVideoCtrl.I_SetSnapPolygonInfo(g_iWndIndex, szInfo).then(() => {
+ console.log("设置图形成功!");
+ }, (oError) => {
+ console.log("设置图形失败!", oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 清空图形
+function clickDelAllSnapPolygon() {
+ if (!g_bEnableDraw) {
+ return;
+ }
+
+ WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex).then(() => {
+ console.log("清空图形成功!");
+ }, (oError) => {
+ console.log("清空图形失败!", oError.errorCode, oError.errorMsg);
+ });
+}
+
+// 设备抓图
+function clickDeviceCapturePic() {
+ var szInfo = "";
+ var szDeviceIdentify = $("#ip").val();
+ var bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false;
+ var iChannelID = parseInt($("#channels").val(), 10);
+ var iResolutionWidth = parseInt($("#resolutionWidth").val(), 10);
+ var iResolutionHeight = parseInt($("#resolutionHeight").val(), 10);
+
+ if (null == szDeviceIdentify) {
+ return;
+ }
+
+ if (bZeroChannel) {// 零通道不支持设备抓图
+ return;
+ }
+
+ var szPicName = szDeviceIdentify + "_" + iChannelID + "_" + new Date().getTime();
+ var iRet = WebVideoCtrl.I_DeviceCapturePic(szDeviceIdentify, iChannelID, szPicName, {
+ bDateDir: true, //是否生成日期文件
+ iResolutionWidth: iResolutionWidth,
+ iResolutionHeight: iResolutionHeight
+ });
+
+ if (0 == iRet) {
+ szInfo = "设备抓图成功!";
+ } else {
+ szInfo = "设备抓图失败!";
+ }
+ console.log(szDeviceIdentify + " " + szInfo);
+}
+
+function loadXML(szXml) {
+ if (null == szXml || "" == szXml) {
+ return null;
+ }
+
+ var oXmlDoc = null;
+
+ if (window.DOMParser) {
+ var oParser = new DOMParser();
+ oXmlDoc = oParser.parseFromString(szXml, "text/xml");
+ } else {
+ oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
+ oXmlDoc.async = false;
+ oXmlDoc.loadXML(szXml);
+ }
+
+ return oXmlDoc;
+}
+
+function toXMLStr(oXmlDoc) {
+ var szXmlDoc = "";
+
+ try {
+ var oSerializer = new XMLSerializer();
+ szXmlDoc = oSerializer.serializeToString(oXmlDoc);
+ } catch (e) {
+ try {
+ szXmlDoc = oXmlDoc.xml;
+ } catch (e) {
+ return "";
+ }
+ }
+ if (szXmlDoc.indexOf("" + szXmlDoc;
+ }
+
+ return szXmlDoc;
+}
+
+function encodeString(str) {
+ if (str) {
+ return str.replace(/&/g, '&').replace(//g, '>');
+ } else {
+ return "";
+ }
+}
diff --git a/haiwei-admin/src/main/resources/static/js/webVideoCtrl1.js b/haiwei-admin/src/main/resources/static/js/webVideoCtrl1.js
new file mode 100644
index 0000000..e6655ea
--- /dev/null
+++ b/haiwei-admin/src/main/resources/static/js/webVideoCtrl1.js
@@ -0,0 +1 @@
+(function(){if(window.WebVideoCtrl){return}var WebVideoCtrl=function(){var m_szWidth="100%";var m_szHeight="100%";var m_options={szversion:"V3.3.0 build20230314",szContainerID:"",szColorProperty:"",szBasePath:"",iWndowType:1,bWndFull:true,iPackageType:2,bDebugMode:true,cbSelWnd:null,cbDoubleClickWnd:null,cbEvent:null,cbInitPluginComplete:null};var m_pluginOBJECT=null;var m_iSelWnd=0;var m_bFullScreen=false;var m_deviceSet=[];var m_wndSet=[];var m_ISAPIProtocol=null;var m_utilsInc=null;var m_webVideoCtrl=this;var m_oLocalCfg=null;var PROTOCOL_DEVICE_ISAPI=1;var ERROR_CODE_UNKNOWN=1e3;var ERROR_CODE_NETWORKERROR=1001;var ERROR_CODE_PARAMERROR=1002;var ERROR_CODE_LOGIN_NOLOGIN=2e3;var ERROR_CODE_LOGIN_REPEATLOGIN=2001;var ERROR_CODE_LOGIN_NOSUPPORT=2002;var ERROR_CODE_PLAY_PLUGININITFAIL=3e3;var ERROR_CODE_PLAY_NOREPEATPLAY=3001;var ERROR_CODE_PLAY_PLAYBACKABNORMAL=3002;var ERROR_CODE_PLAY_PLAYBACKSTOP=3003;var ERROR_CODE_PLAY_NOFREESPACE=3004;var ERROR_CODE_TALK_FAIL=5e3;var HTTP_STATUS_OK_200=200;var HTTP_STATUS_ERROR_403=403;var PLAY_STATUS_STOP=0;var PLAY_STATUS_REALPLAY=1;var PLAY_STATUS_PLAYBACK=2;var PLAY_STATUS_PAUSE=3;var PLAY_STATUS_FRAME=4;var PLAY_STATUS_REVERSE_PLAYBACK=5;var PLAY_STATUS_REVERSE_PAUSE=6;var PROTOCOLTYPE_PLAY_TCP=0;var PROTOCOLTYPE_PLAY_UDP=1;var DEVICE_TYPE_IPCAMERA="IPCamera";var DEVICE_TYPE_IPDOME="IPDome";var DEVICE_TYPE_IPZOOM="IPZoom";var DEVICE_TYPE_GATEWAY="Gateway";var m_szVersion=""+""+"1.0.0.40";""+"";var _onGetSelectWndInfo=function(iWnd){m_iSelWnd=iWnd;if(m_options.cbSelWnd){var arrXml=[];arrXml.push("");arrXml.push(""+m_iSelWnd+"");arrXml.push("");m_options.cbSelWnd(m_utilsInc.loadXML(arrXml.join("")))}};var _onMouseEvent=function(oData){if(m_options.cbDoubleClickWnd&&2===oData.eventType){if(m_options.bWndFull){var iIndex=m_webVideoCtrl.findWndIndexByIndex(oData.wndIndex);if(iIndex!=-1){m_bFullScreen=!m_bFullScreen}}m_options.cbDoubleClickWnd(oData.wndIndex,m_bFullScreen)}};var _onPluginEventHandler=function(iWndIndex,iErrorCode,oError){var iNewError=ERROR_CODE_UNKNOWN;if(0===iErrorCode){iNewError=ERROR_CODE_PLAY_PLAYBACKABNORMAL}else if(2===iErrorCode){iNewError=ERROR_CODE_PLAY_PLAYBACKSTOP}else if(3===iErrorCode){iNewError=ERROR_CODE_TALK_FAIL}else if(21===iErrorCode){iNewError=ERROR_CODE_PLAY_NOFREESPACE}if(ERROR_CODE_PLAY_PLAYBACKABNORMAL==iNewError||ERROR_CODE_PLAY_PLAYBACKSTOP==iNewError){m_webVideoCtrl.I_Stop(iWndIndex)}else if(ERROR_CODE_PLAY_NOFREESPACE==iNewError){m_webVideoCtrl.I_StopRecord(iWndIndex)}else if(ERROR_CODE_TALK_FAIL==iNewError){m_webVideoCtrl.I_StopVoiceTalk()}else{}if(m_options.cbEvent){m_options.cbEvent(iNewError,iWndIndex,oError)}};var _onKeyBoardEvent=function(iKeyCode){if(100===parseInt(iKeyCode,10)){m_bFullScreen=false;if(m_options.cbDoubleClickWnd){m_options.cbDoubleClickWnd(m_iSelWnd,m_bFullScreen)}}};var _onZoomInfoCallback=function(oPoints){var iIndex=m_webVideoCtrl.findWndIndexByIndex(m_iSelWnd);if(iIndex!=-1){var oWndInfo=m_wndSet[iIndex];iIndex=m_webVideoCtrl.findDeviceIndexByIP(oWndInfo.szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.set3DZoom(oDeviceInfo,oWndInfo,oPoints,{})}}};var _oNoLoginError={errorCode:ERROR_CODE_LOGIN_NOLOGIN,errorMsg:"The device is not login."};var _oUnKnownError={errorCode:ERROR_CODE_UNKNOWN,errorMsg:"Unknown error."};var _oParamsError={errorCode:ERROR_CODE_PARAMERROR,errorMsg:"Params error."};var _printString=function(){if(m_options.bDebugMode){var printString=m_utilsInc.formatString(arguments);console.log(printString)}};var _initLocalCfg=function(){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_GetLocalConfig().then(oLocalCofing=>{m_oLocalCfg=oLocalCofing;resolve()},()=>{reject()})});return oPromise};var _initDeviceInfo=function(oDeviceInfo){let oPromise=new Promise(function(resolve,reject){let oP1=oDeviceInfo.oProtocolInc.getDeviceInfo(oDeviceInfo,{});let oP2=oDeviceInfo.oProtocolInc.getAnalogChannelInfo(oDeviceInfo,{});let oP3=oDeviceInfo.oProtocolInc.getAudioInfo(oDeviceInfo,{});let oP4=_getPort(oDeviceInfo);let oP5=oDeviceInfo.oProtocolInc.getDeviceMinusLocalTime(oDeviceInfo);Promise.all([oP1,oP2,oP3,oP4,oP5]).then(()=>{resolve()},()=>{resolve()})});return oPromise};var _initPlugin=function(szContainerID){let oPromise=new Promise(function(resolve,reject){if(!m_utilsInc.isUndefined(szContainerID)){m_options.szContainerID=szContainerID}if(document.getElementById(m_options.szContainerID)==null){reject(_oParamsError);return}var oParam={szId:szContainerID,iType:1,iWidth:m_szWidth,iHeight:m_szHeight,iMaxSplit:4,iCurrentSplit:m_options.iWndowType,iServicePortStart:34686,iServicePortEnd:34690,oSessionInfo:{sessionID:"11c12b3257f037bb50052db3ac5e342572c3d963622baca122755c482ce8823a",user:"admin",challenge:"275816f02ec2dca22b6a6ae87c7cb7e3",iterations:100,random:"34765058"},iPluginType:2,onConnectSuccess:()=>{var oElem=$("#"+szContainerID);m_pluginOBJECT.JS_Resize(oElem.width(),oElem.height());if(2!==m_pluginOBJECT.iPluginMode){reject({errorCode:ERROR_CODE_PLAY_PLUGININITFAIL,errorMsg:"Plugin init failed."});return}var iWndFull=m_options.bWndFull?1:0;m_pluginOBJECT.JS_SetFullScreenCapability(iWndFull);m_pluginOBJECT.JS_SetPackageType(m_options.iPackageType);_initPluginEvent();_initLocalCfg().then(()=>{resolve()})},onConnectError:()=>{reject({errorCode:ERROR_CODE_PLAY_PLUGININITFAIL,errorMsg:"Plugin init failed."})},szBasePath:m_utilsInc.getDirName()};m_pluginOBJECT=new JSVideoPlugin(oParam)});return oPromise};var _initPluginEvent=function(){m_pluginOBJECT.JS_SetWindowControlCallback({onGetSelectWndInfo:iwnd=>{_onGetSelectWndInfo(iwnd)},onPluginEventHandler:(iWndIndex,iEventType,iParam2)=>{_onPluginEventHandler(iWndIndex,iEventType,iParam2)},KeyBoardEvent:szXml=>{_onKeyBoardEvent(szXml)},onMouseEvent:function(oData){_onMouseEvent(oData)}})};var _getPort=function(oDeviceInfo){let oPromise=new Promise(async(resolve,reject)=>{var oPort=null;let bPPPoE=await _getPPPoEEnable(oDeviceInfo);if(bPPPoE){oPort=await _getInternalPort(oDeviceInfo)}else{var ipset=await _getDeviceIPAddr(oDeviceInfo);var bSame=false;for(var i=0;i{var iRtspPort=-1,iHttpPort=-1,iDevicePort=-1;oDeviceInfo.oProtocolInc.getPortInfo(oDeviceInfo,{async:false,success:function(xmlDoc){var nodeList=NS.$XML(xmlDoc).find("AdminAccessProtocol",true);iRtspPort=554;for(var i=0,iLen=nodeList.length;i{var iRtspPort=-1,iHttpPort=-1,iDevicePort=-1;oDeviceInfo.oProtocolInc.getUPnPPortStatus(oDeviceInfo,{async:false,success:function(xmlDoc){var nodeList=NS.$XML(xmlDoc).find("portStatus",true);for(var i=0,iLen=nodeList.length;i0){bEnabled=true}else if(NS.$XML(xmlDoc).find("ipv6Address",true).length>0){bEnabled=true}else{bEnabled=false}resolve(bEnabled)},error:function(){bEnabled=false;resolve(bEnabled)}})});return oPromise};var _generateTransCodeXml=function(oTransCodeParam){var oDefaultParam={TransFrameRate:"",TransResolution:"",TransBitrate:""};m_utilsInc.extend(oDefaultParam,oTransCodeParam);if(oDefaultParam.TransFrameRate==""||oDefaultParam.TransResolution==""||oDefaultParam.TransBitrate==""){return""}var ArraySet=[];ArraySet.push("");ArraySet.push("");ArraySet.push(""+oDefaultParam.TransFrameRate+"");ArraySet.push(""+oDefaultParam.TransResolution+"");ArraySet.push(""+oDefaultParam.TransBitrate+"");ArraySet.push("");return ArraySet.join("")};var _setDeviceInfo=function(cgiInstance,oDeviceInfo,szIP,iProtocol,iPort,szUserName,szPassword){oDeviceInfo.szIP=szIP;if(iProtocol==2){oDeviceInfo.szHttpProtocol="https://";oDeviceInfo.iHttpsPort=iPort}else{oDeviceInfo.szHttpProtocol="http://";oDeviceInfo.iHttpPort=iPort}oDeviceInfo.iCGIPort=iPort;oDeviceInfo.szDeviceIdentify=szIP+"_"+iPort;oDeviceInfo.iDeviceProtocol=PROTOCOL_DEVICE_ISAPI;oDeviceInfo.oProtocolInc=cgiInstance;oDeviceInfo.szAuth=m_utilsInc.Base64.encode(":"+szUserName+":"+szPassword)};var _doLogin=function(cgiInstance,oDeviceInfo,szIP,iProtocol,iPort,szUserName,szPassword,options){var newOptions={success:null,error:null};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlDoc){_setDeviceInfo(cgiInstance,oDeviceInfo,szIP,iProtocol,iPort,szUserName,szPassword);m_deviceSet.push(oDeviceInfo);_initDeviceInfo(oDeviceInfo).then(()=>{if(options.success){options.success(xmlDoc)}})},error:function(oError){if(options.error){options.error(oError)}}});return cgiInstance.digestLogin(szIP,iProtocol,iPort,szUserName,szPassword,newOptions)};this.I_SupportNoPlugin=function(){return false};this.I_Resize=function(iWidth,iHeight){return m_pluginOBJECT.JS_Resize(iWidth,iHeight)};this.I_InitPlugin=function(options){m_utilsInc.extend(m_options,options);var szDirName=m_utilsInc.getDirName();if(szDirName){if("object"===typeof exports&&typeof module!=="undefined"){}else if("function"===typeof define&&define.amd){require([szDirName+"/jsVideoPlugin-1.0.0.min.js"],function(o){window.JSVideoPlugin=o.JSVideoPlugin;if(options.cbInitPluginComplete){options.cbInitPluginComplete()}})}else{m_utilsInc.loadScript(szDirName+"/jsVideoPlugin-1.0.0.min.js",function(){if(options.cbInitPluginComplete){options.cbInitPluginComplete()}})}}window.addEventListener("resize",function(){if(m_pluginOBJECT!==null){var oElem=$("#"+m_options.szContainerID);m_pluginOBJECT.JS_Resize(oElem.width(),oElem.height())}});window.addEventListener("unload",function(){})};this.I_InsertOBJECTPlugin=function(szContainerID){return _initPlugin(szContainerID)};this.I_WriteOBJECT_XHTML=function(){return 0};this.I_DestroyPlugin=function(){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_DestroyAll().then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_OpenFileDlg=async function(iType){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_OpenFileBrowser(iType,"").then(szFilePath=>{resolve(szFilePath)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetLocalCfg=function(){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_GetLocalConfig().then(oLocalCofing=>{resolve(oLocalCofing)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SetLocalCfg=function(oLocalCofing){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_SetLocalConfig(oLocalCofing).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_Login=function(szIP,iProtocol,iPort,szUserName,szPassword,options){let oPromise=new Promise(function(resolve,reject){var szDeviceIdentify=szIP+"_"+iPort;var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){if(options.error){options.error({errorCode:ERROR_CODE_LOGIN_REPEATLOGIN,errorMsg:"The device is already login."})}reject({errorCode:ERROR_CODE_LOGIN_REPEATLOGIN,errorMsg:"The device is already login."});return}var cgiInstance=m_ISAPIProtocol;var oDeviceInfo=new deviceInfoClass;_doLogin(cgiInstance,oDeviceInfo,szIP,iProtocol,iPort,szUserName,szPassword,options).then(()=>{resolve()},oError=>{reject(oError)})});return oPromise};this.I_Logout=function(szDeviceIdentify){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){m_deviceSet.splice(iIndex,1);resolve()}});return oPromise};this.I_GetAudioInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getAudioInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_GetDeviceInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getDeviceInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_GetAnalogChannelInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getAnalogChannelInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_GetDigitalChannelInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getDigitalChannelInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_GetZeroChannelInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getZeroChannelInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_StartRealPlay=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);var newOptions={iWndIndex:m_iSelWnd,iStreamType:1,iChannelID:1,bZeroChannel:false};m_utilsInc.extend(newOptions,options);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var iWndIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(-1==iWndIndex){oDeviceInfo.oProtocolInc.startRealPlay(oDeviceInfo,newOptions).then(function(){if(options.success){options.success()}resolve()},function(){if(options.error){options.error(_oUnKnownError)}reject(_oUnKnownError)})}else{reject({errorCode:ERROR_CODE_PLAY_NOREPEATPLAY,errorMsg:"The window is already playing."})}}else{if(options.error){options.error(_oNoLoginError)}reject(_oNoLoginError)}});return oPromise};this.I_StartPlay=function(szDeviceIdentify,options){let oPromise=new Promise(async function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);var newOptions={iWndIndex:m_iSelWnd};m_utilsInc.extend(newOptions,options);var oDeviceInfo=m_deviceSet[iIndex];iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(-1==iIndex){oDeviceInfo.oProtocolInc.startPlay(oDeviceInfo,newOptions).then(function(){if(options.success){options.success()}resolve()},function(){if(options.error){options.error(_oUnKnownError)}reject(_oUnKnownError)})}else{reject({errorCode:ERROR_CODE_PLAY_NOREPEATPLAY,errorMsg:"The window is already playing."})}});return oPromise};this.I_SetSecretKey=function(szSecretKey){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_SetSecretKey(0,szSecretKey,1).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetEncryptString=function(szSecretKey){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_GetEncryptString(3,szSecretKey).then(szEncode=>{resolve(szEncode)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_Stop=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.bRecord){m_pluginOBJECT.JS_StopSave(wndInfo.iIndex)}if(wndInfo.bSound){m_pluginOBJECT.JS_CloseSound()}if(wndInfo.bEZoom){m_pluginOBJECT.JS_DisableZoom(wndInfo.iIndex)}m_pluginOBJECT.JS_Stop(newOptions.iWndIndex).then(()=>{m_wndSet.splice(iIndex,1);if(newOptions.success){newOptions.success()}resolve()},()=>{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{resolve()}});return oPromise};this.I_StopAllPlay=function(){let oPromise=new Promise(async function(resolve,reject){m_pluginOBJECT.JS_StopRealPlayAll().then(()=>{m_wndSet.length=0;resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_OpenSound=function(iWndIndex){iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(!wndInfo.bSound){m_pluginOBJECT.JS_OpenSound(iWndIndex).then(()=>{wndInfo.bSound=true;resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_CloseSound=function(iWndIndex){iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.bSound){m_pluginOBJECT.JS_CloseSound().then(()=>{wndInfo.bSound=false;resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_SetVolume=function(iVolume,iWndIndex){let oPromise=new Promise((resolve,reject)=>{var iRet=-1;iVolume=parseInt(iVolume,10);if(isNaN(iVolume)){reject(_oParamsError);return}if(iVolume<0||iVolume>100){reject(_oParamsError);return}iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){m_pluginOBJECT.JS_SetVolume(iWndIndex,iVolume).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}});return oPromise};this.I_CapturePic=function(szPicName,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd,bDateDir:true};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){if(".jpg"===szPicName.slice(-4).toLowerCase()){szPicName=szPicName.slice(0,-4)}else if(".jpeg"===szPicName.slice(-5).toLowerCase()){szPicName=szPicName.slice(0,-5)}m_pluginOBJECT.JS_CapturePicture(newOptions.iWndIndex,szPicName,newOptions.bDateDir).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}});return oPromise};this.I_CapturePicData=function(options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd,bDateDir:true};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){m_pluginOBJECT.JS_GetCaptureData(newOptions.iWndIndex).then(function(data){resolve(data)},function(data){reject(_oUnKnownError)})}else{reject(_oUnKnownError)}});return oPromise};this.I_StartRecord=function(szFileName,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd,bDateDir:true};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(!wndInfo.bRecord){m_pluginOBJECT.JS_StartSave(newOptions.iWndIndex,szFileName).then(function(){wndInfo.bRecord=true;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_StopRecord=function(options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.bRecord){m_pluginOBJECT.JS_StopSave(newOptions.iWndIndex).then(function(){wndInfo.bRecord=false;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_StartVoiceTalk=function(szDeviceIdentify,iAudioChannel){let oPromise=new Promise((resolve,reject)=>{if(isNaN(parseInt(iAudioChannel,10))){reject(_oParamsError);return}var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];if(!oDeviceInfo.bVoiceTalk){oDeviceInfo.oProtocolInc.startVoiceTalk(oDeviceInfo,iAudioChannel).then(()=>{m_deviceSet[iIndex].bVoiceTalk=true;resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_StopVoiceTalk=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_StopTalk().then(()=>{for(var i=0,iLen=m_deviceSet.length;i{reject(_oUnKnownError)})});return oPromise};this.I_StartAudioPlay=function(szDeviceIdentify,options){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];options.szAuth=oDeviceInfo.szAuth;if(!oDeviceInfo.bVoiceTalk){oDeviceInfo.oProtocolInc.audioPlay(options).then(()=>{m_deviceSet[iIndex].bVoiceTalk=true;resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_StopAudioPlay=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_StopAudioPlay().then(()=>{for(var i=0,iLen=m_deviceSet.length;i{reject(_oUnKnownError)})});return oPromise};this.I_PTZControl=function(iPTZIndex,bStop,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd,iPTZIndex:iPTZIndex,iPTZSpeed:4};m_utilsInc.extend(newOptions,options);var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];iIndex=this.findDeviceIndexByIP(wndInfo.szIP);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];if(9==iPTZIndex){oDeviceInfo.oProtocolInc.ptzAutoControl(oDeviceInfo,bStop,wndInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{oDeviceInfo.oProtocolInc.ptzControl(oDeviceInfo,bStop,wndInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}}}});return oPromise};this.I_EnableEZoom=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(!wndInfo.bEZoom){m_pluginOBJECT.JS_EnableZoom(iWndIndex).then(()=>{wndInfo.bEZoom=true;resolve()},()=>{reject(_oUnKnownError)})}}else{reject(_oUnKnownError)}});return oPromise};this.I_DisableEZoom=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.bEZoom){m_pluginOBJECT.JS_DisableZoom(iWndIndex).then(()=>{wndInfo.bEZoom=false;resolve()},()=>{reject(_oUnKnownError)})}else{resolve()}}else{reject(_oUnKnownError)}});return oPromise};this.I_Enable3DZoom=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(!wndInfo.b3DZoom){m_pluginOBJECT.JS_SetDrawCallback(iWndIndex,true,"Rect",false,function(oRect){_onZoomInfoCallback(oRect.points)});wndInfo.b3DZoom=true;resolve()}else{resolve()}}else{reject(_oUnKnownError)}});return oPromise};this.I_Disable3DZoom=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.b3DZoom){m_pluginOBJECT.JS_SetDrawCallback(iWndIndex,false,"Rect",false,function(){});wndInfo.b3DZoom=false;resolve()}else{resolve()}}else{reject(_oUnKnownError)}});return oPromise};this.I_FullScreen=function(bFull){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_FullScreenDisplay(bFull).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SetPreset=function(iPresetID,options){let oPromise=new Promise(function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd,iPresetID:iPresetID};m_utilsInc.extend(newOptions,options);var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];iIndex=this.findDeviceIndexByIP(wndInfo.szIP);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.setPreset(oDeviceInfo,wndInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_GoPreset=function(iPresetID,options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd,iPresetID:iPresetID};m_utilsInc.extend(newOptions,options);var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];iIndex=this.findDeviceIndexByIP(wndInfo.szIP);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.goPreset(oDeviceInfo,wndInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_RecordSearch=function(szDeviceIdentify,iChannelID,szStartTime,szEndTime,options){let oPromise=new Promise(async function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];if(oDeviceInfo.szDeviceType===DEVICE_TYPE_IPCAMERA||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPDOME||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPZOOM){szStartTime=m_utilsInc.convertToUTCTime(szStartTime);szEndTime=m_utilsInc.convertToUTCTime(szEndTime)}var newOptions={iChannelID:iChannelID,szStartTime:szStartTime,szEndTime:szEndTime,iSearchPos:0,iStreamType:1};m_utilsInc.extend(newOptions,options);newOptions.success=null;oDeviceInfo.oProtocolInc.recordSearch(oDeviceInfo,newOptions).then(oData=>{if(oDeviceInfo.szDeviceType===DEVICE_TYPE_IPCAMERA||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPDOME||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPZOOM){var szRecordStartTime="";var szRecordEndTime="";for(var i=0,nLen=$(oData).find("searchMatchItem").length;i{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_StartPlayback=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify),cgi="",urlProtocol="",iChannelID=1,iStream=0;var szCurTime=m_utilsInc.dateFormat(new Date,"yyyy-MM-dd");var newOptions={iWndIndex:m_iSelWnd,iStreamType:1,iChannelID:1,szStartTime:szCurTime+" 00:00:00",szEndTime:szCurTime+" 23:59:59"};m_utilsInc.extend(newOptions,options);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];cgi=oDeviceInfo.oProtocolInc.CGI.startPlayback;urlProtocol="rtsp://";iStream=newOptions.iStreamType;iChannelID=newOptions.iChannelID*100+iStream;m_utilsInc.extend(newOptions,{urlProtocol:urlProtocol,cgi:cgi,iChannelID:iChannelID});iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(-1==iIndex){if(oDeviceInfo.szDeviceType===DEVICE_TYPE_IPCAMERA||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPDOME||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPZOOM){newOptions.szStartTime=m_utilsInc.convertToUTCTime(newOptions.szStartTime);newOptions.szEndTime=m_utilsInc.convertToUTCTime(newOptions.szEndTime)}newOptions.szStartTime=newOptions.szStartTime.replace(/[-:]/g,"").replace(" ","T")+"Z";newOptions.szEndTime=newOptions.szEndTime.replace(/[-:]/g,"").replace(" ","T")+"Z";oDeviceInfo.oProtocolInc.startPlayback(oDeviceInfo,newOptions).then(function(){if(options.success){options.success()}resolve()},function(){if(options.error){options.error(_oUnKnownError)}reject(_oUnKnownError)})}}else{if(options.error){options.error(_oNoLoginError)}reject(_oNoLoginError)}});return oPromise};this.I_ReversePlayback=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify),iRet=-1,cgi="",urlProtocol="",iPort=-1,iChannelID=-1,iStream=0;var szCurTime=m_utilsInc.dateFormat(new Date,"yyyy-MM-dd");var newOptions={iWndIndex:m_iSelWnd,iStreamType:1,iChannelID:1,szStartTime:szCurTime+" 00:00:00",szEndTime:szCurTime+" 23:59:59"};m_utilsInc.extend(newOptions,options);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var iProtocolType=parseInt(m_oLocalCfg.protocolType,10);cgi=oDeviceInfo.oProtocolInc.CGI.startPlayback;urlProtocol="rtsp://";iStream=newOptions.iStreamType;iChannelID=newOptions.iChannelID*100+iStream;m_utilsInc.extend(newOptions,{urlProtocol:urlProtocol,cgi:cgi,iChannelID:iChannelID});iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(-1==iIndex){newOptions.szStartTime=newOptions.szStartTime.replace(/[-:]/g,"").replace(" ","T")+"Z";newOptions.szEndTime=newOptions.szEndTime.replace(/[-:]/g,"").replace(" ","T")+"Z";oDeviceInfo.oProtocolInc.reversePlayback(oDeviceInfo,newOptions).then(function(){if(options.success){options.success()}resolve()},function(){if(options.error){options.error(_oUnKnownError)}reject(_oUnKnownError)})}}});return oPromise};this.I_Frame=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex],iPlayStatus=wndInfo.iPlayStatus;if(iPlayStatus==PLAY_STATUS_PLAYBACK||iPlayStatus==PLAY_STATUS_FRAME){m_pluginOBJECT.JS_FrameForward(newOptions.iWndIndex).then(function(){wndInfo.iPlayStatus=PLAY_STATUS_FRAME;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_Pause=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex],iPlayStatus=wndInfo.iPlayStatus,iNextStatus=-1;if(iPlayStatus==PLAY_STATUS_PLAYBACK){iNextStatus=PLAY_STATUS_PAUSE}else if(iPlayStatus==PLAY_STATUS_REVERSE_PLAYBACK){iNextStatus=PLAY_STATUS_REVERSE_PAUSE}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError);return}m_pluginOBJECT.JS_Pause(newOptions.iWndIndex).then(function(){wndInfo.iPlayStatus=iNextStatus;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_Resume=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex],iPlayStatus=wndInfo.iPlayStatus,iNextStatus=-1;if(iPlayStatus==PLAY_STATUS_PAUSE||iPlayStatus==PLAY_STATUS_FRAME){iNextStatus=PLAY_STATUS_PLAYBACK}else if(iPlayStatus==PLAY_STATUS_REVERSE_PAUSE){iNextStatus=PLAY_STATUS_REVERSE_PLAYBACK}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError);return}m_pluginOBJECT.JS_Resume(newOptions.iWndIndex).then(function(){wndInfo.iPlayStatus=iNextStatus;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_PlaySlow=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.iPlayStatus==PLAY_STATUS_PLAYBACK){m_pluginOBJECT.JS_Slow(newOptions.iWndIndex).then(function(){if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_PlayFast=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.iPlayStatus==PLAY_STATUS_PLAYBACK){m_pluginOBJECT.JS_Fast(newOptions.iWndIndex).then(function(){if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_GetOSDTime=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){m_pluginOBJECT.JS_GetOSDTime(newOptions.iWndIndex).then(function(iTime){if(newOptions.success){var szOSDTime=m_utilsInc.dateFormat(new Date(iTime*1e3),"yyyy-MM-dd hh:mm:ss");newOptions.success(szOSDTime)}resolve(szOSDTime)},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_StartDownloadRecord=function(szDeviceIdentify,szPlaybackURI,szFileName,options){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var newOptions={szPlaybackURI:szPlaybackURI,szFileName:szFileName+".mp4",bDateDir:true};if(!m_utilsInc.isUndefined(options)){m_utilsInc.extend(newOptions,options)}oDeviceInfo.oProtocolInc.startDownloadRecord(oDeviceInfo,newOptions).then(iDownloadID=>{resolve(iDownloadID)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_StartDownloadRecordByTime=function(szDeviceIdentify,szPlaybackURI,szFileName,szStartTime,szEndTime,options){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];szPlaybackURI=szPlaybackURI.split("?")[0]+"?starttime="+szStartTime.replace(" ","T")+"Z&endtime="+szEndTime.replace(" ","T")+"Z";var newOptions={szPlaybackURI:szPlaybackURI,szFileName:szFileName+".mp4",bDateDir:true};if(!m_utilsInc.isUndefined(options)){m_utilsInc.extend(newOptions,options)}oDeviceInfo.oProtocolInc.startDownloadRecord(oDeviceInfo,newOptions).then(iDownloadID=>{resolve(iDownloadID)},oError=>{reject(oError)})}});return oPromise};this.I_GetDownloadStatus=function(iDownloadID){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_GetDownloadStatus(iDownloadID).then(data=>{resolve(data)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetDownloadProgress=function(iDownloadID){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_GetDownloadProgress(iDownloadID).then(data=>{resolve(data)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_StopDownloadRecord=function(iDownloadID){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_StopAsyncDownload(iDownloadID).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_ExportDeviceConfig=function(szDeviceIdentify){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.exportDeviceConfig(oDeviceInfo).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_ImportDeviceConfig=function(szDeviceIdentify,szFileName){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var newOptions={szFileName:szFileName};oDeviceInfo.oProtocolInc.importDeviceConfig(oDeviceInfo,newOptions).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_RestoreDefault=function(szDeviceIdentify,szMode,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={success:null,error:null};m_utilsInc.extend(newOptions,options);var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.restore(oDeviceInfo,szMode,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_Restart=function(szDeviceIdentify,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={success:null,error:null};m_utilsInc.extend(newOptions,options);var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.restart(oDeviceInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_Reconnect=function(szDeviceIdentify,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={success:null,error:null};m_utilsInc.extend(newOptions,options);var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.login(oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oDeviceInfo.szAuth,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_StartUpgrade=function(szDeviceIdentify,szFileName){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.startUpgrade(oDeviceInfo,szFileName).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_UpgradeStatus=function(szDeviceIdentify){let oPromise=new Promise((resolve,reject)=>{this.I_SendHTTPRequest(szDeviceIdentify,m_ISAPIProtocol.CGI.startUpgrade.status,{}).then(data=>{var bUpgrading=$(data).find("upgrading").eq(0).text()==="true";resolve(bUpgrading)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_UpgradeProgress=function(szDeviceIdentify){let oPromise=new Promise((resolve,reject)=>{this.I_SendHTTPRequest(szDeviceIdentify,m_ISAPIProtocol.CGI.startUpgrade.status,{}).then(data=>{var iPercent=parseInt($(data).find("percent").eq(0).text(),10);resolve(iPercent)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_StopUpgrade=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_StopUpgrade().then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_CheckPluginInstall=function(){return true};this.I_CheckPluginVersion=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_CheckUpdate(m_szVersion).then(bFlag=>{resolve(bFlag)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SendHTTPRequest=function(szDeviceIdentify,szURI,options){let oPromise=new Promise(async function(resolve,reject){var httpClient=new HttpPluginClient;var szURL="";var szAuth="";var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex>=0){if("%"===szURI.substr(0,1)){szURI=szURI.substr(8)}var oDeviceInfo=m_deviceSet[iIndex];szURL=oDeviceInfo.szHttpProtocol+oDeviceInfo.szIP+":"+oDeviceInfo.iCGIPort+"/"+szURI;szAuth=oDeviceInfo.szAuth}var newOptions={type:"GET",url:szURL,auth:szAuth,success:null,error:null};m_utilsInc.extend(newOptions,options);httpClient.submitRequest(newOptions).then(function(oRes){if(200===oRes.httpStatusCode){let oData;if(0===oRes.httpResponse.indexOf("{m_pluginOBJECT.JS_ArrangeWindow(iWndType).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetLastError=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_GetLastError().then(data=>{resolve(data)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetWindowStatus=function(iWndIndex){if(m_utilsInc.isUndefined(iWndIndex)){var wndSet=[];m_utilsInc.extend(wndSet,m_wndSet);return wndSet}else{var i=this.findWndIndexByIndex(iWndIndex);if(i!=-1){var wndSet={};m_utilsInc.extend(wndSet,m_wndSet[i]);return wndSet}else{return null}}};this.I_GetIPInfoByMode=function(iMode,szAddress,iPort,szDeviceInfo){return};this.I_SetPlayModeType=function(iMode){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_SetPlayMode(iMode).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SetSnapDrawMode=function(iWndIndex,iMode){let bType=false;if(iMode!==-1){bType=true}let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_SetDrawStatus(bType,iMode).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SetSnapPolygonInfo=function(iWndIndex,szInfo){let oPromise=new Promise((resolve,reject)=>{var aP=[];var oData=m_utilsInc.formatPolygonXmlToJson(szInfo);if(oData.aAddRect.length>0){aP.push(m_pluginOBJECT.JS_SetDrawShapeInfo("Rect",oData.aAddRect[0]))}if(oData.aAddPolygon.length>0){aP.push(m_pluginOBJECT.JS_SetDrawShapeInfo("Polygon",oData.aAddPolygon[0]))}if(oData.aRect.length>0){aP.push(m_pluginOBJECT.JS_SetRectInfo(oData.aRect))}if(oData.aPolygon.length>0){aP.push(m_pluginOBJECT.JS_SetPolygonInfo(oData.aPolygon))}Promise.all(aP).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetSnapPolygonInfo=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{var aP=[];aP.push(m_pluginOBJECT.JS_GetPolygonInfo());aP.push(m_pluginOBJECT.JS_GetRectInfo());Promise.all(aP).then(aData=>{var szXmlData=m_utilsInc.formatPolygonJsonToXml(aData);resolve(szXmlData)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_ClearSnapInfo=function(iWndIndex,aShapes){let oPromise=new Promise((resolve,reject)=>{if(aShapes){var aPolygon=[];var aRect=[];aShapes.forEach(item=>{if(1===item.polygonType){aPolygon.push(item.id)}else{aRect.push(item.id)}var aP=[];if(aPolygon.length){aP.push(m_pluginOBJECT.JS_ClearShapeByType("Polygon",aPolygon))}if(aRect.length){aP.push(m_pluginOBJECT.JS_ClearShapeByType("Rect",aRect))}Promise.all(aP).then(()=>{resolve()},()=>{reject(_oUnKnownError)})})}else{m_pluginOBJECT.JS_ClearShapeByType("AllWindows").then(()=>{resolve()},()=>{reject(_oUnKnownError)})}});return oPromise};this.I_DeviceCapturePic=function(szDeviceIdentify,iChannelID,szPicName,options){return false;var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);var iRet=-1;if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var newOptions={bDateDir:true};m_utilsInc.extend(newOptions,options);if(!m_utilsInc.isUndefined(newOptions.iResolutionWidth)&&!m_utilsInc.isInt(newOptions.iResolutionWidth)){return iRet}if(!m_utilsInc.isUndefined(newOptions.iResolutionHeight)&&!m_utilsInc.isInt(newOptions.iResolutionHeight)){return iRet}iRet=oDeviceInfo.oProtocolInc.deviceCapturePic(oDeviceInfo,iChannelID,szPicName,newOptions)}return iRet};this.I_SetPackageType=function(iPackageType){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_SetPackageType(iPackageType).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetDevicePort=function(szDeviceIdentify){let oPromise=new Promise(async(resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);var oPort=null;if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];try{oPort=await _getPort(oDeviceInfo);resolve(oPort)}catch(err){reject({errorCode:ERROR_CODE_NETWORKERROR,errorMsg:""})}}else{reject(_oNoLoginError)}});return oPromise};this.I_GetTextOverlay=function(szUrl,szDeviceIdentify,options){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var wndInfo=m_wndSet[iIndex];var newOptions={type:"GET",success:options.success,error:options.error};this.I_SendHTTPRequest(oDeviceInfo.szIP+"_"+oDeviceInfo.iCGIPort,szUrl,newOptions).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.findDeviceIndexByIP=function(szDeviceIdentify){if(szDeviceIdentify.indexOf("_")>-1){for(var i=0,iLen=m_deviceSet.length;i0){var szAudioCompressionType=NS.$XML(oNodeList).eq(0).text(),iAudioType=0;if("G.711ulaw"==szAudioCompressionType){iAudioType=1}else if("G.711alaw"==szAudioCompressionType){iAudioType=2}else if("G.726"==szAudioCompressionType){iAudioType=3}else if("MP2L2"==szAudioCompressionType||"MPEL2"==szAudioCompressionType){iAudioType=4}else if("G.722.1"==szAudioCompressionType){iAudioType=0}else if("AAC"==szAudioCompressionType){iAudioType=5}else if("PCM"==szAudioCompressionType){iAudioType=6}else if("MP3"==szAudioCompressionType){iAudioType=7}oDeviceInfo.iAudioType=iAudioType}if(NS.$XML(oData).find("audioBitRate").eq(0).text()!==""){oDeviceInfo.m_iAudioBitRate=parseInt(NS.$XML(oData).find("audioBitRate").eq(0).text(),10)*1e3}else{oDeviceInfo.m_iAudioBitRate=0}if(NS.$XML(oData).find("audioSamplingRate").eq(0).text()!==""){oDeviceInfo.m_iAudioSamplingRate=parseInt(NS.$XML(oData).find("audioSamplingRate").eq(0).text(),10)*1e3}else{oDeviceInfo.m_iAudioSamplingRate=0}if(NS.$XML(oData).find("channelNum").eq(0).text()!==""){oDeviceInfo.m_iSoundChan=parseInt(NS.$XML(oData).find("channelNum").eq(0).text(),10)}else{oDeviceInfo.m_iSoundChan=1}if(NS.$XML(oData).find("deviceCastChannelNum").eq(0).text()!==""){oDeviceInfo.m_iDeviceAudioSoundChan=parseInt(NS.$XML(oData).find("deviceCastChannelNum").eq(0).text(),10)}else{oDeviceInfo.m_iDeviceAudioSoundChan=1}if(options.success){options.success(oData)}resolve(oData)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getAudioInfo,newOptions)});return oPromise};ISAPIProtocol.prototype.getDeviceInfo=function(oDeviceInfo,options){let oPromise=new Promise(function(resolve,reject){var newOptions={};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlDoc){var oData;oDeviceInfo.szDeviceType=NS.$XML(xmlDoc).find("deviceType").eq(0).text();var arrXml=[];arrXml.push("");arrXml.push(""+m_utilsInc.escape(NS.$XML(xmlDoc).find("deviceName").eq(0).text())+"");arrXml.push(""+NS.$XML(xmlDoc).find("deviceID").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("deviceType").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("model").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("serialNumber").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("macAddress").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("firmwareVersion").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("firmwareReleasedDate").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("encoderVersion").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("encoderReleasedDate").eq(0).text()+"");arrXml.push("");oData=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(oData)}resolve(oData)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getDeviceInfo,newOptions)});return oPromise};ISAPIProtocol.prototype.getDeviceMinusLocalTime=function(oDeviceInfo){let oPromise=new Promise(function(resolve,reject){var newOptions={success:xmlDoc=>{var szDeviceTime=$(xmlDoc).find("localTime").eq(0).text().substring(0,19);var arDTms=szDeviceTime.match(/(\d+)-(\d+)-(\d+)(\D+)(\d+):(\d+):(\d+)/);if(arDTms.length!==8){return}var dtDeviceDate=new Date(arDTms[1],arDTms[2]-1,arDTms[3],arDTms[5],arDTms[6],arDTms[7]);var szTimeZone=$(xmlDoc).find("timeZone").eq(0).text();var iDSTTime=0;var iDSTPos=szTimeZone.indexOf("DST");if(iDSTPos!=-1){var dtDSTStart=new Date(dtDeviceDate.getTime());dtDSTStart.setMinutes(0);dtDSTStart.setSeconds(0);var dtDSTStop=new Date(dtDeviceDate.getTime());dtDSTStop.setMinutes(0);dtDSTStop.setSeconds(0);var szDSTStartTime=szTimeZone.split(",")[1];var szDSTStopTime=szTimeZone.split(",")[2];var iDSTStartMonth=parseInt(szDSTStartTime.split(".")[0].replace("M",""),10);dtDSTStart.setMonth(iDSTStartMonth-1);var iDSTStartWeek=parseInt(szDSTStartTime.split(".")[1],10);var iDSTStartDay=parseInt(szDSTStartTime.split(".")[2].split("/")[0]);var iDSTStartTime=parseInt(szDSTStartTime.split(".")[2].split("/")[1].split(":")[0],10);dtDSTStart.setHours(iDSTStartTime);var iTime=0;var iDate=0;for(var i=1;i<=31;i++){dtDSTStart.setDate(i);if(dtDSTStart.getMonth()!==iDSTStartMonth-1){break}if(dtDSTStart.getDay()==iDSTStartDay){iTime++;iDate=i;if(iTime==iDSTStartWeek){break}}}dtDSTStart.setDate(iDate);dtDSTStart.setMonth(iDSTStartMonth-1);var iDSTStopMonth=parseInt(szDSTStopTime.split(".")[0].replace("M",""),10);dtDSTStop.setMonth(iDSTStopMonth-1);var iDSTStopWeek=parseInt(szDSTStopTime.split(".")[1],10);var iDSTStopDay=parseInt(szDSTStopTime.split(".")[2].split("/")[0]);var iDSTStopTime=parseInt(szDSTStopTime.split(".")[2].split("/")[1].split(":")[0],10);dtDSTStop.setHours(iDSTStopTime);iTime=0;iDate=0;for(var i=1;i<=31;i++){dtDSTStop.setDate(i);if(dtDSTStop.getMonth()!==iDSTStopMonth-1){break}if(dtDSTStop.getDay()==iDSTStopDay){iTime++;iDate=i;if(iTime==iDSTStopWeek){break}}}dtDSTStop.setDate(iDate);dtDSTStop.setMonth(iDSTStopMonth-1);if(dtDSTStart.getTime()=dtDSTStart.getTime()&&dtDeviceDate.getTime()<=dtDSTStop.getTime()){var szDSTTime=szTimeZone.substring(iDSTPos+3,iDSTPos+11);iDSTTime=parseInt(szDSTTime.split(":")[0],10)*60+parseInt(szDSTTime.split(":")[1],10)}}else{if(dtDeviceDate.getTime()>=dtDSTStart.getTime()||dtDeviceDate.getTime()<=dtDSTStop.getTime()){var szDSTTime=szTimeZone.substring(iDSTPos+3,iDSTPos+11);iDSTTime=parseInt(szDSTTime.split(":")[0],10)*60+parseInt(szDSTTime.split(":")[1],10)}}}var arDTZms=szTimeZone.match(/\D+([+-])(\d+):(\d+):(\d+)/);if(arDTZms.length==5){var dtNow=new Date;var iLocalOffsetMin=dtNow.getTimezoneOffset();var iDeviceOffsetMin=parseInt(arDTZms[2])*60+parseInt(arDTZms[3]);iDeviceOffsetMin=arDTZms[1]==="+"?iDeviceOffsetMin:-iDeviceOffsetMin;iDeviceMinusLocalTime=(iLocalOffsetMin-iDeviceOffsetMin+iDSTTime)*60*1e3}oDeviceInfo.iDeviceMinusLocalTime=iDeviceMinusLocalTime;resolve(iDeviceMinusLocalTime)},error:()=>{reject()}};m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.time,newOptions)});return oPromise};ISAPIProtocol.prototype.getAnalogChannelInfo=function(oDeviceInfo,options){let oPromise=new Promise(function(resolve,reject){var newOptions={};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlData){var arrXml=[];arrXml.push("");var nodeList=NS.$XML(xmlData).find("VideoInputChannel",true);oDeviceInfo.iAnalogChannelNum=nodeList.length;for(var i=0,iLen=nodeList.length;i");arrXml.push(""+NS.$XML(node).find("id").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("inputPort").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(NS.$XML(node).find("name").eq(0).text())+"");arrXml.push(""+NS.$XML(node).find("videoFormat").eq(0).text()+"");arrXml.push("")}arrXml.push("");var xmlDoc=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(xmlDoc)}resolve(xmlDoc)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getAnalogChannelInfo,newOptions)});return oPromise};ISAPIProtocol.prototype.getDigitalChannel=function(oDeviceInfo,options){let oPromise=new Promise(function(resolve,reject){var newOptions={};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlData){var arrXml=[];arrXml.push("");var nodeList=NS.$XML(xmlData).find("InputProxyChannel",true);for(var i=0,iLen=nodeList.length;i");arrXml.push(""+NS.$XML(node).find("id").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(NS.$XML(node).find("name").eq(0).text())+"");arrXml.push("")}arrXml.push("");var xmlDoc=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(xmlDoc)}resolve(xmlDoc)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getDigitalChannel,newOptions)});return oPromise};ISAPIProtocol.prototype.getDigitalChannelInfo=function(oDeviceInfo,options){let oPromise=new Promise(async(resolve,reject)=>{var oDigitalChannelXML=null,oDigitalChannelName={};try{oDigitalChannelXML=await m_ISAPIProtocol.getDigitalChannel(oDeviceInfo,{})}catch(oError){reject(oError)}var nodeList=NS.$XML(oDigitalChannelXML).find("InputProxyChannel",true);for(var i=0,iLen=nodeList.length;i");var nodeList=NS.$XML(xmlData).find("InputProxyChannelStatus",true);for(var i=0,iLen=nodeList.length;i");arrXml.push(""+szId+"");arrXml.push("");arrXml.push(""+NS.$XML(node).find("proxyProtocol").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("addressingFormatType").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("ipAddress").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("managePortNo").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("srcInputPort").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(NS.$XML(node).find("userName").eq(0).text())+"");arrXml.push(""+NS.$XML(node).find("streamType").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("online").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(oDigitalChannelName[szId])+"");arrXml.push("");arrXml.push("")}arrXml.push("");var xmlDoc=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(xmlDoc)}resolve(xmlDoc)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getDigitalChannelInfo,newOptions)});return oPromise};ISAPIProtocol.prototype.getZeroChannelInfo=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getZeroChannelInfo,options)};ISAPIProtocol.prototype.getStreamChannels=function(oDeviceInfo,options){if(oDeviceInfo.iAnalogChannelNum!=0){var url=m_utilsInc.formatString(this.CGI.getStreamChannels.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort)}else{var url=m_utilsInc.formatString(this.CGI.getStreamChannels.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort)}let szURI;if(oDeviceInfo.iAnalogChannelNum!=0){szURI=this.CGI.getStreamChannels.analog}else{szURI=this.CGI.getStreamChannels.digital}return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,szURI,options)};ISAPIProtocol.prototype.getPPPoEStatus=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getPPPoEStatus,options)};ISAPIProtocol.prototype.getUPnPPortStatus=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getUPnPPortStatus,options)};ISAPIProtocol.prototype.getNetworkBond=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getNetworkBond,options)};ISAPIProtocol.prototype.getNetworkInterface=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getNetworkInterface,options)};ISAPIProtocol.prototype.getPortInfo=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getPortInfo,options)};ISAPIProtocol.prototype.startRealPlay=function(oDeviceInfo,options){let oPromise=new Promise(async function(resolve,reject){var iChannelID=options.iChannelID*100+options.iStreamType,szUrl="";var szRtspIP=m_utilsInc.delPort(oDeviceInfo.szIP);var iRtspPort=oDeviceInfo.iRtspPort;if(options.iPort){iRtspPort=options.iPort}if(options.bZeroChannel){szUrl=m_utilsInc.formatString(oDeviceInfo.oProtocolInc.CGI.startRealPlay.zeroChannels,szRtspIP,iRtspPort,iChannelID)}else{szUrl=m_utilsInc.formatString(oDeviceInfo.oProtocolInc.CGI.startRealPlay.channels,szRtspIP,iRtspPort,iChannelID)}var addToWndSet=function(){var wndInfo=new wndInfoClass;wndInfo.iIndex=options.iWndIndex;wndInfo.szIP=oDeviceInfo.szIP;wndInfo.iCGIPort=oDeviceInfo.iCGIPort;wndInfo.szDeviceIdentify=oDeviceInfo.szDeviceIdentify;wndInfo.iChannelID=options.iChannelID;wndInfo.iPlayStatus=PLAY_STATUS_REALPLAY;m_wndSet.push(wndInfo)};await m_pluginOBJECT.JS_SetSecretKey(0,m_oLocalCfg.secretKey,1);m_pluginOBJECT.JS_Play(szUrl,{auth:oDeviceInfo.szAuth,userInfo:oDeviceInfo.szAuth},options.iWndIndex,"","",options.bFlag).then(()=>{addToWndSet();resolve()},()=>{reject()})});return oPromise};ISAPIProtocol.prototype.startPlay=function(oDeviceInfo,options){let oPromise=new Promise(async function(resolve,reject){var addToWndSet=function(){var wndInfo=new wndInfoClass;wndInfo.iIndex=options.iWndIndex;wndInfo.szIP=oDeviceInfo.szIP;wndInfo.szDeviceIdentify=oDeviceInfo.szDeviceIdentify;wndInfo.iPlayStatus=PLAY_STATUS_PLAYBACK;m_wndSet.push(wndInfo)};m_pluginOBJECT.JS_Play(options.szUrl,{auth:oDeviceInfo.szAuth,userInfo:oDeviceInfo.szAuth},options.iWndIndex,options.startTime,options.endTime,true).then(()=>{addToWndSet();resolve()},()=>{reject()})});return oPromise};ISAPIProtocol.prototype.startVoiceTalk=function(oDeviceInfo,iAudioChannel){var szOpenUrl=m_utilsInc.formatString(this.CGI.startVoiceTalk.open,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,iAudioChannel),szCloseUrl=m_utilsInc.formatString(this.CGI.startVoiceTalk.close,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,iAudioChannel),szAudioDataUrl=m_utilsInc.formatString(this.CGI.startVoiceTalk.audioData,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,iAudioChannel);return m_pluginOBJECT.JS_StartTalk(szOpenUrl,szCloseUrl,szAudioDataUrl,oDeviceInfo.szAuth,oDeviceInfo.iAudioType,oDeviceInfo.m_iAudioBitRate,oDeviceInfo.m_iAudioSamplingRate,oDeviceInfo.m_iSoundChan,oDeviceInfo.m_iDeviceAudioSoundChan)};ISAPIProtocol.prototype.audioPlay=function(options){return m_pluginOBJECT.JS_AudioPlay(options.szUrl,options.szAuth,-1,-1,true,options.iAudioType)};ISAPIProtocol.prototype.ptzAutoControl=function(oDeviceInfo,bStop,oWndInfo,options){let oPromise=new Promise((resolve,reject)=>{var iChannelID=oWndInfo.iChannelID,szUrl="",szData="";options.iPTZSpeed=options.iPTZSpeed<7?options.iPTZSpeed*15:100;if(bStop){options.iPTZSpeed=0}if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(m_ISAPIProtocol.CGI.ptzAutoControl.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}else{szUrl=m_utilsInc.formatString(m_ISAPIProtocol.CGI.ptzAutoControl.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}szData=""+""+""+options.iPTZSpeed+""+"";var newOptions={type:"PUT",url:szUrl,data:szData,success:null,error:null};var self=this;m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(){oWndInfo.bPTZAuto=!oWndInfo.bPTZAuto;if(options.success){options.success()}resolve()},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)});return oPromise};ISAPIProtocol.prototype.ptzControl=function(oDeviceInfo,bStop,oWndInfo,options){var iChannelID=oWndInfo.iChannelID,szUrl="";if(oWndInfo.bPTZAuto){this.ptzAutoControl(oDeviceInfo,true,oWndInfo,{iPTZSpeed:0})}if(bStop){options.iPTZSpeed=0}else{options.iPTZSpeed=options.iPTZSpeed<7?options.iPTZSpeed*15:100}var oDirection=[{},{pan:0,tilt:options.iPTZSpeed},{pan:0,tilt:-options.iPTZSpeed},{pan:-options.iPTZSpeed,tilt:0},{pan:options.iPTZSpeed,tilt:0},{pan:-options.iPTZSpeed,tilt:options.iPTZSpeed},{pan:-options.iPTZSpeed,tilt:-options.iPTZSpeed},{pan:options.iPTZSpeed,tilt:options.iPTZSpeed},{pan:options.iPTZSpeed,tilt:-options.iPTZSpeed},{},{speed:options.iPTZSpeed},{speed:-options.iPTZSpeed},{speed:options.iPTZSpeed},{speed:-options.iPTZSpeed},{speed:options.iPTZSpeed},{speed:-options.iPTZSpeed}];var szData="";var oCommond={};switch(options.iPTZIndex){case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:oCommond=this.CGI.ptzControl;szData=""+""+""+oDirection[options.iPTZIndex].pan+""+""+oDirection[options.iPTZIndex].tilt+""+"";break;case 10:case 11:oCommond=this.CGI.ptzControl;szData=""+""+""+oDirection[options.iPTZIndex].speed+""+"";break;case 12:case 13:oCommond=this.CGI.ptzFocus;szData=""+""+""+oDirection[options.iPTZIndex].speed+""+"";break;case 14:case 15:oCommond=this.CGI.ptzIris;szData=""+""+""+oDirection[options.iPTZIndex].speed+""+"";break;default:return}if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(oCommond.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}else{szUrl=m_utilsInc.formatString(oCommond.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}var newOptions={type:"PUT",url:szUrl,data:szData,success:null,error:null};m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.setPreset=function(oDeviceInfo,oWndInfo,options){var iChannelID=oWndInfo.iChannelID,szUrl="",szData="";if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(this.CGI.setPreset.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID,options.iPresetID)}else{szUrl=m_utilsInc.formatString(this.CGI.setPreset.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID,options.iPresetID)}szData="";szData+="";szData+=""+options.iPresetID+"";if(oDeviceInfo.szDeviceType!=DEVICE_TYPE_IPDOME){szData+=""+"Preset"+options.iPresetID+""}szData+="";var newOptions={type:"PUT",url:szUrl,data:szData,success:null,error:null};m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.goPreset=function(oDeviceInfo,oWndInfo,options){var iChannelID=oWndInfo.iChannelID,szUrl="";if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(this.CGI.goPreset.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID,options.iPresetID)}else{szUrl=m_utilsInc.formatString(this.CGI.goPreset.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID,options.iPresetID)}var newOptions={type:"PUT",url:szUrl,success:null,error:null};m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.recordSearch=function(oDeviceInfo,options){let oPromise=new Promise((resolve,reject)=>{var szUrl="",szData="",iChannelID=options.iChannelID,iStreamType=options.iStreamType,szStartTime=options.szStartTime.replace(" ","T")+"Z",szEndTime=options.szEndTime.replace(" ","T")+"Z";szUrl=m_utilsInc.formatString(m_ISAPIProtocol.CGI.recordSearch,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);szData=""+""+""+new UUID+""+""+(iChannelID*100+iStreamType)+""+""+""+""+szStartTime+""+""+szEndTime+""+""+""+"50"+""+options.iSearchPos+""+""+"//metadata.ISAPI.org/VideoMotion"+""+"";var httpClient=new HttpPluginClient;var newOptions={type:"POST",url:szUrl,data:szData,success:null,error:null};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlDoc){var arrXml=[];arrXml.push("");arrXml.push(""+NS.$XML(xmlDoc).find("responseStatus").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("responseStatusStrg").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("numOfMatches").eq(0).text()+"");arrXml.push("");var nodeList=NS.$XML(xmlDoc).find("searchMatchItem",true);for(var i=0,iLen=nodeList.length;i");arrXml.push(""+NS.$XML(node).find("trackID").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("startTime").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("endTime").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(NS.$XML(node).find("playbackURI").eq(0).text())+"");arrXml.push(""+NS.$XML(node).find("metadataDescriptor").eq(0).text().split("/")[1]+"");arrXml.push("")}arrXml.push("");arrXml.push("");xmlDoc=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(xmlDoc)}resolve(xmlDoc)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)});return oPromise};ISAPIProtocol.prototype.startPlayback=function(oDeviceInfo,options){let oPromise=new Promise(async function(resolve,reject){var iWndIndex=options.iWndIndex,szUrl="",szStartTime=options.szStartTime,szEndTime=options.szEndTime;var szRtspIP=m_utilsInc.delPort(oDeviceInfo.szIP);var iRtspPort=oDeviceInfo.iRtspPort;if(options.iPort){iRtspPort=options.iPort}szUrl=m_utilsInc.formatString(options.cgi,szRtspIP,iRtspPort,options.iChannelID);if(!m_utilsInc.isUndefined(options.oTransCodeParam)){var szTransStreamXml=_generateTransCodeXml(options.oTransCodeParam);if(""==szTransStreamXml){return-1}m_pluginOBJECT.JS_SetTrsPlayBackParam(iWndIndex,szTransStreamXml)}var addToWndSet=function(){var wndInfo=new wndInfoClass;wndInfo.iIndex=iWndIndex;wndInfo.szIP=oDeviceInfo.szIP;wndInfo.iCGIPort=oDeviceInfo.iCGIPort;wndInfo.szDeviceIdentify=oDeviceInfo.szDeviceIdentify;wndInfo.iChannelID=options.iChannelID;wndInfo.iPlayStatus=PLAY_STATUS_PLAYBACK;m_wndSet.push(wndInfo)};m_pluginOBJECT.JS_Play(szUrl,{auth:oDeviceInfo.szAuth,userInfo:oDeviceInfo.szAuth},iWndIndex,szStartTime,szEndTime,options.bFlag).then(()=>{addToWndSet();resolve()},()=>{reject()})});return oPromise};ISAPIProtocol.prototype.reversePlayback=function(oDeviceInfo,options){let oPromise=new Promise(function(resolve,reject){var iWndIndex=options.iWndIndex,szStartTime=options.szStartTime,szEndTime=options.szEndTime;var szRtspIP=m_utilsInc.delPort(oDeviceInfo.szIP);var iRtspPort=oDeviceInfo.iRtspPort;if(options.iPort){iRtspPort=options.iPort}var szUrl=m_utilsInc.formatString(options.cgi,szRtspIP,iRtspPort,options.iChannelID);m_pluginOBJECT.JS_ReversePlay(szUrl,{auth:oDeviceInfo.szAuth,userInfo:oDeviceInfo.szAuth},iWndIndex,szStartTime,szEndTime).then(()=>{var wndInfo=new wndInfoClass;wndInfo.iIndex=iWndIndex;wndInfo.szIP=oDeviceInfo.szIP;wndInfo.iCGIPort=oDeviceInfo.iCGIPort;wndInfo.szDeviceIdentify=oDeviceInfo.szDeviceIdentify;wndInfo.iChannelID=options.iChannelID;wndInfo.iPlayStatus=PLAY_STATUS_REVERSE_PLAYBACK;m_wndSet.push(wndInfo);resolve()},()=>{reject()})});return oPromise};ISAPIProtocol.prototype.startDownloadRecord=function(oDeviceInfo,options){var szUrl=m_utilsInc.formatString(this.CGI.startDownloadRecord,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);var szDownXml=""+""+""+m_utilsInc.escape(options.szPlaybackURI)+""+"";return m_pluginOBJECT.JS_StartAsyncDownload(szUrl,oDeviceInfo.szAuth,options.szFileName,szDownXml,options.bDateDir)};ISAPIProtocol.prototype.exportDeviceConfig=function(oDeviceInfo){var szUrl=m_utilsInc.formatString(this.CGI.downloaddeviceConfig,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);return m_pluginOBJECT.JS_DownloadFile(szUrl,oDeviceInfo.szAuth,"",0)};ISAPIProtocol.prototype.importDeviceConfig=function(oDeviceInfo,options){var szUrl=m_utilsInc.formatString(this.CGI.uploaddeviceConfig,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);return m_pluginOBJECT.JS_StartAsynUpload(szUrl,"",oDeviceInfo.szAuth,options.szFileName,0)};ISAPIProtocol.prototype.restart=function(oDeviceInfo,options){var newOptions={type:"PUT",success:null,error:null};return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.restart,newOptions)};ISAPIProtocol.prototype.restore=function(oDeviceInfo,szMode,options){var szUrl=m_utilsInc.formatString(this.CGI.restore,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,szMode);var newOptions={type:"PUT",url:szUrl,success:null,error:null};return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.startUpgrade=function(oDeviceInfo,szFileName){var szUpgradeURL=m_utilsInc.formatString(this.CGI.startUpgrade.upgrade,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort),szStatusURL=m_utilsInc.formatString(this.CGI.startUpgrade.status,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);return m_pluginOBJECT.JS_StartUpgrade(szUpgradeURL,"",oDeviceInfo.szAuth,szFileName)};ISAPIProtocol.prototype.set3DZoom=function(oDeviceInfo,oWndInfo,oPoints,options){var iChannelID=oWndInfo.iChannelID,szUrl="";if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(this.CGI.set3DZoom.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}else{szUrl=m_utilsInc.formatString(this.CGI.set3DZoom.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}if(oPoints[0][0]===0&&oPoints[0][1]===0&&!(oPoints[2][0]===0&&oPoints[2][1]===0)){oPoints[0][0]=oPoints[2][0];oPoints[0][1]=oPoints[2][1]}var szXml=""+""+parseInt(oPoints[0][0]*255,10)+""+""+(255-parseInt(oPoints[0][1]*255,10))+""+""+parseInt(oPoints[2][0]*255,10)+""+""+(255-parseInt(oPoints[2][1]*255,10))+"";var httpClient=new HttpPluginClient;var newOptions={type:"PUT",url:szUrl,data:szXml,success:null,error:null};m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.getSDKCapa=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.SDKCapabilities,options)};ISAPIProtocol.prototype.deviceCapturePic=function(oDeviceInfo,iChannelID,szPicName,options){var iChannelID=iChannelID*100+1;var iRet=-1;var szUrl=m_utilsInc.formatString(this.CGI.deviceCapture.channels,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,iChannelID);var aQuery=[];if(m_utilsInc.isInt(options.iResolutionWidth)){aQuery.push("videoResolutionWidth="+options.iResolutionWidth)}if(m_utilsInc.isInt(options.iResolutionHeight)){aQuery.push("videoResolutionHeight="+options.iResolutionHeight)}if(aQuery.length>0){szUrl+="?"+aQuery.join("&")}var JDeviceCapturePic=function(szUrl,szFileName){var szFileFormat=".jpg";$("body").append('');$("#jsplugin_download_li").trigger("click");$("#jsplugin_download_a").remove();return 0};iRet=JDeviceCapturePic(szUrl,szPicName);return iRet};ISAPIProtocol.prototype.digestLogin=function(szIP,iProtocol,iPort,szUserName,szPassword,options){var szHttpProtocol="";if(iProtocol==2){szHttpProtocol="https://"}else{szHttpProtocol="http://"}var szUrl=m_utilsInc.formatString(this.CGI.login,szHttpProtocol,szIP,iPort);var newOptions={type:"GET",url:szUrl,auth:m_utilsInc.Base64.encode(":"+szUserName+":"+szPassword),success:null,error:null};var szDeviceIdentify=szIP+"_"+iPort;m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.getSystemCapa=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.systemCapabilities,options)};(function(wvc){var XML=function(xd){this.elems=[];this.length=0;this.length=this.elems.push(xd)};XML.prototype.find=function(szNodeName,bRet){var oXmlNode=this.elems[this.length-1]?this.elems[this.length-1].getElementsByTagName(szNodeName):[];this.length=this.elems.push(oXmlNode);if(bRet){return oXmlNode}else{return this}};XML.prototype.eq=function(i,bRet){var iLen=this.elems[this.length-1].length,oXmlNode=null;if(iLen>0&&i0&&match[1].indexOf("trident")>-1){match[1]="msie"}var oBrowser={};oBrowser[match[1]]=true;oBrowser.version=match[2];return oBrowser};Utils.prototype.loadXML=function(szXml){if(null==szXml||""==szXml){return null}var oXmlDoc=null;if(window.DOMParser){var oParser=new DOMParser;oXmlDoc=oParser.parseFromString(szXml,"text/xml")}else{oXmlDoc=new ActiveXObject("Microsoft.XMLDOM");oXmlDoc.async=false;oXmlDoc.loadXML(szXml)}return oXmlDoc};Utils.prototype.toXMLStr=function(oXmlDoc){var szXmlDoc="";try{var oSerializer=new XMLSerializer;szXmlDoc=oSerializer.serializeToString(oXmlDoc)}catch(e){try{szXmlDoc=oXmlDoc.xml}catch(e){return""}}if(szXmlDoc.indexOf(""+szXmlDoc}return szXmlDoc};Utils.prototype.escape=function(szStr){if(szStr){return szStr.replace(/&/g,"&").replace(//g,">")}return szStr};Utils.prototype.dateFormat=function(oDate,fmt){var o={"M+":oDate.getMonth()+1,"d+":oDate.getDate(),"h+":oDate.getHours(),"m+":oDate.getMinutes(),"s+":oDate.getSeconds(),"q+":Math.floor((oDate.getMonth()+3)/3),S:oDate.getMilliseconds()};if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1,(oDate.getFullYear()+"").substr(4-RegExp.$1.length))}for(var k in o){if(new RegExp("("+k+")").test(fmt)){fmt=fmt.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length))}}return fmt};Utils.prototype.Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Utils.prototype.Base64._utf8_encode(input);while(i>2;enc2=(chr1&3)<<4|chr2>>4;enc3=(chr2&15)<<2|chr3>>6;enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else if(isNaN(chr3)){enc4=64}output=output+this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4)}return output},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2)}if(enc4!=64){output=output+String.fromCharCode(chr3)}}output=Utils.prototype.Base64._utf8_decode(output);return output},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n127&&c<2048){utftext+=String.fromCharCode(c>>6|192);utftext+=String.fromCharCode(c&63|128)}else{utftext+=String.fromCharCode(c>>12|224);utftext+=String.fromCharCode(c>>6&63|128);utftext+=String.fromCharCode(c&63|128)}}return utftext},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i191&&c<224){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode((c&31)<<6|c2&63);i+=2}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode((c&15)<<12|(c2&63)<<6|c3&63);i+=3}}return string}};Utils.prototype.createEventScript=function(szFor,szEvent,szHtml){var oScript=document.createElement("script");oScript.htmlFor=szFor;oScript.event=szEvent;oScript.innerHTML=szHtml;document.body.parentNode.appendChild(oScript)};Utils.prototype.isInt=function(str){return/^\d+$/.test(str)};Utils.prototype.getDirName=function(){var szDirName="";if(m_options.szBasePath!==""){szDirName=m_options.szBasePath}else{var szDirNameRegex=/[^?#]*\//;var oScript=document.getElementById("videonode");if(oScript){szDirName=oScript.src.match(szDirNameRegex)[0]}else{var aScript=document.scripts;for(var i=0,iLen=aScript.length;i-1){oScript=aScript[i];break}}if(oScript){szDirName=oScript.src.match(szDirNameRegex)[0]}}}return szDirName};Utils.prototype.loadScript=function(url,callback){var oScript=document.createElement("script");oScript.type="text/javascript";oScript.onload=function(){callback()};oScript.src=url;document.getElementsByTagName("head")[0].appendChild(oScript)};Utils.prototype.cookie=function(key,value,options){if(arguments.length>1&&(value===null||typeof value!=="object")){options=this.extend({},options);if(value===null){options.expires=-1}if(typeof options.expires==="number"){var days=options.expires,t=options.expires=new Date;t.setDate(t.getDate()+days)}return document.cookie=[encodeURIComponent(key),"=",options.raw?String(value):encodeURIComponent(String(value)),options.expires?"; expires="+options.expires.toUTCString():"",options.path?"; path="+options.path:"; path=/",options.domain?"; domain="+options.domain:"",options.secure?"; secure":""].join("")}options=value||{};var result,decode=options.raw?function(s){return s}:decodeURIComponent;return(result=new RegExp("(?:^|; )"+encodeURIComponent(key)+"=([^;]*)").exec(document.cookie))?decode(result[1]):null};Utils.prototype.isUndefined=function(o){return typeof o==="undefined"};Utils.prototype.isObject=function(o){return Object.prototype.toString.call(o)==="[object Object]"};Utils.prototype.delPort=function(szIP){var iPos=szIP.indexOf(":");if(iPos>-1){return szIP.substring(0,iPos)}else{return szIP}};Utils.prototype.formatString=function(){var string=arguments[0];for(var i=1;i/g,">")}else{return""}};Utils.prototype.formatPolygonXmlToJson=function(szXml){var oXml=this.loadXML(szXml);var aPolygonList=[];var aPoints=[];var aRect=[];var aAddPolygon=[];var aAddRect=[];var oData;function colorTransfer(szColor){var iValue=parseInt(szColor,10);var szValue=iValue.toString(16);szValue="0"+szValue;return szValue.substring(szValue.length-2)}$(oXml).find("SnapPolygon").each(function(){var iEditType=parseInt($(this).find("EditType, editType").text(),10)||0;var isClose=$(this).find("isClosed").text()==="true";var iPolygonType=parseInt($(this).find("polygonType").text(),10);var fShowSquare=parseFloat($(this).find("showSquare").text())||0;var szTips=$(this).find("tips").text()||$(this).find("Tips").text();var iTipsPos=parseInt($(this).find("tipsPos").text(),10)||0;var bShowWH=$(this).find("showWH").text()==="true";var szColor="#"+colorTransfer($(this).find("r").text())+colorTransfer($(this).find("g").text())+colorTransfer($(this).find("b").text());var iMaxPoint=parseInt($(this).find("PointNumMax").text(),10)-1;var iMinPoint=parseInt($(this).find("MinClosed").text(),10)-1;var iId=parseInt($(this).find("id").text(),10);var iRedrawMode=parseInt($(this).find("RedrawMode").text(),10)||0;if($(this).find("pointList").find("point").length===0){if(iPolygonType===1){aAddPolygon.push({id:iId,tips:szTips,drawColor:szColor,translucent:.1,maxShapeSupport:1,maxPointSupport:iMaxPoint,minPointSupport:iMinPoint,showWH:bShowWH,redrawMode:iRedrawMode})}else if(iPolygonType===0){aAddRect.push({id:iId,tips:szTips,drawColor:szColor,translucent:.1,widthHeightRate:fShowSquare,maxShapeSupport:1,type:1,redrawMode:iRedrawMode,tipsPos:iTipsPos})}}else{aPoints=[];$(this).find("pointList").find("point").each(function(){aPoints.push([parseFloat($(this).find("x").text()),parseFloat($(this).find("y").text())])});oData={id:iId,editType:iEditType,points:aPoints,closed:isClose,tips:szTips,drawColor:szColor,maxPointSupport:iMaxPoint,minPointSupport:iMinPoint,translucent:.1,redrawMode:iRedrawMode};if(iPolygonType===1){oData["showWH"]=bShowWH;aPolygonList.push(oData)}else if(iPolygonType===0){oData["widthHeightRate"]=fShowSquare;oData["type"]=1;oData.tipsPos=iTipsPos;aRect.push(oData)}}});return{aRect:aRect,aPolygon:aPolygonList,aAddRect:aAddRect,aAddPolygon:aAddPolygon}};Utils.prototype.formatPolygonJsonToXml=function(aData){function colorRgb(szHex){var sColor=szHex.toLowerCase();var reg=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;if(sColor&®.test(sColor)){var i;if(sColor.length===4){var sColorNew="#";for(i=1;i<4;i+=1){sColorNew+=sColor.slice(i,i+1).concat(sColor.slice(i,i+1))}sColor=sColorNew}var aColorChange=[];for(i=1;i<7;i+=2){aColorChange.push(parseInt("0x"+sColor.slice(i,i+2),16))}return aColorChange}return[0,0,0]}var aPolygon=aData[0];var aRect=aData[1];var szXml="";var that=this;$.each(aPolygon,function(index,oVal){var aColor=[0,0,0];if(oVal.drawColor){aColor=colorRgb(oVal.drawColor)}else{aColor=colorRgb("#FF0000")}szXml+="";szXml+=""+oVal.id+"";oVal.tips=that.encodeString(oVal.tips);if(!oVal.tips){szXml+=""}else{szXml+=""+oVal.tips+""}szXml+=""+oVal.closed.toString()+"";szXml+=""+aColor[0]+""+aColor[1]+""+aColor[2]+"";szXml+="1";szXml+=""+(oVal.pointNumMax?oVal.pointNumMax:10)+"";szXml+=""+(oVal.minClosed?oVal.minClosed:4)+"";szXml+="";$.each(oVal.points,function(i,aVal){szXml+=""+aVal[0]+""+aVal[1]+""});szXml+="";szXml+=""});$.each(aRect,function(index,oVal){var aColor=[0,0,0];if(oVal.drawColor){aColor=colorRgb(oVal.drawColor)}else{aColor=colorRgb("#FF0000")}szXml+="";szXml+=""+oVal.id+"";szXml+=""+aColor[0]+""+aColor[1]+""+aColor[2]+"";szXml+="0";oVal.tips=that.encodeString(oVal.tips);if(!oVal.tips){szXml+=""}else{szXml+=""+oVal.tips+""}if(typeof oVal.closed!=="undefined"&&oVal.closed!==null){szXml+=""+oVal.closed.toString()+""}else{szXml+="true"}szXml+="";var aRectTmp=[];if(oVal.points.length){var iMinX=2;var iMaxX=-1;var iMinY=2;var iMaxY=-1;$.each(oVal.points,function(){if(iMinX>this[0]){iMinX=this[0]}if(iMinY>this[1]){iMinY=this[1]}if(iMaxX"+aVal[0]+""+aVal[1]+""});szXml+="";szXml+=""});szXml+="";return szXml};Utils.prototype.convertToUTCTime=function(szLocalTime,szFormat){if(typeof szFormat=="undefined"){szFormat="yyyy-MM-dd hh:mm:ss"}szLocalTime=szLocalTime.replace("T"," ").replace("Z","");var _dLocalDate=new Date(Date.parse(szLocalTime.replace(/-/g,"/")));_dLocalDate=this.utcDateFormat(_dLocalDate,szFormat);_dLocalDate=_dLocalDate.replace(" ","T");return _dLocalDate};Utils.prototype.utcDateFormat=function(oDate,fmt){var o={"M+":oDate.getUTCMonth()+1,"d+":oDate.getUTCDate(),"h+":oDate.getUTCHours(),"m+":oDate.getUTCMinutes(),"s+":oDate.getUTCSeconds(),"q+":Math.floor((oDate.getUTCMonth()+3)/3),S:oDate.getUTCMilliseconds()};if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1,(oDate.getUTCFullYear()+"").substr(4-RegExp.$1.length))}for(var k in o){if(new RegExp("("+k+")").test(fmt)){fmt=fmt.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length))}}return fmt};Utils.prototype.convertToLocalTime=function(szUTCTime,iDiffTime){szUTCTime=szUTCTime.replace("T"," ").replace("Z","");if(typeof iDiffTime=="undefined"){iDiffTime=0}var szFormat="yyyy-MM-dd hh:mm:ss";var _aDate=szUTCTime.split(" ")[0].split("-");var _iFullYear=parseInt(_aDate[0],10);var _iMonth=parseInt(_aDate[1],10)-1;var _iDay=parseInt(_aDate[2],10);var _aTimes=szUTCTime.split(" ")[1].split(":");var _iHour=parseInt(_aTimes[0],10);var _iMinute=parseInt(_aTimes[1],10);var _iSecond=parseInt(_aTimes[2],10);var _dLocalDate=new Date(Date.UTC(_iFullYear,_iMonth,_iDay,_iHour,_iMinute,_iSecond));_dLocalDate.setTime(_dLocalDate.getTime()+iDiffTime);return this.dateFormat(_dLocalDate,szFormat).replace(" ","T")+"Z"};function UUID(){this.id=this.createUUID()}UUID.prototype.valueOf=function(){return this.id};UUID.prototype.toString=function(){return this.id};UUID.prototype.createUUID=function(){var dg=new Date(1582,10,15,0,0,0,0);var dc=new Date;var t=dc.getTime()-dg.getTime();var h="-";var tl=UUID.getIntegerBits(t,0,31);var tm=UUID.getIntegerBits(t,32,47);var thv=UUID.getIntegerBits(t,48,59)+"1";var csar=UUID.getIntegerBits(UUID.rand(4095),0,7);var csl=UUID.getIntegerBits(UUID.rand(4095),0,7);var n=UUID.getIntegerBits(UUID.rand(8191),0,7)+UUID.getIntegerBits(UUID.rand(8191),8,15)+UUID.getIntegerBits(UUID.rand(8191),0,7)+UUID.getIntegerBits(UUID.rand(8191),8,15)+UUID.getIntegerBits(UUID.rand(8191),0,15);return tl+h+tm+h+thv+h+csar+csl+h+n};UUID.getIntegerBits=function(val,start,end){var base16=UUID.returnBase(val,16);var quadArray=new Array;var quadString="";var i=0;for(i=0;i=base)var output=this.returnBase(MSD,base)+convert[LSD];else var output=convert[MSD]+convert[LSD]}return output};UUID.rand=function(max){return Math.floor(Math.random()*max)};m_ISAPIProtocol=new ISAPIProtocol;m_utilsInc=new Utils;return this}();var NS=window.WebVideoCtrl=WebVideoCtrl;NS.version="3.3.0"})(this);if("object"===typeof exports&&typeof module!=="undefined"){}else if("function"===typeof define&&define.amd){define(function(){return WebVideoCtrl})}else if("function"===typeof define&&define.cmd){define(function(require,exports,module){module.exports=WebVideoCtrl})}else{}
\ No newline at end of file
diff --git a/haiwei-admin/src/main/resources/templates/board/board1.html b/haiwei-admin/src/main/resources/templates/board/board1.html
index 3587998..72d9cc8 100644
--- a/haiwei-admin/src/main/resources/templates/board/board1.html
+++ b/haiwei-admin/src/main/resources/templates/board/board1.html
@@ -236,7 +236,7 @@
-
diff --git a/haiwei-admin/src/main/resources/templates/board/monitoring1.html b/haiwei-admin/src/main/resources/templates/board/monitoring1.html
index 1f222b6..5ec379f 100644
--- a/haiwei-admin/src/main/resources/templates/board/monitoring1.html
+++ b/haiwei-admin/src/main/resources/templates/board/monitoring1.html
@@ -25,7 +25,7 @@
-
-
+
+