海康v9800视频调用
<!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>海康9800视频</title> <script type="text/javascript" src="/Scripts/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="../Scripts/preview.js"></script> <%--<script type="text/javascript" src="../Scripts/playback.js"></script>--%> <%-- <link href="/UILib/zTree/zTreeStyle/zTreeStyle.css" type="text/css" rel="stylesheet" />--%> <script src="/UILib/zTree/jquery.ztree.core-3.5.min.js" type="text/javascript"></script> <script src="/UILib/zTree/jquery.ztree.excheck-3.5.min.js" type="text/javascript"></script> <style type="text/css"> /*html, body { width: 100%; height: 2000px; overflow: auto; }*/ .ztree { padding-top: 40px; } /*.ico.m-gun, ul.ztree li span.m-gun_ico_docu { background-position: -195px -3px; width: 18px; }*/ ul.ztree li a.disabledNode .m-gun-1_ico_docu { background-position: -123px -123px; } .control-container { width: 253px; } </style> </head> <body> <form id="form1" runat="server"> <link href="http://<%=strPlatformAddr %>/vms/baseui/themes/default/css/all.css" rel="stylesheet" /> <link href="http://<%=strPlatformAddr %>/vms/web/assets/default/css/monitor.css" type="text/css" rel="stylesheet" /> <div style="width: 100%;"> <%--min-width:930px;padding-top:5px;--%> <div runat="server" id="divTree" class="treeview" style="width: 160px; float: left; height: 500px; overflow-y: auto;"> <ul id="treeDemo" class="ztree"></ul> </div> <div id="divVD" style="float: right; width: 770px; height: 500px;"></div> <div style="clear: both;"></div> </div> <input type="hidden" id="hd_tgt" runat="server" /> <input type="hidden" id="hd_xmlPre" runat="server" /> <input type="hidden" id="hd_PointJson" runat="server" /> <%-- <input type="hidden" id="hd_playback" runat="server" /> <div style="width:100%;height:25px;" style="display:none;"> <input type="button" value="播放" onclick="play()" style="display:none;"/> <input type="button" value="回看" onclick="playBack()" style="display:none;"/> <div class="control-container" style="display:none;"> <a class="toggle-switch tipS" href="#" title="隐藏 操作面板" original-title="隐藏 操作面板"></a> <div id="controlContent" class="control-content tab-grey ui-tabs ui-widget ui-widget-content ui-corner-all"> <ul class="tabs ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" role="tablist"> <li class="ui-state-default ui-corner-top ui-tabs-active ui-state-active" role="tab" tabindex="0" aria-controls="ptzController" aria-labelledby="ui-id-1" aria-selected="true"><a href="#ptzController" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-1">云镜控制</a></li> <li class="ui-state-default ui-corner-top" role="tab" tabindex="-1" aria-controls="videoParameter" aria-labelledby="ui-id-2" aria-selected="false"><a href="#videoParameter" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-2">视频参数</a></li> </ul> <div class="tab-content"> <div id="ptzController" class="control-panel ui-tabs-panel ui-widget-content ui-corner-bottom" aria-labelledby="ui-id-1" role="tabpanel" aria-expanded="true" aria-hidden="false" style="display: block;"> <div class="control-mask"></div> <div id="controller" class="controller"> <div class="speed"> <span id="speedVolume" class="volume ui-slider ui-slider-vertical ui-widget ui-widget-content ui-corner-all"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="height: 50%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="bottom: 50%;"></a></span><span class="ico"></span> </div> <div id="rocker" class="rocker"> <div class="diagonal"> <ul> <li class="nw ptz-operation" data-op="25"><a href="#"><span class="ico"></span><i></i></a></li> <li class="ne ptz-operation" data-op="26"><a href="#"><span class="ico"></span><i></i></a></li> <li class="sw ptz-operation" data-op="27"><a href="#"><span class="ico"></span><i></i></a></li> <li class="se ptz-operation" data-op="28"><a href="#"><span class="ico"></span><i></i></a></li> </ul> </div> <div class="quartet"> <ul> <li class="n ptz-operation" data-op="21"><a href="#"><span class="ico"></span><i></i></a></li> <li class="w ptz-operation" data-op="23"><a href="#"><span class="ico"></span><i></i></a></li> <li class="c"><a href="#"><span class="ico"></span><i></i></a></li> <li class="e ptz-operation" data-op="24"><a href="#"><span class="ico"></span><i></i></a></li> <li class="s ptz-operation" data-op="22"><a href="#"><span class="ico"></span><i></i></a></li> </ul> </div> </div> <div class="scope"> <ul> <li class="focal-out ptz-operation" data-op="12"><a class="narrowFocal tipS" href="#" title="焦距缩小"><span class="ico"></span><i></i></a></li> <li class="focal-in ptz-operation" data-op="11"><a class="tipS" href="#" title="焦距放大"><span class="ico"></span><i></i></a></li> <li class="lens-out ptz-operation" data-op="13"><a class="tipS" href="#" title="焦点前移"><span class="ico"></span><i></i></a></li> <li class="lens-in ptz-operation" data-op="14"><a class="tipS" href="#" title="焦点后移"><span class="ico"></span><i></i></a></li> <li class="aperture-out ptz-operation" data-op="16"><a class="tipS" href="#" title="光圈缩小"><span class="ico"></span><i></i></a></li> <li class="aperture-in ptz-operation" data-op="15"><a class="tipS" href="#" title="光圈放大"><span class="ico"></span><i></i></a></li> </ul> </div> <div class="tool"> <ul> <li class="act-lockptz ptz-btn-operation-lock" data-op="8"><a class="tipS" href="#" title="锁定"><span class="ico"></span><i></i></a></li> <li class="act-zoom3d ptz-btn-operation-3d" data-op="9"><a class="tipS" href="#" title="3D放大"><span class="ico"></span><i></i></a></li> <li class="act-light ptz-btn-operation-light" data-op="2"><a class="tipS" href="#" title="灯光"><span class="ico"></span><i></i></a></li> <li class="act-brush ptz-btn-operation-brush" data-op="3"><a class="tipS" href="#" title="雨刷"><span class="ico"></span><i></i></a></li> <li class="act-patrol ptz-btn-operation-auto" data-op="29"><a class="tipS" href="#" title="自动扫描"><span class="ico"></span><i></i></a></li> </ul> </div> </div> <div class="setting"> <div> <div class="combobox"> <!-- <input id="call-preset-input" type="text" class="point-number tipS placeholder" placeholder="输入编号或名称"> --> <input id="call-preset-input" type="text" class="point-number" style="color: gray" value="输入编号或名称"> <div class="btn-group dropup"> <a class="dropdown-toggle" href="#" data-toggle="dropdown"><span class="caret"></span></a> <ul class="dropdown-menu preset-container-name"> </ul> </div> </div> <a id="btn-call-preset" class="buttonS bDefault tipS" href="#" title="调用"><span class="ico act-apply"></span><i></i></a><a id="btn-open-preset-dialog" class="buttonS bDefault tipS" href="#" data-trigger="controler.setPoint" title="设置"><span>设置</span><i></i></a> </div> </div> </div> <div id="videoParameter" class="control-panel ui-tabs-panel ui-widget-content ui-corner-bottom" aria-labelledby="ui-id-2" role="tabpanel" aria-expanded="false" aria-hidden="true" style="display: none;"> <div class="control-mask"></div> <div class="video-param"> <dl> <dt><span>亮度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="bright" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt> <dd> <div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="bright"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div> </dd> </dl> <dl> <dt><span>对比度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="light" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt> <dd> <div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="light"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div> </dd> </dl> <dl> <dt><span>色度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="tone" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt> <dd> <div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="tone"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div> </dd> </dl> <dl> <dt><span>饱和度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="saturation" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt> <dd> <div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="saturation"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div> </dd> </dl> <div class="form-actions"><a class="buttonW bDefault" data-trigger="reset" href="#"><span class="ico i-reset"></span><span>默认参数</span></a></div> </div> </div> </div> </div> </div> </div> <div id="divVDBC" style="width:868px;height:600px;display:none;" ></div> --%> </form> </body> <script type="text/javascript"> var setting = { data: { simpleData: { enable: true } }, callback: { onClick: onClick } }; $(document).ready(function () { var zu = $("#hd_PointJson").val(); var ujson = JSON.parse(zu); var ztObj = $("#treeDemo"); $.fn.zTree.init(ztObj, setting, ujson); $(".m-gun-1_ico_docu", ztObj).addClass("ico").parent("a").addClass("disabledNode"); $(".m-gun_ico_docu", ztObj).addClass("ico"); }); function onClick(e, treeId, treeNode) { if (!treeNode.isParent) { //if (treeNode.iconSkin == "m-gun")//在线 setPlays(treeNode.id); } } </script> <script type="text/javascript"> function installPlug() { if (confirm('您还没有安装浏览该视频的插件!是否进行安装?')) location.href = "http://<%=strPlatformAddr %>/download/WebCtrl_V4.2.3.exe"; } var txt; function tokenCallEvent(reqID, isa) { var dd = $("#hd_tgt").val(); $.ajax({ type: 'POST', async: true, url: "VideoMultiHK9800.aspx/getVmsTokenAction", contentType: 'application/json', data: "{'tgt':'" + dd + "'}", dataType: "json", success: function (data) { var txt = previewOcxObj.setToken(reqID, data.d); } }); } function tokenKeep() { var dd = $("#hd_tgt").val(); $.ajax({ type: 'POST', async: true, url: "VideoMultiHK9800.aspx/getVmsTokenAction", contentType: 'application/json', data: "{'tgt':'" + dd + "'}", dataType: "json", success: function (data) { //alert(data.d); } }); } //获取url参数 function RequestFrom(key) { var locString = location.search; var reg = new RegExp("(\\?|\\&)" + key + "=([^\\&]*)(\\&?)", "i").exec(locString); if (reg != null) { return RegExp.$2; } else { return ""; } } $(function () { if (navigator.userAgent.indexOf('MSIE') >= 0 || !!window.ActiveXObject || "ActiveXObject" in window) { try { var obj = new ActiveXObject("PLATFORMPLAYBACK.PlatformPlaybackCtrl.1");//PLATFORMPREVIEW.PlatformPreviewCtrl.1 //alert("已经注册"); } catch (e) { installPlug(); return; } } else { $("#divVD").html("暂时仅支持IE浏览器"); } //设置窗口宽度 initWH(); //初始化视频窗口 PreviewOCX({ divId: "divVD" }); //设置窗口布局 layout_2X2 var vWL = RequestFrom("WL"); vWL = vWL && vWL != "" ? vWL : 2; setWindowsLayout(vWL); setInterval("tokenKeep()", 27000); }) function initWH() { var $vd = $("#divVD"); var $dt = $("#divTree"); $vd.width($(window).width() - $dt.width() - 17); var hg = window.document.body.clientHeight - 4; $vd.height(hg); $dt.height(hg); } function play() { tXml = $("#hd_xmlPre").val(); //●﹏● ╯﹏╰ previewOcxObj.callback[PREVIEW_EVENT_TOKEN] = tokenCallEvent; var indexWin = previewOcxObj.getSelectWindow(); txt = previewOcxObj.startPreview(indexWin, tXml); } function setPlays(iCode) { var dd = $("#hd_tgt").val(); $.ajax({ type: 'POST', async: true, url: "VideoMultiHK9800.aspx/getPreviewOcxOptions", contentType: 'application/json', data: "{'tgt':'" + dd + "','iCode':'" + iCode + "'}", dataType: "json", success: function (data) { if (data != "") { $("#hd_xmlPre").val(data.d); play(); } } }); } //function playBack() { // $("#divVDBC").show(); // PlaybackOCX({ // divId: "divVDBC" // }); // var bcXml = $("#hd_playback").val(); // callbackOcxObj.setPlayback("2016-06-06T 00:00:00Z", "2016-06-07T 00:00:00Z", bcXml); //} //云台控制 //function test() { // var cmdId = '43010000001310000020'; // var pXml = '<?xml version="1.0" encoding="utf-8"?>'; // pXml += '<PtzControl>'; // pXml += '<Action>0</Action>';// <!—开始或停止(开始为0/停止为1) --> // pXml += '<Priority>50</Priority>';//<!—优先级(如果没有该项,则默认为50)--> // pXml += '<Speed>5</Speed>';// <!-- 速度(如果没有该项,则默认为5)--> // pXml += '<Preset Index =1 DwellTime=50 Speed=5 />';//<!—预置点编号,停留时间和运行速度--> // pXml += '</PtzControl>'; // txt = previewOcxObj.ptzControl(cmdId, pXml); //} //var tXml = '<?xml version="1.0" encoding="utf-8"?>' //tXml += '<Preview>' //tXml += '<CamIndexCode>43010000001310000020</CamIndexCode> '// <!-- 监控点编号--> //tXml += '<DevIndexCode>43010000001130000009</DevIndexCode>'// <!-- 设备编号--> //tXml += '<UserName>admin</UserName> '// <!—设备登录用户密码--> //tXml += '<PassWord>AIkEBdZsuRw=</PassWord>'//密码 56636d85ccabdf64e839a2af0ae4e393e98d9b26d65bb4a12f02fa5bc9f0cc04 //tXml += '<UserLevel>50</UserLevel>'// <!-- 用户级别--> //tXml += '<CamName>海康摄像头(录像机)</CamName>'// <!-- 监控点名称--> //tXml += '<DevType>0</DevType>'// <!-- 厂商类型海康大华等--> //tXml += '<ChannelNo>35</ChannelNo>'// <!-- 监控点序号--> //tXml += '<LinkType>1</LinkType>'// <!—1 tcp 2 udp--> //tXml += '<DecodeTag></DecodeTag > '//<!—级联的解码类型--> //tXml += '<ProSeries>1</ProSeries >'// <!—产品系列--> //tXml += '<StreamType>0</StreamType>'// <!—0 主码流 1 子码流--> //tXml += '<NetZone cnid="1" pnid="1"/>'// <!-- 网域ID 客户端网域ID,设备网域ID --> //tXml += '<CascCode></CascCode >'//<!—级联标识 ,非空为级联监控点--> //tXml += '<StreamSvr>' //tXml += '<Svr type="3" ip="113.240.239.245" port="7302" />'// <!--type:服务类型定义与平台统一 vag(3),vtdu(41),vtm(4) ip服务的IP,port服务的port rtspPort="7302"--> //tXml += '<Svr type="4" ip="113.240.239.245" port="557" />' //tXml += '</StreamSvr>' //tXml += '<IntellInfo>' //tXml += '<IndexCode></IndexCode>'// <!-- 智能通道编号--> //tXml += '<ChannelNo></ChannelNo>'// <!-- 智能通道号 --> //tXml += '<Domaind></Domaind>'// <!-- 智能设备网域ID --> //tXml += '<UserName></UserName>'// <!-- 智能设备用户密码--> //tXml += '<PassWord></PassWord>' //tXml += '</IntellInfo>' //tXml += '<FishEyeInfo>' //tXml += '<InstallType></InstallType>'// <!-- 安装方式-->' //tXml += '<VideoDevType></VideoDevType>'// <!-- 机型标清网络半球--> //tXml += '</FishEyeInfo>' //tXml += '</Preview>' //tXml = '<?xml version="1.0" encoding="utf-8"?>' //tXml += '<Preview>' //tXml += '<StreamSvr>' //tXml += '<Svr type="3" ip="10.0.3.17" port="7302" rtspPort="7302" />' //tXml += '<Svr type="4" ip="10.0.3.17" port="557" />' //tXml += '</StreamSvr>' //tXml += '<CamIndexCode>43010000001310000020</CamIndexCode>' //tXml += '<DevIndexCode>43010000001130000009</DevIndexCode>' //tXml += '<LinkType>1</LinkType>' //tXml += '<StreamType>0</StreamType>' //tXml += '<CamName>海康摄像头(录像机)</CamName>' //tXml += '<UserName>admin</UserName>' //tXml += '<PassWord>AIkEBdZsuRw=</PassWord>' //tXml += '<UserLevel>50</UserLevel>' //tXml += '<DevType>0</DevType>' //tXml += '<Manufacturer>0</Manufacturer>' //tXml += '<ProSeries>1</ProSeries>' //tXml += '<ChannelNo>35</ChannelNo>' //tXml += '<SubStream>MAIN</SubStream>' //tXml += '<NetZone cnid="2" pnid="1" />' //tXml += '<TreatyType>SDK</TreatyType>' //tXml += '</Preview>' ////全局设置 //var goXml = '<?xml version="1.0" encoding="utf-8"?><global><snap picture="jpeg" save="d:/snap"/><clip packSize="256" save="d:/cut"/><performance decode="5"/></global>' //txt = previewOcxObj.setGlobalParam(goXml); ////权限设置 //var RoleXml = '<?xml version="1.0" encoding="utf-8"?>' //RoleXml += '<Privileges>' //RoleXml += '< Privilege type="0" />' // <!--type是按钮类型 只填入需要显示的按钮,顺序按照XML解析顺序 --> //RoleXml += '< Privilege type="1" />' //RoleXml += '< Privilege type="2" />' //RoleXml += '< Privilege type="3" />' //RoleXml += '< Privilege type="4" />' //RoleXml += '< Privilege type="5" />' //RoleXml += '< Privilege type="6" />' //RoleXml += '< Privilege type="7" />' //RoleXml += '< Privilege type="8" />' //RoleXml += '< Privilege type="9" />' //RoleXml += '< Privilege type="10" />' //RoleXml += '< Privilege type="11" />' //RoleXml += '< Privilege type="12" />' //RoleXml += '< Privilege type="13" />' //RoleXml += '< Privilege type="22" />' //RoleXml += '</ Privileges >' //txt = previewOcxObj.setOperAuth(RoleXml); </script> </html>
using LHSoft.LHP.Common; using LHSoft.LHP.DAL.BaseData; using LHSoft.LHP.MainWeb.HK9800Service; using LHSoft.LHP.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace LHSoft.LHP.MainWeb.Video.Pages { public partial class VideoMultiHK9800 : Page //BasePage // { /// <summary> /// 组织机构类型代码 /// </summary> const int orgCode = 1000; /// <summary> /// 监控点类型代码 /// </summary> const int monitorPoints = 10000; private string StrTgt { get; set; } /// <summary> /// 服务地址 /// </summary> protected static string strIp { get; set; }//"10.0.3.17" 113.240.239.245 /// <summary> /// 端口 /// </summary> public static int? AccessPort { get; set; } /// <summary> /// 帐号 /// </summary> protected static string strAccounts { get; set; }//admin /// <summary> /// 密码 /// </summary> protected static string strPwd { get; set; }//"Lhsoft9114" /// <summary> /// 视频平台地址 /// </summary> protected static string strPlatformAddr { get; set; } /// <summary> /// 接口对象 /// </summary> private static VmsSdkWebServicePortTypeClient vmsSdkWebService; protected static VmsSdkWebServicePortTypeClient VmsSdkWebService { get { if (vmsSdkWebService == null) { vmsSdkWebService = new VmsSdkWebServicePortTypeClient(); } return vmsSdkWebService; } set { vmsSdkWebService = value; } } /// <summary> /// 获取Token /// </summary> private string strToken { get { string xmltoken = VmsSdkWebService.applyToken(StrTgt); { return !string.IsNullOrEmpty(xmltoken) ? ServiceResult.Token(xmltoken) : ""; } } } protected void Page_Load(object sender, EventArgs e) { if (!InitLoginVideo()) { Response.Write("未获取到视频服务信息!"); Response.End(); } StrTgt = Login(); if (string.IsNullOrEmpty(StrTgt)) { Response.Write("登录失败!"); Response.End(); } hd_tgt.Value = StrTgt; bindTree(); //获取监控点编号 //string cameraIndexCode = new VmsSdkWebServicePortTypeClient().getResourceByOrgCode(strToken, 0, "1000", ""); //getResourceByCodes getResourceByPage //回看 0 中心存储录像,57 存放于本地 //xmltoken = new VmsSdkWebServicePortTypeClient().applyToken(sr.Rows[0]["tgt"]); //strToken = ServiceResult.Token(xmltoken); //string strSaveType = "0"; //hd_playback.Value = new VmsSdkWebServicePortTypeClient().getPlaybackOcxOptions(strToken, cameraIndexCode, strIp, "2016-06-06T 00:00:00Z", "2016-06-07T 00:00:00Z", strSaveType); //} } /// <summary> /// 绑定树 传入MN号则取单站点视频,否则取所有站点视频 /// </summary> private void bindTree() { if (!string.IsNullOrEmpty(strToken)) { List<udtTreeTemp> pList = new List<udtTreeTemp>(); //资源 ServiceResult SourceSr = null; int count = 0; string strMN = ""; if (Request["MN"] == null) { strMN = GetMN; } else { strMN = Request["MN"].ToString(); } if (!string.IsNullOrEmpty(strMN)) { #region 加载全部站点 if (strMN == "ALL") { string strResource = GetResourceByPage(orgCode, ref SourceSr); count = SourceSr.Rows.Count; for (int i = 0; i < count; i++)//构建监控点资源树的组织资源 { udtTreeTemp d = new udtTreeTemp(); d.id = SourceSr.Rows[i]["i_id"]; d.name = SourceSr.Rows[i]["c_org_name"]; d.pId = SourceSr.Rows[i]["i_parent_id"] == "null" || SourceSr.Rows[i]["i_parent_id"] == "c_0" ? "" : SourceSr.Rows[i]["i_parent_id"]; d.iCode = SourceSr.Rows[i]["c_index_code"]; d.open = true; d.iconSkin = getIcoSkin(SourceSr.Rows[i]["c_path"]); pList.Add(d); } //获取叶子结点 List<udtTreeTemp> pListChild = new List<udtTreeTemp>(); foreach (var item in pList) { if (!pList.Exists(t => t.pId == item.id)) { /*因服务器端根据城市读取4个以上视频点位会报错问题,所以使用WebService读取*/ HKServer9800.VmsSdkWebService web = new HKServer9800.VmsSdkWebService(); string cameraInfo = web.getResourceByOrgCode(strToken, monitorPoints, true, item.iCode, ""); //string cameraInfo = VmsSdkWebService.getResourceByOrgCode(strToken, monitorPoints, item.iCode, ""); SourceSr = ServiceResult.Parse(cameraInfo); count = SourceSr.Rows.Count; for (int i = 0; i < count; i++) { udtTreeTemp d = new udtTreeTemp(); d.id = SourceSr.Rows[i]["c_index_code"]; d.name = SourceSr.Rows[i]["c_name"]; d.pId = item.id; d.open = true; d.iconSkin = SourceSr.Rows[i]["i_is_online"] == "1" ? "m-gun" : "m-gun-1"; pListChild.Add(d); } } } pList.AddRange(pListChild); divTree.Style.Add(HtmlTextWriterStyle.Width, "270px"); } #endregion #region 加载单站点 else { List<T_MNVideoInfo> listVideoMNInfo = new DAL.BaseData.T_MNVideoDAL().GetByFilter(string.Format("PlatformID='hik9800' AND MN='{0}'", strMN)); if (listVideoMNInfo != null && listVideoMNInfo.Count > 0) { string strMNName = ""; if (Request["mnname"] != null) { strMNName = Server.UrlDecode(Request["mnname"].ToString()); } else { strMNName = GetMN_Name; } udtTreeTemp d = new udtTreeTemp(); d.id = strMN; d.name = strMNName; d.pId = ""; d.iCode = ""; d.open = true; d.iconSkin = getIcoSkin("3"); pList.Add(d); var listDevIds = listVideoMNInfo.Select(t => t.DevId).ToList(); /*因服务器端读取4个以上视频点位会报错问题,所以分页,按次3条读取*/ var PageIndex = 0; var PageTotal = Math.Ceiling((double)listDevIds.Count / 3); string cameraInfo = ""; for (; PageIndex < PageTotal; PageIndex++) { string[] strDevIds = listDevIds.Skip(3 * PageIndex).Take(3).ToArray(); cameraInfo = VmsSdkWebService.getResourceByCodes(strToken, monitorPoints, strDevIds);// new string[] { item.DevId } SourceSr = ServiceResult.Parse(cameraInfo); count = SourceSr.Rows.Count; for (int i = 0; i < count; i++) { udtTreeTemp dd = new udtTreeTemp(); dd.id = SourceSr.Rows[i]["c_index_code"]; //先取base数据库中设置名称 var tempVInfo = listVideoMNInfo.Find(f => f.DevId == dd.id); dd.name = tempVInfo != null && !string.IsNullOrEmpty(tempVInfo.VDName) ? tempVInfo.VDName : SourceSr.Rows[i]["c_name"]; dd.pId = strMN; dd.open = true; dd.iconSkin = SourceSr.Rows[i]["i_is_online"] == "1" ? "m-gun" : "m-gun-1"; pList.Add(dd); } } } //divTree.Style.Add(HtmlTextWriterStyle.Width, "200px"); } #endregion hd_PointJson.Value = JsonHelper.GetJson<List<udtTreeTemp>>(pList); } } } /// <summary> /// 初始化视频登录信息 /// </summary> /// <returns></returns> private static bool InitLoginVideo() { List<T_VideoPlatformInfo> vPlatform = new T_VideoPlatformDAL().GetByID("hik9800"); if (vPlatform == null || vPlatform.Count < 1) { return false; } strIp = vPlatform[0].AccessIP; //"113.240.239.245" strAccounts = vPlatform[0].CagUser; strPwd = vPlatform[0].CagPass; strPlatformAddr = strIp; if (vPlatform[0].AccessPort.HasValue) { AccessPort = vPlatform[0].AccessPort.Value; strPlatformAddr += ":" + vPlatform[0].AccessPort.Value; } return true; } /// <summary> /// 登录服务获取唯一标识 /// </summary> /// <returns></returns> private string Login() { string xml = VmsSdkWebService.sdkLogin(strAccounts, SHA256Encrypt(strPwd), strIp, "", ""); ServiceResult sr = ServiceResult.Parse(xml); if (sr.ResultCode != 0 || sr.Rows[0]["tgt"].Length == 0) { return ""; } return sr.Rows[0]["tgt"]; } /// <summary> /// 获取Token /// </summary> /// <param name="tgt"></param> /// <returns></returns> private static string getToken(string tgt) { string xmltoken = VmsSdkWebService.applyToken(tgt); return !string.IsNullOrEmpty(xmltoken) ? ServiceResult.Token(xmltoken) : ""; } /// <summary> /// 验证Token /// </summary> /// <param name="tgt"></param> /// <returns></returns> [System.Web.Services.WebMethod] public static string getVmsTokenAction(string tgt) { return getToken(tgt); } /// <summary> /// 获取预览xml /// </summary> /// <param name="tgt"></param> /// <param name="iCode"></param> /// <returns></returns> [System.Web.Services.WebMethod] public static string getPreviewOcxOptions(string tgt, string iCode) { //获取视频预览xml string strToken = getToken(tgt); if (!string.IsNullOrEmpty(strToken)) return VmsSdkWebService.getPreviewOcxOptions(getToken(tgt), iCode, strIp); else return ""; } /// <summary> /// 密码加密 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string SHA256Encrypt(string str) { byte[] SHA256Data = Encoding.UTF8.GetBytes(str); System.Security.Cryptography.SHA256 Sha256 = new System.Security.Cryptography.SHA256Managed(); byte[] by = Sha256.ComputeHash(SHA256Data); return BitConverter.ToString(by).Replace("-", "").ToLower(); } const int _StartPage = 1; const int _PageSize = 10; /// <summary> /// 分页获取组织资源,并将组织资源信息保存在sr中 /// </summary> /// <param name="token"></param> /// <param name="command"></param> /// <param name="sr"></param> /// <returns></returns> public string GetResourceByPage(int command, ref ServiceResult sr)//string token, { int startpage = _StartPage; string result = VmsSdkWebService.getResourceByPage(strToken, command, startpage, _PageSize, "", "", 1); StringBuilder sb = new StringBuilder(); sb.Append(string.Format("第{0}页", startpage)); sb.Append("\r\n"); sb.Append(result); sb.Append("\r\n"); sr = ServiceResult.Parse(result); while (sr.ResultCode == 0 && sr.Total > sr.Rows.Count) { result = VmsSdkWebService.getResourceByPage(strToken, command, ++startpage, _PageSize, "", "", 1); if (string.IsNullOrEmpty(result)) { break; } ServiceResult tmp = ServiceResult.Parse(result); if (tmp.Rows.Count < 1) { break; } sr.Rows.AddRange(tmp.Rows); sb.Append(string.Format("第{0}页", startpage)); sb.Append("\r\n"); sb.Append(result); sb.Append("\r\n"); } return sb.ToString(); } /// <summary> /// 获取图标 /// </summary> /// <param name="str"></param> /// <returns></returns> private string getIcoSkin(string str) { int ik = str.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length; switch (ik) { case 1: str = "province"; break; case 2: str = "city"; break; case 3: str = "town"; break; default: str = "town"; break; } return str; } /// <summary> /// 获取当前MN号 /// </summary> public string GetMN { get { return Request.Cookies["checkedNode"] == null ? "" : Request.Cookies["checkedNode"].Value; } } /// <summary> /// 获取站点名称 /// </summary> public string GetMN_Name { get { return Request.Cookies["checkedNodeName"] == null ? "" : Server.UrlDecode(Request.Cookies["checkedNodeName"].Value); } } } //public class udtTreeTemp //{ // public string id { get; set; } // public string pId { get; set; } // public string name { get; set; } // public bool open { get; set; } // public string iconSkin { get; set; } // public string iCode { get; set; } //} }