1969 lines
		
	
	
		
			69 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			1969 lines
		
	
	
		
			69 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
// 初始化插件
 | 
						||
 | 
						||
// 全局保存当前选中窗口
 | 
						||
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; //语音对讲失败
 | 
						||
 | 
						||
 | 
						||
var version="V3.3.0build20230322"
 | 
						||
$(function () {
 | 
						||
    // 初始化插件参数及插入插件
 | 
						||
    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 = "<div>" + 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 += "</div>";
 | 
						||
 | 
						||
    $("#opinfo").html(szTip + $("#opinfo").html());
 | 
						||
}
 | 
						||
 | 
						||
// 显示回调信息
 | 
						||
function showCBInfo(szInfo) {
 | 
						||
    szInfo = "<div>" + dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss") + " " + szInfo + "</div>";
 | 
						||
    $("#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 = $(this).width() + $(this).scrollLeft(),
 | 
						||
        nHeight = $(this).height() + $(this).scrollTop();
 | 
						||
 | 
						||
    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() {
 | 
						||
        showOPInfo("打开文件路径失败");
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
// 获取本地参数
 | 
						||
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");
 | 
						||
        showOPInfo("本地配置获取成功!");
 | 
						||
    }, (oError) => {
 | 
						||
        var szInfo = "本地配置获取失败!";
 | 
						||
        showOPInfo(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(() => {
 | 
						||
        showOPInfo("本地配置设置成功!");
 | 
						||
    }, (oError) => {
 | 
						||
        var szInfo = "本地配置设置失败!";
 | 
						||
        showOPInfo(szInfo, oError.errorCode, oError.errorMsg);
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
// 窗口分割数
 | 
						||
function changeWndNum(iType) {
 | 
						||
    iType = parseInt(iType, 10);
 | 
						||
    WebVideoCtrl.I_ChangeWndNum(iType).then(() => {
 | 
						||
        showOPInfo("窗口分割成功!");
 | 
						||
    }, (oError) => {
 | 
						||
        var szInfo = "窗口分割失败!";
 | 
						||
        showOPInfo(szInfo, oError.errorCode, oError.errorMsg);
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
// 登录
 | 
						||
function clickLogin() {
 | 
						||
    var szIP = $("#loginip").val(),
 | 
						||
        szPort = $("#port").val(),
 | 
						||
        szUsername = $("#username").val(),
 | 
						||
        szPassword = $("#password").val();
 | 
						||
 | 
						||
    if ("" == szIP || "" == szPort) {
 | 
						||
        return;
 | 
						||
    }
 | 
						||
 | 
						||
    var szDeviceIdentify = szIP + "_" + szPort;
 | 
						||
 | 
						||
    WebVideoCtrl.I_Login(szIP, 1, szPort, szUsername, szPassword, {
 | 
						||
        timeout: 3000,
 | 
						||
        success: function (xmlDoc) {            
 | 
						||
            showOPInfo(szDeviceIdentify + " 登录成功!");
 | 
						||
            $("#ip").prepend("<option value='" + szDeviceIdentify + "'>" + szDeviceIdentify + "</option>");
 | 
						||
            setTimeout(function () {
 | 
						||
                $("#ip").val(szDeviceIdentify);
 | 
						||
                setTimeout(function() {
 | 
						||
                    getChannelInfo();
 | 
						||
                }, 1000);
 | 
						||
                getDevicePort();
 | 
						||
            }, 10);
 | 
						||
        },
 | 
						||
        error: function (oError) {
 | 
						||
            if (ERROR_CODE_LOGIN_REPEATLOGIN === status) {
 | 
						||
                showOPInfo(szDeviceIdentify + " 已登录过!");
 | 
						||
            } else {
 | 
						||
                showOPInfo(szDeviceIdentify + " 登录失败!", oError.errorCode, oError.errorMsg);
 | 
						||
            }
 | 
						||
        }
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
// 退出
 | 
						||
function clickLogout() {
 | 
						||
    var szDeviceIdentify = $("#ip").val();
 | 
						||
 | 
						||
    if (null == szDeviceIdentify) {
 | 
						||
        return;
 | 
						||
    }
 | 
						||
 | 
						||
    WebVideoCtrl.I_Logout(szDeviceIdentify).then(() => {
 | 
						||
        showOPInfo(szDeviceIdentify + " " + "退出成功!");
 | 
						||
   }, () => {
 | 
						||
    showOPInfo(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");
 | 
						||
            
 | 
						||
            showOPInfo(szDeviceIdentify + " 获取设备信息成功!");
 | 
						||
            alert(arrStr.join(""));
 | 
						||
        },
 | 
						||
        error: function (oError) {
 | 
						||
            showOPInfo(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("<option value='" + id + "' bZero='false'>" + name + "</option>");
 | 
						||
            });
 | 
						||
            showOPInfo(szDeviceIdentify + " 获取模拟通道成功!");
 | 
						||
        },
 | 
						||
        error: function (oError) {
 | 
						||
            showOPInfo(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("<option value='" + id + "' bZero='false'>" + name + "</option>");
 | 
						||
            });
 | 
						||
            showOPInfo(szDeviceIdentify + " 获取数字通道成功!");
 | 
						||
        },
 | 
						||
        error: function (oError) {
 | 
						||
            showOPInfo(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("<option value='" + id + "' bZero='true'>" + name + "</option>");
 | 
						||
                }
 | 
						||
            });
 | 
						||
            showOPInfo(szDeviceIdentify + " 获取零通道成功!");
 | 
						||
        },
 | 
						||
        error: function (oError) {
 | 
						||
            showOPInfo(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);
 | 
						||
 | 
						||
        showOPInfo(szDeviceIdentify + " 获取端口成功!");
 | 
						||
    }, (oError) => {
 | 
						||
        var szInfo = "获取端口失败!";
 | 
						||
        showOPInfo(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;
 | 
						||
                });
 | 
						||
                showOPInfo(szDeviceIdentify + " 获取数字通道成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(szDeviceIdentify + " 没有数字通道!", oError.errorCode, oError.errorMsg);
 | 
						||
            }
 | 
						||
        });
 | 
						||
    }
 | 
						||
}
 | 
						||
// 开始预览
 | 
						||
function clickStartRealPlay(iStreamType) {
 | 
						||
    var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
 | 
						||
        szDeviceIdentify = $("#ip").val(),
 | 
						||
        iRtspPort = parseInt($("#rtspport").val(), 10),
 | 
						||
        iChannelID = parseInt($("#channels").val(), 10),
 | 
						||
        bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false,
 | 
						||
        szInfo = "";
 | 
						||
 | 
						||
    if ("undefined" === typeof iStreamType) {
 | 
						||
        iStreamType = parseInt($("#streamtype").val(), 10);
 | 
						||
    }
 | 
						||
 | 
						||
    if (null == szDeviceIdentify) {
 | 
						||
        return;
 | 
						||
    }
 | 
						||
    var startRealPlay = function () {
 | 
						||
        WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, {
 | 
						||
            iStreamType: iStreamType,
 | 
						||
            iChannelID: iChannelID,
 | 
						||
            bZeroChannel: bZeroChannel,
 | 
						||
            success: function () {
 | 
						||
                szInfo = "开始预览成功!";
 | 
						||
                showOPInfo(szDeviceIdentify + " " + szInfo);               
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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信息成功";
 | 
						||
                    showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
                },
 | 
						||
                error: function(oError){
 | 
						||
                    showOPInfo(szDeviceIdentify + " 设置osd信息失败!", oError.errorCode, oError.errorMsg);
 | 
						||
                }
 | 
						||
            };
 | 
						||
           
 | 
						||
            WebVideoCtrl.I_SendHTTPRequest(szDeviceIdentify,szUrl,newOptions);
 | 
						||
        },
 | 
						||
        error: function(oError){
 | 
						||
            showOPInfo(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 = "停止预览成功!";
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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(() => {
 | 
						||
            showOPInfo(oWndInfo.szDeviceIdentify + " " + "打开声音成功!");
 | 
						||
        }, (oError) => {           
 | 
						||
            var szInfo = " 打开声音失败!";
 | 
						||
            showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
 | 
						||
        });
 | 
						||
    }
 | 
						||
}
 | 
						||
 | 
						||
// 关闭声音
 | 
						||
function clickCloseSound() {
 | 
						||
    var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex),
 | 
						||
        szInfo = "";
 | 
						||
 | 
						||
    if (oWndInfo != null) {
 | 
						||
        WebVideoCtrl.I_CloseSound().then(() => {
 | 
						||
            showOPInfo(oWndInfo.szDeviceIdentify + " " + "关闭声音成功!");
 | 
						||
        }, (oError) => {
 | 
						||
            var szInfo = " 关闭声音失败!";
 | 
						||
            showOPInfo(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(() => {
 | 
						||
            showOPInfo(oWndInfo.szDeviceIdentify + " " + "设置音量成功");
 | 
						||
        }, (oError) => {
 | 
						||
            var szInfo = " 设置音量失败!";
 | 
						||
            showOPInfo(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 = "抓图成功!";
 | 
						||
            showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
        }, function(oError){
 | 
						||
            szInfo = " 抓图失败!";
 | 
						||
            showOPInfo(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 = "抓图上传成功!";
 | 
						||
            showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
        },function(){
 | 
						||
            szInfo = "抓图失败!";
 | 
						||
            showOPInfo(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 = "开始剪辑成功!";
 | 
						||
                }
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                if ('realplay' === szType) {
 | 
						||
                    szInfo = " 开始录像失败!";
 | 
						||
                } else if ('playback' === szType) {
 | 
						||
                    szInfo = " 开始剪辑失败!";
 | 
						||
                }
 | 
						||
                showOPInfo(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 = "停止剪辑成功!";
 | 
						||
                }
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                if ('realplay' === szType) {
 | 
						||
                    szInfo = "停止录像失败!";
 | 
						||
                } else if ('playback' === szType) {
 | 
						||
                    szInfo = "停止剪辑失败!";
 | 
						||
                }
 | 
						||
                sshowOPInfo(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("<option value='" + id + "'>" + id + "</option>");
 | 
						||
            });
 | 
						||
            showOPInfo(szDeviceIdentify + " 获取对讲通道成功!");
 | 
						||
        },
 | 
						||
        error: function (oError) {
 | 
						||
            showOPInfo(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 = "开始对讲成功!";
 | 
						||
        showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
    }, (oError) => {
 | 
						||
        var szInfo = " 开始对讲失败!";
 | 
						||
        showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
// 停止对讲
 | 
						||
function clickStopVoiceTalk() {
 | 
						||
    var szDeviceIdentify = $("#ip").val();
 | 
						||
    WebVideoCtrl.I_StopVoiceTalk().then(() => {
 | 
						||
        szInfo = "停止对讲成功!";
 | 
						||
        showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
    }, (oError) => {
 | 
						||
        var szInfo = " 停止对讲失败!";
 | 
						||
        showOPInfo(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 = "启用电子放大成功!";
 | 
						||
            showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
        }, (oError) => {
 | 
						||
            szInfo = "启用电子放大失败!";
 | 
						||
            showOPInfo(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 = "禁用电子放大成功!";
 | 
						||
            showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
        }, (oError) => {
 | 
						||
            szInfo = "禁用电子放大失败!";
 | 
						||
            showOPInfo(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放大成功!";
 | 
						||
            showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
        }, (oError) => {
 | 
						||
            szInfo = "启用3D放大失败!";
 | 
						||
            showOPInfo(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放大成功!";
 | 
						||
            showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
        }, (oError) => {
 | 
						||
            szInfo = "禁用3D放大失败!";
 | 
						||
            showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
 | 
						||
        });
 | 
						||
    }
 | 
						||
}
 | 
						||
 | 
						||
// 全屏
 | 
						||
function clickFullScreen() {
 | 
						||
    WebVideoCtrl.I_FullScreen(true).then(() => {
 | 
						||
        showOPInfo("全屏成功");
 | 
						||
    }, (oError) => {
 | 
						||
        showOPInfo("全屏失败!", 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) {
 | 
						||
                    showOPInfo(oWndInfo.szDeviceIdentify + " 停止云台成功!");
 | 
						||
                } else {
 | 
						||
                    showOPInfo(oWndInfo.szDeviceIdentify + " 开启云台成功!");
 | 
						||
                }
 | 
						||
                if (9 == iPTZIndex) {
 | 
						||
                    g_bPTZAuto = !g_bPTZAuto;
 | 
						||
                }
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 停止云台成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 设置预置点成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 调用预置点成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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 = "<a href='javascript:;' onclick='clickStartDownloadRecord(" + g_iSearchTimes + ");'>下载</a>";
 | 
						||
                    $("#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 = "<a href='javascript:;' onclick='clickStartDownloadRecord(" + g_iSearchTimes + ");'>下载</a>";
 | 
						||
                    $("#downloadTd" + g_iSearchTimes).data("fileName", szFileName);
 | 
						||
                    $("#downloadTd" + g_iSearchTimes).data("playbackURI", szPlaybackURI);
 | 
						||
                    ++g_iSearchTimes;
 | 
						||
                }
 | 
						||
                showOPInfo(szDeviceIdentify + " 搜索录像文件成功!");
 | 
						||
            } else if("NO MATCHES" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) {
 | 
						||
                setTimeout(function() {
 | 
						||
                    g_iSearchTimes = 0;
 | 
						||
                    showOPInfo(szDeviceIdentify + " 没有录像文件!");
 | 
						||
                }, 50);
 | 
						||
            }
 | 
						||
        },
 | 
						||
        error: function (oError) {
 | 
						||
            g_iSearchTimes = 0;
 | 
						||
            showOPInfo(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 = "开始回放成功!";
 | 
						||
                    showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
                },
 | 
						||
                error: function (oError) {
 | 
						||
                    szInfo = "开始回放失败!";
 | 
						||
                    showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg);
 | 
						||
                }
 | 
						||
            });
 | 
						||
        } else {
 | 
						||
            WebVideoCtrl.I_StartPlayback(szDeviceIdentify, {
 | 
						||
                iRtspPort: iRtspPort,
 | 
						||
                iStreamType: iStreamType,
 | 
						||
                iChannelID: iChannelID,
 | 
						||
                szStartTime: szStartTime,
 | 
						||
                szEndTime: szEndTime,
 | 
						||
                success: function () {
 | 
						||
                    szInfo = "开始回放成功!";
 | 
						||
                    showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
                },
 | 
						||
                error: function (oError) {
 | 
						||
                    szInfo = "开始回放失败!";
 | 
						||
                    showOPInfo(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 = "停止回放成功!";
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                szInfo = "停止回放失败!";
 | 
						||
                showOPInfo(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 = "开始倒放成功!";
 | 
						||
            showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
        }, (oError) => {
 | 
						||
            szInfo = "开始倒放失败!";
 | 
						||
            showOPInfo(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 = "单帧播放成功!";
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                szInfo = "单帧播放失败!";
 | 
						||
                showOPInfo(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 = "暂停成功!";
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                szInfo = "暂停失败!";
 | 
						||
                showOPInfo(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 = "恢复成功!";
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                szInfo = "恢复失败!";
 | 
						||
                showOPInfo(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 = "慢放成功!";
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                szInfo = "慢放失败!";
 | 
						||
                showOPInfo(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 = "快放成功!";
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo);
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                szInfo = "快放失败!";
 | 
						||
                showOPInfo(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);
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 获取OSD时间成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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;
 | 
						||
        $("<div id='downProcess' class='freeze'></div>").appendTo("body");
 | 
						||
        g_tDownloadProcess = setInterval("downProcess(" + i + ")", 1000);
 | 
						||
    }, (oError) => {
 | 
						||
        WebVideoCtrl.I_GetLastError().then((iErrorValue) => {
 | 
						||
            if (34 == iErrorValue) {
 | 
						||
                showOPInfo(szDeviceIdentify + " 已下载!");
 | 
						||
            } else if (33 == iErrorValue) {
 | 
						||
                showOPInfo(szDeviceIdentify + " 空间不足!");
 | 
						||
            } else {
 | 
						||
                showOPInfo(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;
 | 
						||
        $("<div id='downProcess' class='freeze'></div>").appendTo("body");
 | 
						||
        g_tDownloadProcess = setInterval("downProcess(" + 0 + ")", 1000);
 | 
						||
    }, (oError) => {
 | 
						||
        showOPInfo(szDeviceIdentify + " 下载失败!");
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
function clickStopDownload() {
 | 
						||
    WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID).then(() => {
 | 
						||
        showOPInfo("停止下载成功!");
 | 
						||
        clearInterval(g_tDownloadProcess);
 | 
						||
        g_tDownloadProcess = 0;
 | 
						||
        g_iDownloadID = -1;
 | 
						||
        $("#downProcess").remove();
 | 
						||
    }, (oError) => {
 | 
						||
        showOPInfo(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);
 | 
						||
 | 
						||
            showOPInfo("录像下载完成!");
 | 
						||
            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 = "导出配置文件成功!";
 | 
						||
        showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
    }, (oError) => {
 | 
						||
        szInfo = "导出配置文件失败!";
 | 
						||
        showOPInfo(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 = "导入成功!";
 | 
						||
        showOPInfo(szDeviceIdentify + " " + szInfo);
 | 
						||
        WebVideoCtrl.I_Restart(szDeviceIdentify, {
 | 
						||
            success: function (xmlDoc) {
 | 
						||
                $("<div id='restartDiv' class='freeze'>重启中...</div>").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) {
 | 
						||
                showOPInfo(szDeviceIdentify + " 重启失败!", oError.errorCode, oError.errorMsg);
 | 
						||
            }
 | 
						||
        });
 | 
						||
    }, (oError) => {
 | 
						||
        szInfo = "导入失败!";
 | 
						||
        showOPInfo(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);
 | 
						||
        showOPInfo(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;
 | 
						||
            showOPInfo(szDeviceIdentify + " 获取进度失败!");
 | 
						||
            return;
 | 
						||
        } else if (iProcess < 100) {
 | 
						||
            if (0 == $("#restartDiv").length) {
 | 
						||
                $("<div id='restartDiv' class='freeze'></div>").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) {
 | 
						||
                    $("<div id='restartDiv' class='freeze'>重启中...</div>").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) {
 | 
						||
                    showOPInfo(szDeviceIdentify + " 重启失败!", oError.errorCode, oError.errorMsg);
 | 
						||
                }
 | 
						||
            });
 | 
						||
        }
 | 
						||
    } else {
 | 
						||
        await WebVideoCtrl.I_StopUpgrade();
 | 
						||
        clearInterval(g_tUpgrade);
 | 
						||
        g_tUpgrade = 0;
 | 
						||
 | 
						||
        $("#restartDiv").remove();
 | 
						||
 | 
						||
        WebVideoCtrl.I_Restart(szDeviceIdentify, {
 | 
						||
            success: function () {
 | 
						||
                $("<div id='restartDiv' class='freeze'>重启中...</div>").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) {
 | 
						||
                showOPInfo(szDeviceIdentify + " 重启失败!", oError.errorCode, oError.errorMsg);
 | 
						||
            }
 | 
						||
        });
 | 
						||
    }
 | 
						||
}
 | 
						||
 | 
						||
// 检查插件版本
 | 
						||
function clickCheckPluginVersion() {
 | 
						||
    var szDeviceIdentify = $("#ip").val();
 | 
						||
    WebVideoCtrl.I_CheckPluginVersion().then((bNeedUpdate) => {
 | 
						||
        if (bNeedUpdate) {
 | 
						||
            alert("检测到新的插件版本!");
 | 
						||
        } else {
 | 
						||
            alert("您的插件版本已经是最新的!");
 | 
						||
        }
 | 
						||
    }, () => {
 | 
						||
        showOPInfo(szDeviceIdentify + " 检测插件新版本失败");
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
function clickRestoreDefault() {
 | 
						||
    var szDeviceIdentify = $("#ip").val(),
 | 
						||
        szMode = "basic";
 | 
						||
    WebVideoCtrl.I_RestoreDefault(szDeviceIdentify, szMode).then(() => {
 | 
						||
        $("#restartDiv").remove();
 | 
						||
        showOPInfo(szDeviceIdentify + " 恢复默认参数成功!");
 | 
						||
    }, (oError) => {
 | 
						||
        showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 调焦+成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 调焦-成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 调焦停止成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 聚焦+成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 聚焦-成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 聚焦停止成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 光圈+成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 光圈-成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
                showOPInfo(oWndInfo.szDeviceIdentify + " 光圈停止成功!");
 | 
						||
            },
 | 
						||
            error: function (oError) {
 | 
						||
                showOPInfo(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) {
 | 
						||
//         showOPInfo("设备IP和端口解析失败!");
 | 
						||
//     } else {
 | 
						||
//         showOPInfo("设备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;
 | 
						||
        showOPInfo("启用绘制成功!");
 | 
						||
    }, (oError) => {
 | 
						||
        showOPInfo("启用绘制失败!", oError.errorCode, oError.errorMsg);
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
// 禁用多边形绘制
 | 
						||
function clickDisableDraw() {
 | 
						||
    WebVideoCtrl.I_SetSnapDrawMode(0, -1).then(() => {
 | 
						||
        g_bEnableDraw = false;
 | 
						||
        showOPInfo("禁用绘制成功!");
 | 
						||
    }, (oError) => {
 | 
						||
        showOPInfo("禁用绘制失败!", oError.errorCode, oError.errorMsg);
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
// 添加图形,最多不超过16个图形
 | 
						||
function clickAddSnapPolygon() {
 | 
						||
    if (!g_bEnableDraw) {
 | 
						||
        return;
 | 
						||
    }
 | 
						||
 | 
						||
    var szId = $("#snapId").val();
 | 
						||
    var szName = encodeString($("#snapName").val());
 | 
						||
 | 
						||
    var szInfo = "<?xml version='1.0' encoding='utf-8'?>";
 | 
						||
    szInfo += "<SnapPolygonList>";
 | 
						||
    szInfo += "<SnapPolygon>";
 | 
						||
    szInfo += "<id>" + szId + "</id>";          // [1, 32]
 | 
						||
    szInfo += "<polygonType>0</polygonType>"; //如果想绘制多边形,polygonType指需要改为1
 | 
						||
    szInfo += "<PointNumMax>17</PointNumMax>";  // [MinClosed, 17]
 | 
						||
    szInfo += "<MinClosed>4</MinClosed>";       // [4, 17]
 | 
						||
    szInfo += "<tips>#" + szId + "#" + szName + "</tips>";
 | 
						||
    szInfo += "<isClosed>false</isClosed>";
 | 
						||
    szInfo += "<color><r>0</r><g>255</g><b>0</b></color>";
 | 
						||
    szInfo += "<pointList/>";
 | 
						||
    szInfo += "</SnapPolygon>";
 | 
						||
    szInfo += "</SnapPolygonList>";
 | 
						||
 | 
						||
    WebVideoCtrl.I_SetSnapPolygonInfo(g_iWndIndex, szInfo).then(() => {
 | 
						||
        showOPInfo("添加图形成功!");
 | 
						||
    });
 | 
						||
    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 = "<?xml version='1.0' encoding='utf-8'?>";
 | 
						||
    szInfo += "<SnapPolygonList>";
 | 
						||
    szInfo += "<SnapPolygon>";
 | 
						||
    szInfo += "<id>1</id>";
 | 
						||
    szInfo += "<polygonType>1</polygonType>";
 | 
						||
    szInfo += "<tips>#1#设置1</tips>";
 | 
						||
    szInfo += "<isClosed>true</isClosed>";
 | 
						||
    szInfo += "<color><r>0</r><g>255</g><b>0</b></color>";
 | 
						||
    szInfo += "<pointList>";
 | 
						||
    szInfo += "<point><x>0.737903</x><y>0.229730</y></point>";
 | 
						||
    szInfo += "<point><x>0.947581</x><y>0.804054</y></point>";
 | 
						||
    szInfo += "<point><x>0.362903</x><y>0.777027</y></point>";
 | 
						||
    szInfo += "</pointList>";
 | 
						||
    szInfo += "</SnapPolygon>";
 | 
						||
    szInfo += "<SnapPolygon>";
 | 
						||
    szInfo += "<id>2</id>";
 | 
						||
    szInfo += "<polygonType>0</polygonType>";
 | 
						||
    szInfo += "<tips>#2#设置2</tips>";
 | 
						||
    szInfo += "<isClosed>true</isClosed>";
 | 
						||
    szInfo += "<color><r>255</r><g>255</g><b>0</b></color>";
 | 
						||
    szInfo += "<pointList>";
 | 
						||
    szInfo += "<point><x>0.2</x><y>0.2</y></point>";
 | 
						||
    szInfo += "<point><x>0.8</x><y>0.2</y></point>";
 | 
						||
    szInfo += "<point><x>0.8</x><y>0.8</y></point>";
 | 
						||
    szInfo += "<point><x>0.2</x><y>0.8</y></point>";
 | 
						||
    szInfo += "</pointList>";
 | 
						||
    szInfo += "</SnapPolygon>";
 | 
						||
    szInfo += "</SnapPolygonList>";
 | 
						||
 | 
						||
    WebVideoCtrl.I_SetSnapPolygonInfo(g_iWndIndex, szInfo).then(() => {
 | 
						||
        showOPInfo("设置图形成功!");
 | 
						||
    }, (oError) => {
 | 
						||
        showOPInfo("设置图形失败!", oError.errorCode, oError.errorMsg);
 | 
						||
    });
 | 
						||
}
 | 
						||
 | 
						||
// 清空图形
 | 
						||
function clickDelAllSnapPolygon() {
 | 
						||
    if (!g_bEnableDraw) {
 | 
						||
        return;
 | 
						||
    }
 | 
						||
 | 
						||
    WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex).then(() => {
 | 
						||
        showOPInfo("清空图形成功!");
 | 
						||
    }, (oError) => {
 | 
						||
        showOPInfo("清空图形失败!", 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 = "设备抓图失败!";
 | 
						||
    }
 | 
						||
    showOPInfo(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("<?xml") == -1) {
 | 
						||
        szXmlDoc = "<?xml version='1.0' encoding='utf-8'?>" + szXmlDoc;
 | 
						||
    }
 | 
						||
 | 
						||
    return szXmlDoc;
 | 
						||
}
 | 
						||
 | 
						||
function encodeString(str) {
 | 
						||
    if (str) {
 | 
						||
        return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
 | 
						||
    } else {
 | 
						||
        return "";
 | 
						||
    }
 | 
						||
} |