公共类

using Common;
using Model;
using SQLServerDAL;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;namespace MainWeb.Video.GlobalClass
{public class APIHelper{/// <summary>/// post请求:json数据提交/// </summary>/// <param name="sUrl"></param>/// <param name="sJsonData"></param>/// <returns></returns>public static string Post(string sUrl, string sJsonData){// Json不能为空if (sJsonData == null) sJsonData = string.Empty;string srcStr = sUrl + sJsonData + SysDefault.secret;string token = Md5_32(srcStr);//接口地址(不带域名/a/b)+参数json+secret 进行md5加密32位sUrl = "http://" + SysDefault.IP + sUrl + "?token=" + token;Uri url = new Uri(sUrl);HttpWebRequest request = WebRequest.Create(sUrl) as HttpWebRequest;request.KeepAlive = false;request.ProtocolVersion = HttpVersion.Version10;request.Timeout = 1000 * 120;//提交数据获取返回结果string strResult = string.Empty;request.Method = "POST";request.ContentType = "application/json";byte[] data = UTF8Encoding.UTF8.GetBytes(sJsonData);request.ContentLength = data.LongLength;using (Stream requestStream = request.GetRequestStream()){requestStream.Write(data, 0, data.Length);requestStream.Close();requestStream.Dispose();}try{HttpWebResponse response = request.GetResponse() as HttpWebResponse;if (response != null){using (Stream bookmarksStream = response.GetResponseStream()){StreamReader reader = new StreamReader(bookmarksStream, UTF8Encoding.UTF8);strResult = reader.ReadToEnd();reader.Close();bookmarksStream.Close();bookmarksStream.Dispose();}}}catch{ }return strResult;}/// <summary>/// 获取默认用户的UUID:后台调用接口/// </summary>/// <returns></returns>public static void  GetDefaultUUID(){SysParamData pd = new SysParamData();string json = JsonHelper.GetJson(pd);string retjson = Post(SysDefault.getDefaultUserUuind_Url, json);if (!string.IsNullOrEmpty(retjson)){DefaultUUIDData ud = JsonHelper.JSONString<DefaultUUIDData>(retjson);if (!string.IsNullOrEmpty(ud.data)){SysDefault.DefaultUserID = ud.data;}}}/// <summary>/// 获取网域信息/// </summary>public static void GetnetZoneData(){InNetZoneParam zone = new InNetZoneParam();if (string.IsNullOrEmpty(SysDefault.DefaultUserID)){GetDefaultUUID();}zone.opUserUuid = SysDefault.DefaultUserID;string json = JsonHelper.GetJson(zone);string retjson = Post(SysDefault.getNetZone_Url, json);if (!string.IsNullOrEmpty(retjson)){OutNetZoneParam ret = JsonHelper.JSONString<OutNetZoneParam>(retjson);if (ret.data != null && ret.data.Count > 0){string[] split = SysDefault.IP.Split(new string[1] { ":" }, StringSplitOptions.RemoveEmptyEntries);string ipv=split[0];bool isok = false;foreach (ZoneData zd in ret.data){if (ipv == zd.netZoneName)// 自身平台ip=视频网域名称匹配
                        {isok = true;SysDefault.netZoneUuid = zd.netZoneUuid;SysDefault.netZoneName = zd.netZoneName;break;}}if (!isok)//没有设置对应的  读取第一个
                    {SysDefault.netZoneUuid = ret.data[0].netZoneUuid;SysDefault.netZoneName = ret.data[0].netZoneName;}}}}/// <summary>/// MD5 32位加密:大写/// </summary>/// <param name="str"></param>/// <returns></returns>public static string Md5_32(string str){byte[] sor = Encoding.UTF8.GetBytes(str);MD5 md5 = MD5.Create();byte[] result = md5.ComputeHash(sor);StringBuilder strbul = new StringBuilder(40);for (int i = 0; i < result.Length; i++){strbul.Append(result[i].ToString("x2"));//加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位
}return strbul.ToString().ToUpper();}/// <summary>/// 视频类型编码/// </summary>public static string PlatformID = "hik8700";/// <summary>/// 默认加载初始数据:页面Pageload调用/// </summary>public static void DefaultLoadData(){IList<T_VideoPlatformInfo> vPlatform = new T_VideoPlatformDAL().GetByID(PlatformID);if (vPlatform.Count > 0){SysDefault.IP = vPlatform[0].AccessIP;SysDefault.appkey = vPlatform[0].CagUser;SysDefault.secret = vPlatform[0].CagPass;if (vPlatform[0].AccessPort.HasValue){SysDefault.IP += ":" + vPlatform[0].AccessPort;}}}/// <summary>/// 根据编码设备名称获取编码设备/// </summary>/// <param name="name">设备名称</param>/// <param name="no">当前页码</param>/// <returns></returns>public static OutEncoderDevicesByNameExData GetEncoderDevicesByNameEx(string name, int no){InEncoderDevicesByNameExParam param = new InEncoderDevicesByNameExParam();param.pageNo = no;param.pageSize = 300;//建议400以下,不超过1000param.encoderName = name;param.opUserUuid = SysDefault.DefaultUserID;string json = JsonHelper.GetJson(param);string retjson = Post(SysDefault.GetEncoderDevicesByNameEx_Url, json);OutEncoderDevicesByNameExData ret=null;if (!string.IsNullOrEmpty(retjson)){ret = JsonHelper.JSONString<OutEncoderDevicesByNameExData>(retjson);}return ret;}/// <summary>/// 通过名称分页查询,找到设备尸体/// </summary>/// <param name="name">设备名称</param>/// <param name="code"></param>/// <returns></returns>public static DevicesData SearchDevices(string name,string code){bool breakflag = true;DevicesData ret= null;int pageNo = 1;//从第一页开始while (breakflag){OutEncoderDevicesByNameExData data = GetEncoderDevicesByNameEx(name, pageNo);if (data.errorCode == 0){foreach (DevicesData t in data.data.list){if (t.encoderUuid == code){ret = t;breakflag = false;break;}}if (ret == null){pageNo++;}}else{breakflag = false;break;}}return ret;}/// <summary>/// 根据编码设备UUID集分页获取监控点/// </summary>/// <param name="uuids">设备uuid,多个用,号隔开</param>/// <param name="no">当前页码</param>/// <returns></returns>public static OutCamerasByEncoderUuidsData GetCamerasByEncoderUuids(string uuids,int no){InCamerasByEncoderUuidsParam param = new InCamerasByEncoderUuidsParam();param.pageNo = no;param.pageSize = 300;//建议400以下,不超过1000param.encoderUuids = uuids;param.opUserUuid = SysDefault.DefaultUserID;string json = JsonHelper.GetJson(param);string retjson = Post(SysDefault.GetCamerasByEncoderUuids_Url, json);OutCamerasByEncoderUuidsData ret = null;if (!string.IsNullOrEmpty(retjson)){ret = JsonHelper.JSONString<OutCamerasByEncoderUuidsData>(retjson);}return ret;}/// <summary>/// 根据编码设备UUID得到所有信息/// </summary>/// <param name="uuids">设备uuid,多个用,号隔开</param>/// <returns></returns>public static List<CamerasData> GetCameras(string uuids){List<CamerasData> ret = new List<CamerasData>();int pageNo=1;bool breakflag = true;while (breakflag){OutCamerasByEncoderUuidsData data = GetCamerasByEncoderUuids(uuids,pageNo);if (data.errorCode == 0){foreach (CamerasData t in data.data.list){ret.Add(t);}if (pageNo < data.data.pageNo){pageNo++;}else{breakflag = false;break;}}else{breakflag = false;break;}}return ret;}/// <summary>/// 根据视频机器的uuid预览视频/// </summary>/// <param name="uuid">视频机器的uuid</param>/// <returns></returns>public static string GetVideoPreview(string uuid){InCameraPreviewParam pre = new InCameraPreviewParam();pre.opUserUuid = SysDefault.DefaultUserID;pre.netZoneUuid = SysDefault.netZoneUuid;pre.cameraUuid = uuid;string json = JsonHelper.GetJson(pre);string retjson = Post(SysDefault.GetPreviewParamByCameraUuid_Url, json);string ret = null;if (!string.IsNullOrEmpty(retjson)){ret = retjson;// JsonHelper.JSONString<OutCameraPreviewData>(retjson);
            }return ret;}/// <summary>/// 根据监控点UUID集和网域UUID分页获取录像计划/// </summary>/// <param name="uuid">视频机器的uuid,多个用,号隔开</param>/// <returns></returns>public static OutPlansByCameraUuids GetRecordPlansByCameraUuids(string uuid){InPlansByCameraUuidsParam param = new InPlansByCameraUuidsParam();param.pageNo = 1;param.pageSize = 300;param.opUserUuid = SysDefault.DefaultUserID;param.cameraUuids = uuid;param.netZoneUuid = SysDefault.netZoneUuid;string json = JsonHelper.GetJson(param);string retjson = Post(SysDefault.GetRecordPlansByCameraUuids_Url, json);OutPlansByCameraUuids ret = null;if (!string.IsNullOrEmpty(retjson)){ret = JsonHelper.JSONString<OutPlansByCameraUuids>(retjson);}return ret;}/// <summary>/// 根据监控点UUID集和网域UUID分页获取录像计划/// </summary>/// <param name="uuid">视频机器的uuid,多个用,号隔开</param>/// <returns></returns>public static List<PalnsData> GetCameraPlan(string uuid){List<PalnsData> ret = new List<PalnsData>();int pageNo = 1;bool breakflag = true;while (breakflag){OutPlansByCameraUuids data = GetRecordPlansByCameraUuids(uuid);if (data.errorCode == 0){foreach (PalnsData t in data.data.list){ret.Add(t);}if (pageNo < data.data.pageNo){pageNo++;}else{breakflag = false;break;}}else{breakflag = false;break;}}return ret;}/// <summary>/// 视频回放/// </summary>/// <param name="plantype">录像计划类型</param>/// <param name="planid">录像计划id</param>/// <returns></returns>public static string GetVideoBack(string plantype, string planid){InGetPlaybackParamByPlanUuidParam pre = new InGetPlaybackParamByPlanUuidParam();pre.opUserUuid = SysDefault.DefaultUserID;pre.netZoneUuid = SysDefault.netZoneUuid;pre.planType = Convert.ToInt32(plantype);pre.recordPlanUuid = planid;string json = JsonHelper.GetJson(pre);string retjson = Post(SysDefault.GetPlaybackParamByPlanUuid_Url, json);string ret = null;if (!string.IsNullOrEmpty(retjson)){ret = retjson;// JsonHelper.JSONString<OutPlaybackParamByPlanData>(retjson);
            }return ret;}}
}

页面--引用JQuery、EasyUI

public partial class VideoMulitHk8700 : BasePage{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){APIHelper.DefaultLoadData();//加载默认信息APIHelper.GetDefaultUUID();//控制用户-默认APIHelper.GetnetZoneData();//网域信息// APIHelper.SearchDevices("鹿角", "A4306000002");//--设备编号=encoderUuidstring strMN = "";if (Request["MN"] == null){strMN = GetMN;}else{strMN = Request["MN"].ToString();}this.hfmn.Value = strMN;this.hfuserid.Value = this.LoginUserInfo.UserInfoID;this.hfip.Value = SysDefault.IP;}}}

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>视频8700</title>
<script src="/Video/Scripts/VideoHK8700.js" type="text/javascript"></script><style type="text/css">.leftTree {border: 1px solid #F5F5F5;float: left;width: 15%;overflow: hidden;text-wrap: none;word-break: keep-all;white-space: nowrap;text-overflow: ellipsis;border-right: 5px solid #F3F3F3;background-color: white;}.leftEdit {width: 84.5%;float: left;/*background-color: white;*/}ul li {margin-left:4px;}</style>
</head>
<body><form id="form1" runat="server"><asp:HiddenField ID="hfmn"  runat="server" /><asp:HiddenField ID="hfuserid"  runat="server" /><asp:HiddenField ID="hfip"  runat="server" /><div class="leftTree"><ul id="tree1" class="tree" style="margin-top:5px;"></ul></div><div class="leftEdit"><div class="ActiveX" style="margin-left:10px;"><object classid="clsid:9ECD2A40-1222-432E-A4D4-154C7CAB9DE3" id="spv"   /></div></div></form>
</body>
</html>

VideoHK8700.js

$(function () {if (!!window.ActiveXObject || "ActiveXObject" in window) {try {var obj = new ActiveXObject("CAMERACONFIGOCX.CameraConfigOCXCtrl.1");//已经注册
            loadtree();}catch (e) {installPlug();return;}}else {showTipsMsg('请选用IE加载视频!', '2500', '5')}
});function installPlug() {showConfirmMsg("您还没有安装浏览该视频的插件!是否进行安装?安装成功后请重新启动IE!", function fc() {var xip = $("#hfip").val();location.href = "http://" + xip + "/views/home/file/cmsocx.exe";});}//设置滚动条的显示与隐藏
$(document).ready(function () {$(".leftTree").hover(function () {$(this).css("overflow", "scroll");}, function () {$(this).css("overflow", "hidden");});var curWidth = $(window).width();var curHeight = $(window).height();$(".leftTree").height(curHeight - 20);$(".leftEdit").width(curWidth - $(".leftTree").width() - 12);$("#spv").width(curWidth - $(".leftTree").width() - 20);$("#spv").height(curHeight - 20);
});function loadtree() {var MN = $("#hfmn").val();var userid = $("#hfuserid").val();$.ajax({type: 'POST',url: '/Video/Ajax/GetInfo8700.ashx',data: { "action": "LoadTree", "MN": MN, "userid": userid },success: function (data) {if (data != null && data != "") {var jsonData = eval('(' + data + ')');$('#tree1').tree({data: jsonData,onClick: function (node) {//节点事件
                        addvideo(node.id);},onLoadSuccess: function (node, data) {//加载视屏if (data != null){InitSpvx();//初始化SetLocalParam();//本地参数isopenvideo = true;}}});}}});
}function addvideo(cameraUuid) {$.ajax({type: 'POST',url: '/Video/Ajax/GetInfo8700.ashx',data: { "action": "LoadVideo", "cameraUuid": cameraUuid },success: function (xml) {if (xml != null && xml != "") {var jsonData = eval('(' + xml + ')');if (jsonData.data != "") {var spvxOcx = document.getElementById("spv");var ret = spvxOcx.MPV_StartPreview(jsonData.data);if (ret != 0) {alert("预览失败");}}else {alert("查询预览参数失败");}}}});
}function InitSpvx() {var ocxObj = document.getElementById("spv");var languageType = 1;var ret = ocxObj.MPV_Init(languageType);if (ret != 0) {alert("初始化失败");}
}
function stopAllPreview() {var ocxObj = document.getElementById("spv");var ret = ocxObj.MPV_StopAllPreview();if (ret != 0) {alert("停止所有预览失败");}
}function UninitSpvx() {var ocxObj = document.getElementById("spv");var ret = ocxObj.MPV_Uninit();if (ret != 0) {alert("反初始化失败");}
}function SetLocalParam() {var ocxObj = document.getElementById("spv");var devPxRa = screen.deviceXDPI / screen.logicalXDPI;var height = $('#spv').height() * devPxRa;var width = $('#spv').width() * devPxRa;var xml = '<?xml version="1.0" encoding="UTF-8"?> ' +'<localParam> ' +'<width>' + width + '</width> ' +'<height>' + height + '</height> ' +'<picType>1</picType> ' +'<capturePath>C:\\Hikvision</capturePath> ' +'<recordSize>2</recordSize> ' +'<recordPath>C:\\Hikvision</recordPath> ' +'<limitPreviewTime>0</limitPreviewTime> ' +'</localParam>';var ret = ocxObj.MPV_SetLocalParam(xml);if (ret != 0) {alert("设置本地参数失败");}
}var isopenvideo = false;window.onbeforeunload = function (e) {if (isopenvideo) {//页面离开  还原
            stopAllPreview();UninitSpvx();isopenvideo = false;}}

/****视频回看****/

页面--后台代码与前面查看实时视频一致

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>视频8700回放</title><script src="/Video/Scripts/VideoHK8700Back.js" type="text/javascript"></script><style type="text/css">.leftTree {border: 1px solid #F5F5F5;float: left;width: 15%;overflow: hidden;text-wrap: none;word-break: keep-all;white-space: nowrap;text-overflow: ellipsis;border-right: 5px solid #F3F3F3;background-color: white;}.leftEdit {width: 84.5%;float: left;/*background-color: white;*/}ul li {margin-left:4px;}</style>
</head>
<body><form id="form1" runat="server"><asp:HiddenField ID="hfmn"  runat="server" /><asp:HiddenField ID="hfuserid"  runat="server" /><asp:HiddenField ID="hfip"  runat="server" /><div class="leftTree"><ul id="tree1" class="tree" style="margin-top:5px;"></ul></div><div class="leftEdit"><div id="divFind" class="containerbox"><div class="grid_4 lbl">开始时间:</div><div class="grid_10 val" ><input type="text" id="sTime" style="width:140px;" readonly="readonly" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="z-txt  easyui-validatebox grid_10 val" /></div><div class="grid_4 lbl">结束时间:</div><div class="grid_10 val" ><input type="text" id="eTime"readonly="readonly" style="width:140px;" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="z-txt  easyui-validatebox grid_10 val" /></div><div class="grid_8 val" style="width:80px;"><input type="button" class="btnSearch" value="回 放" onclick="search();" /></div></div><div class="ActiveX" ><object classid="clsid:863E7B58-A280-40A5-8394-CE33F4E7B654" id="spb"   /></div></div></form>
</body>
</html>

转载于:https://www.cnblogs.com/elves/p/10220043.html

海康8700视频调用相关推荐

  1. Android端海康监控视频调用-实例

    一. 开发环境 1. 操作系统:windows7(X64) 2. 开发工具:eclipse adt Build: v22.2.1-833290 JDK7 android SDK 3. 客户端设备版本: ...

  2. 海康摄像头视频调用出错,Jni Error(app bug): accessed stale local reference解决办法

    项目中要在Android手机中调用海康摄像头拍摄的画面,在公司网管配置好了网络地址(不要与其他局域网内地址冲突)和端口,并激活摄像头设备后,通过SADPTool(海康提供的摄像头搜索工具)可以自动检索 ...

  3. 海康摄像头视频实时监控

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 海康摄像 ...

  4. C#抓取海康录像机视频方法

    说明 通过后台代码抓取海康录像机视频的方法,需要将海康程序中自带的几个dll文件放在程序的根目录下面 dll下载地址https://download.csdn.net/download/chenwei ...

  5. 海康三维视频融合监控软件系统免费版,支持移动侦测告警

               海康三维视频融合监控软件系统免费版,支持移动侦测告警 一.古老的声音预警 千百年来,人们有养狗看家护院的习惯,并一直延续至今天. 当主人家门口或附近有陌生人的时候,狗会觉察到,开 ...

  6. Java下载海康历史视频并合并转码

    Java下载海康历史视频并合并转码 关于上一篇的升级版(补充一下,需要的小伙伴可能更明白点) 有时间补上,目前一直用的OneNote,很少分享了,也不知道好还是不好... function getNo ...

  7. python3.6 ,pyqt5获取海康录像机视频

    python3.6 ,pyqt5获取海康录像机视频 1. python 获取摄像机视频 直接上代码 Channels: 录像机32通道,01主流码 transportmode:multicas多播,u ...

  8. 海康工业相机Python调用实现连续实时拍照

    海康工业相机Python调用实现连续实时拍照 文章目录 海康工业相机Python调用实现连续实时拍照 前言: 参考链接: 提前设置: 图片数据流的获取: 代码: 前言: 海康的相机调用简直太复杂了.当 ...

  9. 利用flask解析海康摄像头视频

    利用flask解析海康摄像头视频 利用flask解析海康摄像头和大华摄像头的视频 一.安装依赖包 二.获取海康摄像头视频流 三.将视频流输出到Web页面 四. 创建HTML模板文件 利用flask解析 ...

  10. java 获取 海康 视频流_海康网络摄像机调用SDK解码Java版

    两个回调函数: FRealDataCallBack 实现预览回调数据 DecCallBack 解码回调函数 在HCNetSDK.java补充相关函数和结构声明 //播放库函数声明,PlayCtrl.d ...

最新文章

  1. rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能
  2. Hierarchical Attention Networks for Document Classification 阅读笔记
  3. 查询数据库占用磁盘大小
  4. 浅谈问题生成(Question Generation)
  5. ITK:图像的区域最大值
  6. windows下安装composer抛出Composer\Downloader\TransportException异常解决办法
  7. 孜然网址导航系统源码v1.0
  8. ADF开发遇到错误:JBO-26030 无法锁定记录,其他用户持有该锁
  9. SQL必知必会-创建表和操纵表
  10. SQLServer优化资料整理(二)
  11. ASP.NET MVC5 + EF6 + BootStrap 实战系列教程
  12. C# 图解教程 第一章 C#和.NET框架
  13. 有目标就有动力!有目标就有意义!
  14. 汇编中DOSBox的使用
  15. 使用简短JS事件代码实现原生北京时间时钟
  16. 苹果手机语音备忘录在哪_苹果手机备忘录被家里宝宝误删了如何恢复呢?
  17. 变速器档位速比的matlab仿真
  18. 高端阅读:李开复与唐骏之争(转)
  19. 【手册】如何编译/修改三星手机Rom(一)
  20. miui13和鸿蒙系统,miui13有什么新功能_miui13新功能有哪些

热门文章

  1. Unity url编码转换
  2. 【转载】MATLAB入门书籍推荐
  3. html制作象棋教程入门教程,canvas 纯js 绘制中国象棋棋盘
  4. Minecraft 1.19.2 Forge模组开发 01.Idea开发环境配置
  5. 开源免费财务软件中文版GnuCash
  6. plc secs通讯协议_一种SECSGEM通讯协议转换的方法与流程
  7. swfobject的使用
  8. flash插件java_[Java教程]SWFObject Flash 增强插件
  9. idea 2017 破解方法
  10. JDK10安装与配置