求助:关于C++builder调用海康威视SDK(VM)二次开发 [问题点数:150分]

Bbs1
本版专家分:0
结帖率 0%
Bbs6
本版专家分:7467
Blank
红花 2018年8月 Delphi大版内专家分月排行榜第一
2018年7月 Delphi大版内专家分月排行榜第一
2018年4月 Delphi大版内专家分月排行榜第一
2018年3月 Delphi大版内专家分月排行榜第一
Blank
黄花 2016年11月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2011年10月 其他开发语言大版内专家分月排行榜第三
2010年8月 其他开发语言大版内专家分月排行榜第三
2007年5月 其他开发语言大版内专家分月排行榜第三
Bbs4
本版专家分:1595
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs6
本版专家分:7467
Blank
红花 2018年8月 Delphi大版内专家分月排行榜第一
2018年7月 Delphi大版内专家分月排行榜第一
2018年4月 Delphi大版内专家分月排行榜第一
2018年3月 Delphi大版内专家分月排行榜第一
Blank
黄花 2016年11月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2011年10月 其他开发语言大版内专家分月排行榜第三
2010年8月 其他开发语言大版内专家分月排行榜第三
2007年5月 其他开发语言大版内专家分月排行榜第三
Bbs5
本版专家分:4107
HCNetSDKV5.1.1.4_build20150420_WIN64_CN
完完整整的C++ 海<em>康威</em>视SDK<em>二次开发</em>。
使用C#基于海康SDK的二次开发
使用C++在海康网络设备SDK的基础上进行进一步的封装,然后使用C#开发界面进行<em>调用</em>。
使用qt和海康威视摄像机SDK
代码实现:使用qt多线程<em>调用</em>海<em>康威</em>视的摄像机,防止界面卡死
康威二次开发问题
海<em>康威</em>视没有提供web端通过时间区间下载文件,本示例在海<em>康威</em>视提供的demo和web开发版本上组合通过重新写了个接口来实现。不明白的可以联系 讨论。
海康最新的sdk vb版模块
2014版最新SDK,值得一用。使用原C版SDK头文件,结合开发手册最新翻译更新。
康威sdk java demo
海<em>康威</em>视<em>sdk</em> java demo,配合https://blog.csdn.net/qq_35583089/article/details/80631069
康威视DVR Delphi Demo 海康二次开发
海<em>康威</em>视 <em>二次开发</em> delphi <em>sdk</em> demo delphi7 正常编译,实时画面传输。
C#调用康威视相机
用C#<em>调用</em>海<em>康威</em>视工业相机<em>sdk</em>,可以实现打开相机,采集图片,保存图片,配置参数等功能。适合新手学习C#<em>调用</em>海康相机
Android 海康监控SDK接入二次开发(网络监控)
这是同轴电缆到网络监控的换代进行的代码改版。集成了实时预览、回放、通道预判断、去除移动侦测。
unity接入海康威sdk
ffmpeg算法支持win64位系统,支持画面多开,会释放内存,不会造成内存溢出。
康威视开发SDK
NET SDK V5.2.7.5
康威视 java B/S SDK 完美无瑕
最近项目用到了一个<em>调用</em>海<em>康威</em>视摄像头实现外网网页预览的需求,由于第一次接触这类需求,不免有些焦头烂额,现终于将需求实现,故,上传Demo,并希望帮到要用的人。废话不多说,直接上代码
康威视 web二次开发 内附API 最新demon
CH_WEB3.0控件开发包V1.1.0_Win32 海<em>康威</em>视web<em>二次开发</em> 官方文档 包含插件,apiPDF版 网络访问摄像头 监控
海康卫视开发dll文件
#region using System; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; using System.Text; using System.Threading; using SocketLibrary; #endregion namespace HkwsSDK { /// /// 在海<em>康威</em>视的SDK包上,再进行封装,供简单直接的<em>调用</em>. /// 目前可以控制硬盘录像机和解码器,需要两者密码一样. /// public class HKWS : IDisposable { #region (0)变量定义 /// /// 发现的文件信息结构 /// private readonly NetSDK.NET_DVR_FIND_DATA[] FindData = new NetSDK.NET_DVR_FIND_DATA[1000]; /// /// 远程录像状态 /// public int _StatusSaveMp4; /// /// 功能:设定播放延迟和流畅。 /// 调节播放的延时和流畅程度,如果buffNum值越大,播放的流畅性越好, /// 相应的延时比较大,buffNum值越小,播放的延时很小, /// 但是当网络不太顺畅的时候,会有丢帧现象,感觉播放不会很流畅。 /// 一般设置的帧缓冲大于等于6帧时,音频预览才会正常, /// 如果不需要音频预览,只需要视频实时性则这个值可以设置的更小。 /// public int buffNum = 10; public int bytesReturned; public int channel = 1; public int channelCount = 5; // 共8个通道 public int channelStart = 1; /// /// 客户端信息结构 /// public NetSDK.NET_DVR_CLIENTINFO ClientInfo; /// /// 解码器通道信息 /// public NetSDK.NET_DVR_MATRIX_DEC_CHAN_INFO dci; /// /// 解码器设备配置信息结构 /// public NetSDK.NET_DVR_DEVICECFG DecoderDeviceCfg; /// /// 解码器设备信息结构体结构实体化 /// public NetSDK.NET_DVR_DEVICEINFO DecoderDeviceInfo; /// /// 解码器信息结构体实例化 /// public Server_Info DecoderInfo; /// /// 解码器登录用户id /// public int decoderUserID; /// /// 硬盘录像机设备配置信息结构 /// public NetSDK.NET_DVR_DEVICECFG DvrDeviceCfg; /// /// 硬盘录像机设备信息结构体结构 /// public NetSDK.NET_DVR_DEVICEINFO DvrDeviceInfo; /// /// 硬盘录像机信息结构体实例化 /// public Server_Info DvrInfo; public int[] fileCount = new int[9]; /// /// 输出最新的文件信息,初始化为最大为9的结构体数组 /// public NewRec FileLastRec = new NewRec(9); public int findHandle; // 查找文件的句柄 /// /// 在线视频播放状态,确保在线视频只播放一次 /// private int isOnline; /// /// jpeg文件格式配置结构 /// public NetSDK.NET_DVR_JPEGPARA JpegPara; /// /// 输出JPG文件名的数组,共9 /// public string[] jpgName = new string[9]; public DateTime[] lastFileTime = new DateTime[9]; public int lt; /// /// 解码器实时解码配置信息 /// public NetSDK.NET_DVR_MATRIX_DYNAMIC_DEC mdd; /// /// 保存录像到本地时候的mp4文件名数组,[1-8]输出1-8通道的文件名 /// public string[] mp4FileName = new string[9]; /// /// 实例化视频上传类 /// public NetFileTransferClient Ntc = new NetFileTransferClient(); /// /// playHandle,NET_DVR_PlayBackByName() /// 或者NET_DVR_PlayBackByTime()的返回值 /// 功能:用来回放文件 /// public int[] playHandle = new int[9]; /// /// RealPlay句柄,NET_DVR_RealPlay的返回值,作为NET_DVR_StopRealPlay等函数的参数 /// 功能:用来播放或者捕获在线视频 /// public int[] realHandle = new int[9]; /// /// 远程回放播放句柄,NET_DVR_PlayBackByName()或者NET_DVR_PlayBackByTime()的返回值 /// public int remotePlayHandle; public bool st; /// /// 专用信息字符输出,自带\r\n /// public string strOut; /// /// 丢弃B帧的个数,取值为0,1,2,0-不丢,1-丢1个B帧,2-丢2个B帧; /// 在多路播放时,将B帧丢弃可以降低CPU的利用率, /// 不过当一路时,最好不丢弃B帧 /// public int throwNum = 1; public int userID; /// /// 语音对讲的句柄 /// public int vocieHandle = -1; /// /// 硬盘录像机设备的状态信息 /// public NetSDK.NET_DVR_WORKSTATE WorkState; public int xm; /// /// 构造函数,实例化类的运行 /// public HKWS() { mdd = new NetSDK.NET_DVR_MATRIX_DYNAMIC_DEC(); dci = new NetSDK.NET_DVR_MATRIX_DEC_CHAN_INFO(); ClientInfo = new NetSDK.NET_DVR_CLIENTINFO(); DvrDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DecoderDeviceInfo = new NetSDK.NET_DVR_DEVICEINFO(); JpegPara = new NetSDK.NET_DVR_JPEGPARA(); DvrInfo = new Server_Info(); DecoderInfo = new Server_Info(); DvrDeviceInfo = new NetSDK.NET_DVR_DEVICEINFO(); DecoderDeviceInfo = new NetSDK.NET_DVR_DEVICEINFO(); WorkState = new NetSDK.NET_DVR_WORKSTATE(); } #region Nested type: NewRec /// /// 输出最新的文件信息的结构体 /// public struct NewRec { /// /// 文件大小 /// public uint[] fileSize; /// /// 是否有文件信息 /// public bool[] info; /// /// 文件名 /// public string[] NewFileName; /// /// 开始录像时间 /// public NetSDK.NET_DVR_TIME[] startTime; /// /// 结束录像时间 /// public NetSDK.NET_DVR_TIME[] stopTime; /// /// 构造函数 /// /// 实例化参数 public NewRec(int i) { info = new bool[i]; fileSize = new uint[i]; NewFileName = new string[i]; startTime = new NetSDK.NET_DVR_TIME[i]; stopTime = new NetSDK.NET_DVR_TIME[i]; } } #endregion #region Nested type: Server_Info /// /// 硬盘录像机信息 /// public struct Server_Info { /// /// 报警输入个数 /// public int mAlarmInNum; /// /// 报警输出个数 /// public int mAlarmOutNum; /// /// 设备软件版本 /// public long mDevSoftVersion; /// /// 硬盘个数 /// public int mDiskNum; /// /// 序列号 /// public string mSerialNumber; /// /// Admin用户名 /// public string mServerAdminName; /// /// Admin密码 /// public string mServerAdminPasswd; /// /// 通道个数 /// public int mServerChannelNumber; /// /// ID /// public int mServerID; /// /// IP /// public string mServerIP; /// /// IP值 /// public int mServerIPvalue; /// /// 多点IP /// public string mServerMultiIP; /// /// 多点端口 /// public int mServerMultiIPvalue; /// /// 名称 /// public string mServerName; /// /// 端口号 /// public int mServerPort; /// /// DVR类型 /// public int mServerType; /// /// 起始通道 /// public int mStartChannel; } #endregion #endregion #region (1)初始化函数 /// /// 手工内存清理,可以被客户直接<em>调用</em> /// public void Dispose() { // 必须以Dispose(true)方式<em>调用</em>, // 以true告诉Dispose(bool disposing)函数是被客户直接<em>调用</em>的 Dispose(true); } /// /// 析构函数自动生成 Finalize 方法和对基类的 Finalize 方法的<em>调用</em>. /// 默认情况下,一个类是没有析构函数的,也就是说, /// 对象被垃圾回收时不会被<em>调用</em>Finalize方法 /// ~HKWS() { // 为了保持代码的可读性性和可维护性,千万不要在这里写释放非托管资源的代码 // 必须以Dispose(false)方式<em>调用</em>, // 以false告诉Dispose(bool disposing)函数是从垃圾回收器在<em>调用</em>Finalize时<em>调用</em>的 Dispose(false); } /// /// 无法被客户直接<em>调用</em> /// 如果 disposing 是 true, 那么这个方法是被客户直接<em>调用</em>的,那么托管的,和非托管的资源都可以释放 /// 如果 disposing 是 false, 那么函数是从垃圾回收器在<em>调用</em>Finalize时<em>调用</em>的,此时不应当引用其他托管对象所以,只能释放非托管资源 /// /// true或者false protected virtual void Dispose(bool disposing) { // 那么这个方法是被客户直接<em>调用</em>的,那么托管的,和非托管的资源都可以释放 if (disposing) { // 释放 托管资源 } //释放非托管资源 st = NetSDK.NET_DVR_Cleanup(); ClientInfo = new NetSDK.NET_DVR_CLIENTINFO(); WorkState = new NetSDK.NET_DVR_WORKSTATE(); DvrDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DecoderDeviceInfo = new NetSDK.NET_DVR_DEVICEINFO(); DecoderDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DecoderInfo = new Server_Info(); DvrDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DvrDeviceInfo = new NetSDK.NET_DVR_DEVICEINFO(); DvrInfo = new Server_Info(); mp4FileName = new string[9]; jpgName = new string[9]; // 那么这个方法是被客户直接<em>调用</em>的, // 告诉垃圾回收器从Finalization队列中清除自己,从而阻止垃圾回收器<em>调用</em>Finalize方法. if (disposing) GC.SuppressFinalize(this); } /// /// 初始化,包含登录硬盘录像机(DVR)等动作 /// /// 硬盘录像机IP /// 硬盘录像机端口 /// 硬盘录像机用户名 /// 硬盘录像机密码 /// 1成功,0失败 public int Init(string serverIP, int serverPort, string serverAdminName, string serverAdminPasswd) { if (String.IsNullOrEmpty(serverIP)) throw new ArgumentException("serverIP is null or empty.", "serverIP"); if (String.IsNullOrEmpty(serverAdminName)) throw new ArgumentException("serverAdminName is null or empty.", "serverAdminName"); if (String.IsNullOrEmpty(serverAdminPasswd)) throw new ArgumentException("serverAdminPasswd is null or empty.", "serverAdminPasswd"); isOnline = 0; strOut = null; DvrInfo.mServerIP = serverIP; DvrInfo.mServerPort = serverPort; DvrInfo.mServerAdminName = serverAdminName; DvrInfo.mServerAdminPasswd = serverAdminPasswd; st = NetSDK.NET_DVR_Init(); xm = NetSDK.NET_DVR_IsSupport(); st = NetSDK.NET_DVR_SetConnectTime(2000, 1); userID = NetSDK.NET_DVR_Login(DvrInfo.mServerIP, DvrInfo.mServerPort, DvrInfo.mServerAdminName, DvrInfo.mServerAdminPasswd, ref DvrDeviceInfo); DvrInfo.mServerID = userID; DvrInfo.mServerType = DvrDeviceInfo.byDVRType; DvrInfo.mStartChannel = DvrDeviceInfo.byStartChan; DvrInfo.mAlarmInNum = DvrDeviceInfo.byAlarmInPortNum; DvrInfo.mAlarmOutNum = DvrDeviceInfo.byAlarmOutPortNum; DvrInfo.mServerChannelNumber = DvrDeviceInfo.byChanNum; DvrInfo.mDiskNum = DvrDeviceInfo.byDiskNum; // ReSharper disable SuggestUseVarKeywordEvident StringBuilder strTemp = new StringBuilder(200); // ReSharper restore SuggestUseVarKeywordEvident //判断一下登录是否成功, 并输出错误. if (userID < 0) { int nErr = NetSDK.NET_DVR_GetLastError(); switch (nErr) { case NetSDK.NET_DVR_PASSWORD_ERROR: strTemp.AppendFormat("DVR服务器 {0} 用户名密码错误! \r\n", DvrInfo.mServerIP); Trace.WriteLine(strTemp); strOut = strTemp.ToString(); return 0; default: strTemp.AppendFormat(" DVR服务器 {0} 由于网络原因或DVR忙, 注册失败! \r\n", DvrInfo.mServerIP); Trace.WriteLine(strTemp); strOut = strTemp.ToString(); return 0; } } /* st = NetSDK.NET_DVR_GetDVRConfig(userID, 100, -1, ref DvrDeviceCfg, 200, ref bytesReturned); if (bytesReturned < 1) { strTemp.AppendFormat(" DVR服务器 {0}获取设备参数失败! \r\n", DvrInfo.mServerIP); Trace.WriteLine(strTemp); strOut = strTemp.ToString(); return 0; } DvrInfo.mDevSoftVersion = DvrDeviceCfg.dwSoftwareVersion; strOut += " 硬盘录像机软件版本为:" + DvrInfo.mDevSoftVersion + "\r\n"; */ //初始化视频播放和语音句柄 for (int i = 1; i /// 初始化(不登录),不包含登录硬盘录像机(DVR)等动作 /// /// 1成功,0失败 public int Init() { isOnline = 0; strOut = null; st = NetSDK.NET_DVR_Init(); xm = NetSDK.NET_DVR_IsSupport(); strOut = "SDK初始化完成。\r\n"; return 1; } /// /// 登录硬盘录像机(DVR) /// /// 硬盘录像机IP /// 硬盘录像机端口 /// 硬盘录像机用户名 /// 硬盘录像机密码 /// 登录超时时间 /// public int DvrLoginIn(string serverIP, int serverPort, string serverAdminName, string serverAdminPasswd, int loginTimeOut) { if (String.IsNullOrEmpty(serverIP)) throw new ArgumentException("serverIP为null或empty.", "serverIP"); if (String.IsNullOrEmpty(serverAdminName)) throw new ArgumentException("serverAdminName is null or empty.", "serverAdminName"); if (String.IsNullOrEmpty(serverAdminPasswd)) throw new ArgumentException("serverAdminPasswd is null or empty.", "serverAdminPasswd"); isOnline = 0; strOut = null; DvrInfo.mServerIP = serverIP; DvrInfo.mServerPort = serverPort; DvrInfo.mServerAdminName = serverAdminName; DvrInfo.mServerAdminPasswd = serverAdminPasswd; st = NetSDK.NET_DVR_SetConnectTime((uint)loginTimeOut, 1); userID = NetSDK.NET_DVR_Login(DvrInfo.mServerIP, DvrInfo.mServerPort, DvrInfo.mServerAdminName, DvrInfo.mServerAdminPasswd, ref DvrDeviceInfo); DvrInfo.mServerID = userID; DvrInfo.mServerType = DvrDeviceInfo.byDVRType; DvrInfo.mStartChannel = DvrDeviceInfo.byStartChan; DvrInfo.mAlarmInNum = DvrDeviceInfo.byAlarmInPortNum; DvrInfo.mAlarmOutNum = DvrDeviceInfo.byAlarmOutPortNum; DvrInfo.mServerChannelNumber = DvrDeviceInfo.byChanNum; DvrInfo.mDiskNum = DvrDeviceInfo.byDiskNum; // ReSharper disable SuggestUseVarKeywordEvident StringBuilder strTemp = new StringBuilder(200); // ReSharper restore SuggestUseVarKeywordEvident //判断一下登录是否成功, 并输出错误. if (userID < 0) { int nErr = NetSDK.NET_DVR_GetLastError(); switch (nErr) { case NetSDK.NET_DVR_PASSWORD_ERROR: strTemp.AppendFormat("DVR服务器 {0} 用户名密码错误! \r\n", DvrInfo.mServerIP); Trace.WriteLine(strTemp); strOut = strTemp.ToString(); return 0; default: strTemp.AppendFormat(" DVR服务器 {0} 由于网络原因或DVR忙, 注册失败! \r\n", DvrInfo.mServerIP); Trace.WriteLine(strTemp); strOut = strTemp.ToString(); return 0; } } /* // 不再在登录时获取硬盘录像机设备参数。 st = NetSDK.NET_DVR_GetDVRConfig(userID, 100, -1, ref DvrDeviceCfg, 200, ref bytesReturned); if (bytesReturned < 1) { strTemp.AppendFormat(" DVR服务器 {0}获取设备参数失败! \r\n", DvrInfo.mServerIP); Trace.WriteLine(strTemp); strOut = strTemp.ToString(); return 0; } DvrInfo.mDevSoftVersion = DvrDeviceCfg.dwSoftwareVersion; strOut += " 硬盘录像机软件版本为:" + DvrInfo.mDevSoftVersion + "\r\n"; */ //初始化视频播放和语音句柄 for (int i = 1; i /// 注销当前Dvr的登录用户,断开Dvr连接 /// /// public int DvrLoginOut() { strOut = ""; st = NetSDK.NET_DVR_Logout(userID); if (!st) { strOut = "从硬盘录像机注销用户" + userID + "失败.\r\n"; return 0; } ClientInfo = new NetSDK.NET_DVR_CLIENTINFO(); WorkState = new NetSDK.NET_DVR_WORKSTATE(); DvrDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DecoderDeviceInfo = new NetSDK.NET_DVR_DEVICEINFO(); DecoderDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DecoderInfo = new Server_Info(); DvrDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DvrDeviceInfo = new NetSDK.NET_DVR_DEVICEINFO(); DvrInfo = new Server_Info(); return 1; } /// /// 关闭硬盘录像机,释放SDK资源 /// /// 1成功,0失败 public int Close() { strOut = ""; if (userID > -1) { st = NetSDK.NET_DVR_Logout(userID); } if (!st) { strOut = "从硬盘录像机注销用户" + userID + "失败.\r\n"; return 0; } // st = NetSDK.NET_DVR_Cleanup(); Dispose(); if (!st) { strOut = "释放SDK资源失败.\r\n"; return 0; } strOut = "已关闭并释放硬盘录像机(DVR)相关资源.\r\n"; return 1; } /// /// 获取硬盘录像机工作状态 /// /// 1成功,0失败 public int IsWork() { st = NetSDK.NET_DVR_GetDVRWorkState(userID, ref WorkState); if (!st) { strOut = string.Format("获取硬盘录像机工作状态失败.\r\n"); return 0; } return 1; } /// /// 叠加车号 /// /// 车号 /// 1为叠加,0为取消叠加 /// public int CardNo(string numberPlate, char choice) { if (String.IsNullOrEmpty(numberPlate)) throw new ArgumentException("numberPlate is null or empty.", "numberPlate"); int byRetrun = 0; NetSDK.NET_DVR_SHOWSTRING subString = new NetSDK.NET_DVR_SHOWSTRING(); for (int i = 1; i /// 开始硬盘录像机远程手工录像 /// /// 起始的通道号 /// 录像通道的个数 /// 1成功,0失败 public int StartRemoteRec(int start, int cCount) { strOut = ""; xm = IsWork(); // 获取工作状态,刷新工作状态WorkState结构体内的数据. if (xm == 0) { return 0; } for (int i = start; i /// 结束硬盘录像机远程手工录像 /// /// 起始的通道号 /// 录像通道的个数 /// 1成功,0失败 public int StopRemoteRec(int start, int cCount) { strOut = ""; for (int i = start; i /// 由统计范围,来获取每个通道刚刚结束录像的文件名和时间信息, /// 使用结构FileLastRec[1-8]输出文件信息 /// /// 起始通道编号 /// 通道数量 /// 统计范围提前几个小时,应小于24,建议用1 /// public int LastRecInfo(int startChannel, int cCount, int hours) { //ReSharper disable SuggestUseVarKeywordEvident NetSDK.NET_DVR_TIME dvrStartTime = new NetSDK.NET_DVR_TIME(); NetSDK.NET_DVR_TIME dvrEndTime = new NetSDK.NET_DVR_TIME(); // ReSharper restore SuggestUseVarKeywordEvident DateTime curTime = DateTime.Now; // 初始化结束时间,为当前系统时间 dvrEndTime.dwYear = (UInt32) curTime.Year; dvrEndTime.dwMonth = (UInt32) curTime.Month; dvrEndTime.dwDay = (UInt32) curTime.Day; dvrEndTime.dwHour = (UInt32) curTime.Hour; dvrEndTime.dwMinute = (UInt32) curTime.Minute; dvrEndTime.dwSecond = 59; //初始化开始时间,为当前系统时间的前一小时 dvrStartTime.dwYear = (UInt32) curTime.Year; dvrStartTime.dwMonth = (UInt32) curTime.Month; if (curTime.Hour < hours) { dvrStartTime.dwDay = (UInt32) (curTime.Day - 1); dvrStartTime.dwHour = (UInt32) (curTime.Hour + 24 - hours); dvrStartTime.dwMinute = (UInt32) curTime.Minute; dvrStartTime.dwSecond = 0; } else { dvrStartTime.dwDay = (UInt32) curTime.Day; dvrStartTime.dwHour = (UInt32) (curTime.Hour - hours); dvrStartTime.dwMinute = (UInt32) curTime.Minute; dvrStartTime.dwSecond = 0; } for (int i = startChannel; i /// JPEG格式截图,使用jpgName[1-8]返回保存后的jpg文件名 /// /// 起始通道编号 /// 截图的通道数量 /// 目录名,如"C:\\" /// 1成功,0失败 public int CaptureJPG(int startChanel, int cCount, string DirName) { if (String.IsNullOrEmpty(DirName)) throw new ArgumentException("DirName is null or empty.", "DirName"); // ReSharper disable RedundantAssignment StringBuilder strFileName = new StringBuilder(); StringBuilder Pfilename = new StringBuilder(); // ReSharper restore RedundantAssignment // ReSharper disable SuggestUseVarKeywordEvident StringBuilder strTime = new StringBuilder(); // ReSharper restore SuggestUseVarKeywordEvident // ReSharper restore SuggestUseVarKeywordEvident JpegPara.wPicQuality = 2; JpegPara.wPicSize = 0; strTime.AppendFormat("{0:yyyyMMdd}_{0:HHmmss}", DateTime.Now); Pfilename = new StringBuilder(); //Pfilename.Append(DirName); P_fileName = strFileName.AppendFormat("{0}_{1}_0", DvrInfo.mServerIP, strTime).ToString(); for (int i = startChanel; i /// 开始Mp4录像捕获,以mp4FileName[1-8]输出文件名 /// _StatusSaveMp4这个变量显示录像状态,1为正在录像,0为未录像状态 /// /// 起始通道编号 /// 通道数量 /// 要保存Mp4录像的目录,如"C:\\temp\\" /// 1成功,0失败 public int StartSaveMp4(int startChanel, int cCount, string DirName) { if (String.IsNullOrEmpty(DirName)) throw new ArgumentException("DirName is null or empty.", "DirName"); ClientInfo.linkMode = 0; ClientInfo.playWnd = new IntPtr(); ClientInfo.multiCastIP = "0.0.0.0"; StringBuilder strTime = new StringBuilder(); strTime.AppendFormat("{0:yyyyMMdd}_{0:HHmmss}", DateTime.Now); xm = IsWork(); // 获取工作状态,刷新工作状态WorkState结构体内的数据. if (xm == 0) { return 0; } for (int i = startChanel; i 5) { strOut = string.Format("第{0}通道的连接数已经有6个,无法继续连接该通道进行操作。\r\n", i); return 0; } ClientInfo.channel = i; realHandle[i] = NetSDK.NET_DVR_RealPlay(userID, ref ClientInfo); //NetSDK.NET_DVR_ClientSetVideoEffect(realHandle[i], 5, 5, 5, 5); //System.Diagnostics.Trace.WriteLine("StartMp4_userID:" + userID); string strFileNames = DirName + DvrInfo.mServerIP + "_" + strTime + "_0" + i + ".mp4"; st = NetSDK.NET_DVR_SaveRealData(realHandle[i], strFileNames); strOut = "开始保存第" + ClientInfo.channel + "路通道视频文件" + strFileNames + "\r\n"; Trace.WriteLine(strOut); Trace.WriteLine("realHandle句柄" + i + "为:" + realHandle[i] + "," + DateTime.Now); mp4FileName[i] = strFileNames; } strOut = "开始保存" + cCount + "路视频到本地计算机" + DirName + ".\r\n"; _StatusSaveMp4 = 1; return 1; } /// /// 开始Mp4录像捕获,以mp4FileName[1-8]输出文件名 /// _StatusSaveMp4这个变量显示录像状态,1为正在录像,0为未录像状态 /// 文件名称由头部+主体+通道号组成,格式为: 9092_081107165439_03.mp4 /// /// 起始通道编号 /// 通道数量 /// 要保存Mp4录像的目录,如"C:\\temp\\" /// 文件名头部,与文件名间用_连接 /// 文件名称主体 /// 1成功,0失败 public int StartSaveMp4(int startChanel, int cCount, string DirName, string FileNameBegin, string FileName) { if (String.IsNullOrEmpty(DirName)) throw new ArgumentException("DirName is null or empty.", "DirName"); if (String.IsNullOrEmpty(FileNameBegin)) throw new ArgumentException("FileNameBegin is null or empty.", "FileNameBegin"); if (String.IsNullOrEmpty(FileName)) throw new ArgumentException("FileName is null or empty.", "FileName"); ClientInfo.linkMode = 0; ClientInfo.playWnd = new IntPtr(); ClientInfo.multiCastIP = "0.0.0.0"; StringBuilder strTime = new StringBuilder(); strTime.AppendFormat("{0:yyyyMMdd}_{0:HHmmss}", DateTime.Now); xm = IsWork(); // 获取工作状态,刷新工作状态WorkState结构体内的数据. if (xm == 0) { return 0; } for (int i = startChanel; i 5) { strOut = string.Format("第{0}通道的连接数已经有6个,无法继续连接该通道进行操作。\r\n", i); return 0; } ClientInfo.channel = i; realHandle[i] = NetSDK.NET_DVR_RealPlay(userID, ref ClientInfo); //NetSDK.NET_DVR_ClientSetVideoEffect(realHandle[i], 5, 5, 5, 5); //System.Diagnostics.Trace.WriteLine("StartMp4_userID:" + userID); //string strFileNames = DirName + DvrInfo.mServerIP + "_" + strTime + "_0" + i + ".mp4"; string strFileNames = DirName + FileNameBegin + "_" + FileName + "_0" + i + ".mp4"; st = NetSDK.NET_DVR_SaveRealData(realHandle[i], strFileNames); strOut = "开始保存第" + ClientInfo.channel + "路通道视频文件" + strFileNames + "\r\n"; Trace.WriteLine(strOut); Trace.WriteLine("realHandle句柄" + i + "为:" + realHandle[i] + "," + DateTime.Now); mp4FileName[i] = strFileNames; } strOut = "开始保存" + cCount + "路视频到本地计算机" + DirName + ".\r\n"; _StatusSaveMp4 = 1; return 1; } /// /// 结束Mp4录像保存.以mp4FileName[1-8]输出文件名 /// _StatusSaveMp4这个变量显示录像状态,1为正在录像,0为未录像状态 /// /// 起始通道 /// 通道数量 /// 1成功,0失败 public int StopSaveMp4(int startChanel, int cCount) { for (int i = startChanel; i /// 保留一个封送回调函数fRealDataCallBack指针的委托对象引用 /// 保证委托不被回收 /// private NetSDK.fRealDataCallBack rdc; /// /// 委托函数,替代C++的回调函数NetSDK.fRealDataCallBack /// /// 就是realHandle:NET_DVR_RealPlay()的返回值 /// /// #define NET_DVR_SYSHEAD 1 // 系统头数据 /// #define NET_DVR_STREAMDATA 2 // 流数据 /// /// 存放数据的缓冲区指针, /// 当用户开始接收数据时,第一个包是40个字节的文件头,用户可以用这个头来打开播放器,以后回调的就是压缩的码流。 /// /// 缓冲区的大小 /// 就是登录到硬盘录像机的userID public void RealDataCallBack(int handle, int dataType, byte[] buf, int bufSize, int dwUser) { //ASCIIEncoding encoding = new ASCIIEncoding(); //System.Diagnostics.Trace.WriteLine(" realHandle:" + handle + "" + // ", dataType:" + dataType + // ", vBuffer:" + encoding.GetString(buf) + // ", bufSize:" + bufSize + // ", userID:" + userID); } /// /// 在线播放(多路,建议5路,不能大于8路) /// /// 需要播放在线视频的路数 /// 需要播放在线视频的窗口的句柄 /// 1成功,0失败 public int StartOnline(int cCount, IntPtr[] playWnd) { if (playWnd == null || playWnd.Length == 0u) throw new ArgumentException("playWnd is null or empty.", "playWnd"); if (isOnline == 1) { strOut = string.Format("本机已经开始远程监控视频,无法叠加.请先停止远程监控.\r\n"); return 0; } strOut = null; rdc = RealDataCallBack; // RealDataCallBack赋为回调函数fRealDataCallBack的参数 xm = IsWork(); // 获取工作状态,刷新工作状态WorkState结构体内的数据. if (xm == 0) { return 0; } for (int i = 1; i 5) { strOut = string.Format("第{0}通道的连接数已经有6个,无法继续连接该通道进行操作。\r\n", i); return 0; } Trace.WriteLine("第" + i + "通道在线监测前有" + WorkState.struChanStatic[i].dwLinkNum + "用户连接。"); ClientInfo.channel = i; ClientInfo.linkMode = 0; ClientInfo.playWnd = playWnd[i]; ClientInfo.multiCastIP = "0.0.0.0"; // 通过ClientInfo中的对应信息,获取realHandle句柄,同一个硬盘录像机每个通道返回的句柄都不一样 realHandle[i] = NetSDK.NET_DVR_RealPlay(userID, ref ClientInfo); if (realHandle[i] == -1) { int err = NetSDK.NET_DVR_GetLastError(); strOut = "访问IP:" + DvrInfo.mServerIP + ",通道" + i + "连接启动失败 err = " + err + "\r\n"; } else { st = NetSDK.NET_DVR_SetPlayerBufNumber(realHandle[i], buffNum); st = NetSDK.NET_DVR_ThrowBFrame(realHandle[i], throwNum); NetSDK.NET_DVR_SetRealDataCallBack(realHandle[i], rdc, userID); if (!st) { int err = NetSDK.NET_DVR_GetLastError(); strOut = string.Format("访问IP:{0},通道{1}获取码流失败 err = {2}\r\n", DvrInfo.mServerIP, i, err); } } } isOnline = 1; return 1; } /// /// 停止在线播放(多路,建议5路,不能大于8路) /// /// 1成功,0失败 public int StopOnline(int cCount) { strOut = null; for (int i = 1; i < 0) { strOut = "没有视频在线播放,无法停止\r\n"; return 0; } NetSDK.NET_DVR_StopRealPlay(realHandle[i]); } GC.KeepAlive(rdc); isOnline = 0; strOut = "已停止视频在线播放\r\n"; return 1; } #endregion #region (6)回放本地视频 /// /// 开始回放视频(多路,建议5路,不能大于8路) /// /// 需要回放的路数 /// 需要回放的文件[1-9]的string字符数组 /// 需要播放回放视频的窗口的句柄,[1-9]的IntPtr数组 /// public void StartPlay(int cCount, string[] strName, IntPtr[] playWnd) { if (strName == null || strName.Length == 0u) throw new ArgumentException("strName is null or empty.", "strName"); if (playWnd == null || playWnd.Length == 0u) throw new ArgumentException("playWnd is null or empty.", "playWnd"); for (int nPort = 1; nPort /// 减速播放,共支持4级变速 /// 变速在多路同时回放时,会出现不一致 /// /// 路数 /// public int SlowPlay(int cCount) { for (int nPort = 1; nPort /// 加速播放,共支持4级变速 /// 变速在多路同时回放时,会出现不一致 /// /// 路数 /// public int FastPlay(int cCount) { for (int nPort = 1; nPort /// 停止回放(多路,建议5路,不能大于8路) /// /// public int StopPlay(int cCount) { for (int nPort = 1; nPort /// 暂停多路回放 /// /// /// public int PausePlay(int cCount) { for (int nPort = 1; nPort /// 恢复多路回放 /// /// /// public int ResurePlay(int cCount) { for (int nPort = 1; nPort /// 保留一个封送回调函数fVoiceDataCallBack指针的委托对象引用 /// 保证委托不被回收 /// private static NetSDK.fVoiceDataCallBack vdc; /// /// fVoiceDataCallBack委托要用的函数参数 /// /// NET_DVR_StartVoiceCom ()的返回值 /// 原为存放数据的缓冲区指针,现为缓冲区 /// 缓冲区的大小 /// 数据类型 /// 0- 客户端采集的音频数据 /// 1- 客户端收到设备端的音频数据 /// 用户数据,就是NET_DVR_StartVoiceCom中用户数据 public void VoiceDataCallBack(int voiceComHandle, byte[] recvDataBuffer, int bufSize, byte audioFlag, int dwUser) { //ASCIIEncoding encoding = new ASCIIEncoding(); //System.Diagnostics.Trace.WriteLine(" voiceComHandle:" + voiceComHandle + "" + // ", audioFlag:" + audioFlag + // ", recvDataBuffer:" + encoding.GetString(recvDataBuffer) + // ", bufSize:" + bufSize + // ", dwUser:" + dwUser); } /// /// 开启语音对讲 /// /// 对讲音量 /// 1成功,0失败 public int StartVoiceTalk(uint clientVolume) { vdc = VoiceDataCallBack; // VoiceDataCallBack赋为回调函数fVoiceDataCallBack的参数 vocieHandle = NetSDK.NET_DVR_StartVoiceCom(userID, vdc, 88); if (vocieHandle >= 0) { strOut = "语音对讲开启成功\r\n"; } NetSDK.NET_DVR_SetVoiceComClientVolume(vocieHandle, clientVolume); return 1; } /// /// 停止语音对讲 /// /// 1成功,0失败 public int StopVocieTalk() { if (vocieHandle >= 0) { if (NetSDK.NET_DVR_StopVoiceCom(vocieHandle)) { vocieHandle = -1; strOut = "已关闭语音对讲!\r\n"; } else { strOut = "关闭语音对讲失败!\r\n"; return 0; } } else { strOut = "还未开始语音对讲,无法关闭.\r\n"; } GC.KeepAlive(vdc); GC.Collect(); return 1; } /// /// 开始语音对讲(DirectX) /// /// public int StartChat() { return 1; } /// /// 停止语音对讲(DirectX) /// /// public int StopChat() { return 1; } #endregion #region (8)电视墙控制 /// /// 切换dvr监控视频到指定电视墙等离子电视上 /// 使用前提:电视墙的9个解码器端口,用户名,密码都一样 /// /// 来源DVR的IP /// 来源DVR的端口 /// 来源DVR的用户名 /// 来源DVR的密码 /// 等离子电视编号 /// 统一的解码器端口 /// 统一的解码器用户名 /// 统一的解码器密码 /// /// 因为1解码器对应2等离子电视,本函数封装了解码器,解码器不直接可见 /// 所以解码器端口,用户名,密码都要统一成一样. /// /// 1成功,0失败 public int TVWallSwitch(string dvrIp, int dvrPort, string dvrUserName, string dvrPass, string tvNo, int decoderPort, string decoderUserName, string decoderUserPass) { if (String.IsNullOrEmpty(dvrIp)) throw new ArgumentException("dvrIp is null or empty.", "dvrIp"); if (String.IsNullOrEmpty(dvrUserName)) throw new ArgumentException("dvrUserName is null or empty.", "dvrUserName"); if (String.IsNullOrEmpty(dvrPass)) throw new ArgumentException("dvrPass is null or empty.", "dvrPass"); if (String.IsNullOrEmpty(tvNo)) throw new ArgumentException("tvNo is null or empty.", "tvNo"); if (String.IsNullOrEmpty(decoderUserName)) throw new ArgumentException("decoderUserName is null or empty.", "decoderUserName"); if (String.IsNullOrEmpty(decoderUserPass)) throw new ArgumentException("decoderUserPass is null or empty.", "decoderUserPass"); string eDec = ""; int part = 0; switch (int.Parse(tvNo)) { case 1: eDec = "172.20.194.151"; part = 1; break; case 2: eDec = "172.20.194.151"; part = 2; break; case 3: eDec = "172.20.194.152"; part = 1; break; case 4: eDec = "172.20.194.152"; part = 2; break; case 5: eDec = "172.20.194.153"; part = 1; break; case 6: eDec = "172.20.194.153"; part = 2; break; case 7: eDec = "172.20.194.154"; part = 1; break; case 8: eDec = "172.20.194.154"; part = 2; break; case 9: eDec = "172.20.194.155"; part = 1; break; case 10: eDec = "172.20.194.155"; part = 2; break; case 11: eDec = "172.20.194.156"; part = 1; break; case 12: eDec = "172.20.194.156"; part = 2; break; case 13: eDec = "172.20.194.157"; part = 1; break; case 14: eDec = "172.20.194.157"; part = 2; break; case 15: eDec = "172.20.194.158"; part = 1; break; case 16: eDec = "172.20.194.158"; part = 2; break; case 17: eDec = "172.20.194.159"; part = 1; break; case 18: eDec = "172.20.194.159"; part = 2; break; } // 初始化电视墙制定解码器,登录进解码器 xm = TVWallLoginIn(eDec, decoderPort, decoderUserName, decoderUserPass); // 更改eDec 解码器(通过4合1画面整合,物理连接了int.Parse(textBoxTVNo.Text)号等离子电视)的动态解码信息 // part=1时,使该解码器解码当前已经登录的硬盘录像机的第1-4路监控画面, // 对应解码器的第0-3动态解码 // part=2时,使该解码器解码当前已经登录的硬盘录像机的第5-8路监控画面, // 对应解码器的第4-7动态解码 // 本函数适合远程调度计量端使用.设定完后,登出解码器。 xm = TvWallSet(dvrIp, dvrPort, dvrUserName, dvrPass, part, int.Parse(tvNo)); if (xm != 1) { strOut += "切换出错。未能将DVR " + dvrIp + " 监控画面切换到" + tvNo + "号等离子电视上。\r\n"; return 0; } xm = TVWallLoginOut(); strOut += "已将DVR " + dvrIp + " 监控画面切换到 " + tvNo + " 号等离子电视上。\r\n"; return 1; } /// /// 电视墙对应的解码器初始化 /// /// 解码器IP地址 /// 解码器端口 /// 解码器用户名 /// 解码器密码 /// public int TVWallLoginIn(string decoderIP, int decoderPort, string decoderUserName, string decoderUserPass) { if (String.IsNullOrEmpty(decoderIP)) throw new ArgumentException("decoderIP is null or empty.", "decoderIP"); if (String.IsNullOrEmpty(decoderUserName)) throw new ArgumentException("decoderUserName is null or empty.", "decoderUserName"); if (String.IsNullOrEmpty(decoderUserPass)) throw new ArgumentException("decoderUserPass is null or empty.", "decoderUserPass"); isOnline = 0; strOut = null; DecoderInfo.mServerIP = decoderIP; DecoderInfo.mServerPort = decoderPort; DecoderInfo.mServerAdminName = decoderUserName; DecoderInfo.mServerAdminPasswd = decoderUserPass; st = NetSDK.NET_DVR_SetConnectTime(2000, 1); decoderUserID = NetSDK.NET_DVR_Login(DecoderInfo.mServerIP, DecoderInfo.mServerPort, DecoderInfo.mServerAdminName, DecoderInfo.mServerAdminPasswd, ref DecoderDeviceInfo); DecoderInfo.mServerID = decoderUserID; DecoderInfo.mServerType = DecoderDeviceInfo.byDVRType; DecoderInfo.mStartChannel = DecoderDeviceInfo.byStartChan; DecoderInfo.mAlarmInNum = DecoderDeviceInfo.byAlarmInPortNum; DecoderInfo.mAlarmOutNum = DecoderDeviceInfo.byAlarmOutPortNum; DecoderInfo.mServerChannelNumber = DecoderDeviceInfo.byChanNum; DecoderInfo.mDiskNum = DecoderDeviceInfo.byDiskNum; // ReSharper disable SuggestUseVarKeywordEvident StringBuilder strTemp = new StringBuilder(200); // ReSharper restore SuggestUseVarKeywordEvident //判断一下登录是否成功, 并输出错误. if (decoderUserID < 0) { int nErr = NetSDK.NET_DVR_GetLastError(); switch (nErr) { case NetSDK.NET_DVR_PASSWORD_ERROR: strTemp.AppendFormat("解码器 {0} 用户名密码错误! \r\n", DecoderInfo.mServerIP); Trace.WriteLine(strTemp); strOut = strTemp.ToString(); return 0; default: strTemp.AppendFormat(" 解码器 {0} 由于网络原因或解码器忙, 注册失败! \r\n", DecoderInfo.mServerIP); Trace.WriteLine(strTemp); strOut = strTemp.ToString(); return 0; } } /* st = NetSDK.NET_DVR_GetDVRConfig(decoderUserID, 100, -1, ref DecoderDeviceCfg, 200, ref bytesReturned); if (bytesReturned < 1) { strTemp.AppendFormat(" 解码器 {0}获取设备参数失败! \r\n", DecoderInfo.mServerIP); Trace.WriteLine(strTemp); strOut = strTemp.ToString(); return 0; } DecoderInfo.mDevSoftVersion = DvrDeviceCfg.dwSoftwareVersion; strOut += " 解码器软件版本为:" + DecoderInfo.mDevSoftVersion + "\r\n"; */ return 1; } /// /// 注销当前Dec的登录用户,断开Dec连接 /// /// public int TVWallLoginOut() { strOut = ""; st = NetSDK.NET_DVR_Logout(decoderUserID); if (!st) { strOut = "从解码器录像机注销用户" + decoderUserID + "失败.\r\n"; return 0; } ClientInfo = new NetSDK.NET_DVR_CLIENTINFO(); WorkState = new NetSDK.NET_DVR_WORKSTATE(); DvrDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DecoderDeviceInfo = new NetSDK.NET_DVR_DEVICEINFO(); DecoderDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DecoderInfo = new Server_Info(); DvrDeviceCfg = new NetSDK.NET_DVR_DEVICECFG(); DvrDeviceInfo = new NetSDK.NET_DVR_DEVICEINFO(); DvrInfo = new Server_Info(); return 1; } /// /// 设置指定个等离子电视,显示指定解码器的0-3路或者4-7路 /// 解码器4路会通过画面分割器整合成1路到单个等离子电视上 /// 需要传入DVR的IP,端口,用户名,密码等参数 /// /// dvr的ip /// dvr的端口 /// dvr的用户名 /// dvr的密码 /// 1为显示指定解码器的0-3路,2为4-7路 /// 等离子电视编号 /// public int TvWallSet(string dvrIP, int dvrPort, string dvrUserName, string dvrUserPass, int selectPart, int tvNo) { if (String.IsNullOrEmpty(dvrIP)) throw new ArgumentException("dvrIP is null or empty.", "dvrIP"); if (String.IsNullOrEmpty(dvrUserName)) throw new ArgumentException("dvrUserName is null or empty.", "dvrUserName"); if (String.IsNullOrEmpty(dvrUserPass)) throw new ArgumentException("dvrUserPass is null or empty.", "dvrUserPass"); selectPart--; mdd.struDecChanInfo.sDVRIP = dvrIP; mdd.struDecChanInfo.sUserName = dvrUserName; mdd.struDecChanInfo.sPassword = dvrUserPass; mdd.struDecChanInfo.wDVRPort = (ushort)dvrPort; mdd.struDecChanInfo.byTransProtocol = 0; mdd.struDecChanInfo.byTransMode = 0; mdd.dwSize = Marshal.SizeOf(mdd); for (int i = 0; i < 4; i++) { mdd.struDecChanInfo.byChannel = (byte)(i + 1); st = NetSDK.NET_DVR_MatrixStartDynamic(decoderUserID, i + selectPart * 4, ref mdd); if (!st) { strOut = string.Format("{0}站点第{1}路监控通道压秤,切换监控至{2}号电视墙失败.\r\n", mdd.struDecChanInfo.sDVRIP, mdd.struDecChanInfo.byChannel, tvNo); return 0; } } return 1; } /// /// 设置指定个等离子电视,显示指定解码器的0-3路或者4-7路 /// 解码器4路会通过画面分割器整合成1路到单个等离子电视上 /// 参数使用,当前已登录硬盘录像机 /// /// 1为显示指定解码器的0-3路,2为4-7路 /// 等离子电视编号 /// public int TvWallSet(int selectPart, int tvNo) { selectPart--; if (DvrInfo.mServerIP == null) { strOut = "还未登录到硬盘录像机,请先登录。或者使用另一个重载函数。\r\n"; return 0; } mdd.struDecChanInfo.byRes = ""; mdd.struDecChanInfo.sDVRIP = DvrInfo.mServerIP; mdd.struDecChanInfo.sUserName = DvrInfo.mServerAdminName; mdd.struDecChanInfo.sPassword = DvrInfo.mServerAdminPasswd; mdd.struDecChanInfo.wDVRPort = (ushort)
c# ,java,PHP 海康威视web最新版开发包,正在使用源码
web开发包,正在使用,亲测 C# ,java,PHP ,ASP.NET MVC ,不懂的可以留言联系
Qt海康威视SDK二次开发登录与预览
Qt开发海<em>康威</em>视网络摄像头SDK,网络摄像头的注册与预览,相关函数的用法与示例。
康威视全系列通用SDK开发包含详细说明
设备网络SDK是基于设备私有网络通信协议开发的,为后端设备(嵌入式网络硬盘录像机、视频服务器)、前端设备(网络摄像机、网络球机、IP模块)等产品服务的配套模块,用于远程访问和控制设备软件的<em>二次开发</em>。 适用于以下产品型号: DS-95xx、DS-96xxNVR; DS-90xx混合型硬盘录像机; DS-91xx、DS-81xx、DS-80xx、DS-70xx、DS-71xx、DS-7116、DS-72xx硬盘录像机; DS-60xx、DS-61xx视频服务器、编/解码器; iDS-6002HF/B双摄像机跟踪、iDS-6101HF智能设备(行为分析)、iDS52xx智能分析仪、iDS90XX、iDS91XX; DS630x_D、DS-6401HD多路解码器; IP摄像机(以下简称“IPC”):DS-2CD71xx、DS-2CD81xx、DS-2CD7xx、DS-2CD8xx、DS-2CD9xx; 其他IP设备:包含IP模块、IP快球等。 由于某些功能在此SDK版本中做了扩展,同时设备程序也做了相应的更新扩展,为了方便下文说明,此处将以上设备归为两类:如DS-7116、DS-81xx、DS-90xx、DS-91xx、DS-95xx、DS-96xx等系列设备称为V3.0以上版本支持的设备;如DS-80xx、IPC等设备称为V3.0以下版本支持的设备。 设备网络SDK主要功能 图像预览、文件回放和下载、云台控制、布防/撤防、语音对讲、日志管理、解码卡、远程升级、远程重启/关闭、格式化硬盘、参数配置(系统配置、通道配置、串口配置、报警配置、用户配置)、多路解码器、智能设备功能和获取设备能力集等。
基于海康威视Android二次开发
最近的一次开发工作中,需要开发一个app里面包含海<em>康威</em>视摄像机的监控和控制部分,通过和海康<em>sdk</em>工程师联系已经网上的资源,终于实现的所需要的功能,下面是我开发过程中的监控部分的代码和步骤,分享给大家,希望有所帮助,同时也是对网上资源的感谢。我的开发是使用Android studio,在局域网环境下,将几个摄像机插到路由器上,然后手机和摄像机在同一网段下实现的监控。
康威视驱动
海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!
海康sdkC#封装及调用例子
C#封装了海康<em>sdk</em> 1.登录摄像头功能 2.登出摄像头功能 3.抓图 4.开始录制视频结束录制视频 5.布防 6.布防回调(移动侦测报警,门禁主机报警信息,门禁身份证刷卡信息,门禁通行人数信息) 7.撤消布防
最新海康威视android官方SDK开发包以及开发文档
最新海<em>康威</em>视android官方SDK开发包以及开发文档,早就有了,共享给大家。
康威视驱动文件
海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!海<em>康威</em>视的dll文件,用于<em>二次开发</em>的好东西!
康威视荧石网络摄像头SDK开发C#Demo
C#开发的Demo,<em>调用</em>海<em>康威</em>视荧石网络摄像头的SDK,可以在线预览摄像头的视频信息,使用时将配置文件内的设备信息换成自己的
康威视网络摄像头SDK开发文档
海<em>康威</em>视网络摄像头SDK开发文档,包括SDK使用说明,<em>调用</em>顺序等
康威视链接
海<em>康威</em>视所需要的一切资源紧急<em>求助</em>。 播放库SDK编程指南(for Windows)V6.5.x.x.pdf
调用康威sdk获取车牌号(工程已包含sdk下载后可直接运行)
需要在前端摄像机启用事件抓图 详情见: https://blog.csdn.net/cngwj/article/details/79683825 环境: win10(10.0.16299.0)+ vs2017 <em>sdk</em>版本:CH-HCNetSDK_Win32_V5.3.2.15_build20171122 2018.2.26 <em>调用</em>海<em>康威</em>视<em>sdk</em>获取车牌号 2018.3.7 获取设备系统时间 2018.3.12 保存车牌号到csv文件 2018.3.14 对识别到的车牌号进行白名单比对
康威视Web二次开发插件+Demo
海<em>康威</em>视Web<em>二次开发</em>插件+Demo WebWeb 控件 V3.0V3.0V3.0V3.0基于 Active Active ActiveX和 NPAPI NPAPI NPAPI开发,接口封装于 开发,接口封装于 开发,接口封装于 开发,接口封装于 javascript javascriptjavascript javascript javascript 脚本,以 脚本,以 脚本,以 javascriptjavascriptjavascriptjavascript javascript javascript接口形式提供用户 接口形式提供用户 接口形式提供用户 接口形式提供用户 接口形式提供用户 集成,支持网页上实现预览、回放云台控制等功能。 集成,支持网页上实现预览、回放云台控制等功能。 集成,支持网页上实现预览、回放云台控制等功能。 集成,支持网页上实现预览、回放云台控制等功能。 集成,支持网页上实现预览、回放云台控制等功能。 该控件开发包仅支持 该控件开发包仅支持 该控件开发包仅支持 B/S 网页开发,不适用于 网页开发,不适用于 C/S 开发。 1.2 支
Delphi连接海康威视摄像头
delphi7通过<em>调用</em>海<em>康威</em>视的SDK,实现对海<em>康威</em>视数字摄像头进行浏览图像,图像抓拍
康威视x86 SDK加载文件
海<em>康威</em>视x86 SDK加载文件,主要包含海<em>康威</em>视<em>二次开发</em>中需要加载的头文件和库文件,免去了下载官网SDK大包的麻烦
康威视独立流媒体开发包(SDK)
海<em>康威</em>视独立流媒体开发包(SDK)源码,包括流媒体SDK开发说明书、流媒体系统使用说明书、流媒体-服务端程序、流媒体-转发服务端程序、流媒体-客户端程序、流媒体-服务端Demo、流媒体-转发服务端demo、流媒体-客户端demo
康威视视频监控WEB调用(官方开发包+Demo)
海<em>康威</em>视视频监控WEB<em>调用</em>开发,官方开发包+Demo案例,实现web浏览器在线视频监控预览,并附带例如视频下载等视频操作。
康威视SDK使用手册
海<em>康威</em>视网络SDK使用手册,支持设备型号、功能、开发包组件及库文件介绍,支持的Windows/Linux系统说明
康威视最新Android sdk 20160912
海<em>康威</em>视Android <em>sdk</em> 20160912 版本的,内有<em>sdk</em>文档说明, 下载的是http://download.csdn.net/download/liuyi_ln/9651391的版本,里面的demo有一个小的问题,修复后上传的
康威视最新SDK开发包/DEMO/产品大全
最全最新的SDK开发包 编解码设备 DVR:DS-9100、DS-8100、DS-8000-S、DS-8800、DS-7800、DS-7300、DS-7200、DS-7100、DS-7000等系列,包括-ST、-SH、-SE、-SN、-RT、-RH、-XT等; NVR:DS-96000N(-F24/-F16)(/H)(/I)、DS-96000N(-H24/-H16)(/H)(/I)、DS-9600N-I8/H8/F8/ST/XT、DS-8600N-I8/H8/F8/E8/ST/XT、DS-7800N-E1/SN/SNH、DS-7600N-ST/E2/E1、DS-7700N-ST/E4、DS-9500N-ST、DS-9500N-S、DS-9600N-SH、DS-7600N-S、DS-9664N-RX等系列; HDVR(混合型DVR):DS-9000、DS-8000-ST、DS-7600H-ST/-S等系列; 编码器: DS-6700、DS-6600、DS-6500(-JX)、DS-6100、DS-6401HFH系列视频服务器、DS-6000系列编/解码器; 解码器:DS-6300D(-JX)、DS-6400HD(-JX/-T)、DS-6500D(-T)系列解码器
康威sdk开发中返回的错误码
海<em>康威</em>视<em>sdk</em>开发中返回的错误码。有了错误码原因就好找了吗
海康车牌识别源码+执行文件
是一个测试程序 可以连接海康车牌识别 可以直接抓取车牌号码 上传的是delphi开发的 有源码 可直接使用
康威视android版SDK
海<em>康威</em>视android版开发文档,2016年9月12日版本,内含文档和使用示例及SDK
康威视网络相机实时监控二次开发java、js、demo
海康网络摄像机<em>二次开发</em>,实时监控和图片抓拍等功能,web端,支持IE\搜狗、360等常用浏览器,里面有本人写一个页面一个视频窗口的Demo和一个页面多个视频窗口的Demo,希望能给你带来帮助。
康威视SDK开发手册 CHM
海<em>康威</em>视设备\CH-HCNetSDK(Windows32)\设备网络SDK使用手册.chm 说明书指南 本说明书由前言、内容简介、SDK版本更新、各类设备支持的接口、编程导引、结构体和接口定义、帮助7部分组成。 “内容简介”中的“概述”部分介绍了SDK支持的设备型号、功能、SDK开发包的组件及各组件的功能等基本信息。 “SDK版本更新”部分介绍了SDK各版本新增的功能及接口等信息。 “各类设备支持的接口”部分罗列了各个设备支持的功能对应的接口。 “编程导引”部分给出了SDK主要模块的接口<em>调用</em>流程和几款典型设备的主要功能的接口<em>调用</em>流程等。 “结构体和接口定义”部分包含了SDK所有接口函数和结构体的详细说明。 “帮助”部分罗列了一些常见问题的解答。
康威视安卓移动端摄像头调用demo
海<em>康威</em>视安卓端<em>调用</em>摄像头,显示控制画面等 海<em>康威</em>视安卓端<em>调用</em>摄像头,显示控制画面等
康威视摄像头调用asp.net版本C#语言.zip
asp.net web版海<em>康威</em>视<em>二次开发</em><em>调用</em><em>sdk</em>,亲测可用,下载后只需更改设备信息即可
康威视网络摄像机客户端的二次开发
自己根据海<em>康威</em>视提供的<em>sdk</em>编写的网络摄像机的客户端,下载使用visual studio打开即可,实现了基本的功能,可以正常使用,代码中均有注释
康威视的调用例子(包含安卓和web端的调用)
海<em>康威</em>视的<em>调用</em>例子(包含安卓和web端的<em>调用</em>),包含安卓的demo和web端浏览器<em>调用</em>的demo,Android
海康相机 SDK二次开发 与 Halcon混合编程代码和说明手册
在海康相机SDK的基础上进行的<em>二次开发</em>,其次就是在Qt上实现这个相机,还有就是将原始图像数据转换为Halcon的,然后再通过Halcon算子对图像进行处理。
海康javaSDK及demo
不能免积分好难受,给一起开发java海康设备的同志,内部SDK和Demo,包括人脸对比,车牌识别等多个功能Demo.最重要的是SDK的版本比官网发布的要新很多
海康摄像头web二次开发demo(官方DEMO)
使用web方式控制海康摄像头,支持云台操作,录像操作,设置等操作。功能齐全。js脚本控制,支持全浏览器。谷歌浏览器。
康威视web开发包3.0
海<em>康威</em>视web开发包3.0, java开发<em>调用</em>海<em>康威</em>视摄像头的web端页面,海<em>康威</em>视web开发包3.0。海<em>康威</em>视web开发包3.0
康威视视频压缩卡技术文档
海<em>康威</em>视技术文档海<em>康威</em>视技术文档海<em>康威</em>视技术文档海<em>康威</em>视技术文档海<em>康威</em>视技术文档海<em>康威</em>视技术文档海<em>康威</em>视技术文档
康威视播放库SDK
播放库SDK主要功能 主要用于实时码流预览、录像文件回放、播放控制(如:暂停、单帧前进、单帧后退)、获取码流基本信息(如:创建文件索引、解码帧信息、分辨率、帧率)、支持JPG和BMP两种格式的播放截图等。
康威视安卓端 sdk(非萤石云)
海<em>康威</em>视安卓端<em>sdk</em>视频预览(非萤石云),可以预览视频与控制,语音对讲等
康威视ios版SDK
海<em>康威</em>视ios版开发SDK,2016年7月15日版本
重启海康威视DVR源码及海康威视开发包SDK、说明
重启海<em>康威</em>视DVR源码及海<em>康威</em>视开发包SDK、说明
康威视SDK开发包
目前在做海<em>康威</em>视的SDK<em>二次开发</em>,java端的,有些东西还很不熟,希望有朋友可以一起开发完成目标。 附件中是海康的Web控件开发包,其中CN_WEB3.0控件开发包V1.1.0_Win32\demo\codebase里面有相关Demo示例。 先运行“\demo\codebase”文件夹里面的WebComponentsKit.exe安装控件,然后双击运行“\demo\cn”里面的demo.html.在界面输入设备IP、端口等信息,登录后选择通道 进行预览。
康威视设备网络SDK使用手册.chm
设备网络SDK使用手册: 本说明书由前言、内容简介、SDK版本更新、各类设备支持的接口、编程引导、结构体和接口定义、帮助7部分组成。 “内容简介”中的“概述”部分介绍了SDK支持的设备型号、功能、SDK开发包的组件及各组件的功能等基本信息。 “SDK版本更新”部分介绍了SDK各版本新增的功能及接口等信息。 “各类设备支持的接口”部分罗列了各个设备支持的功能对应的接口。 “编程引导”部分给出了SDK主要模块的接口<em>调用</em>流程和几款典型设备的主要功能的接口<em>调用</em>流程等。 “结构体和接口定义”部分包含了SDK所有接口函数和结构体的详细说明。 “帮助”部分罗列了一些常见问题的解答。
康威视开发文档
海<em>康威</em>视产品的相关开发文档,包括SDK使用手册,设备网络编程指南(IPC)、(DVR)、(CVR)、(报警主机)、(解码器)、(抓拍器)
康威视 SDK ocx控件和demo
海<em>康威</em>视 SDK ocx NetVideoActiveX23 的demo程序
(完美全套)2016 最新海康威视android 官方SDK开发包开发文档 加小Demo(Android Studio 版)
(完美全套)2016 最新海<em>康威</em>视android 官方SDK开发包以及开发文档 ,加小Demo(Android Studio 版)
2018海康网络摄像头最新android sdk开发包
海康网络摄像头 硬盘录像机2018年 最新安卓<em>sdk</em>开发包 包括开发文档 demo 非常详细
海康相机SDK二次开发与Qt混合编程代码和说明手册
在海康相机SDK的基础上进行海康相机的<em>二次开发</em>,其次就是在Qt上实现这个相机,其中涉及到与Qt的混合编程,数据转换
康威视摄像头调用
实现海<em>康威</em>视网络摄像头的b/s模式<em>调用</em>,简单实用
海康视频WebSDK加Demo
海康视频WebSDK和Demo。
康威视SDK
海<em>康威</em>视SDK供监控视频<em>二次开发</em>用,C++开发的,并带有一个使用的DEMO
康威视设备网络SDK编程开发文档
本文档是海<em>康威</em>视设备网络SDK编程开发文档,<em>二次开发</em>必备
康威二次开发C# HCNetSDK
海<em>康威</em>视C# HCNetSDK <em>二次开发</em>
康威视网络视频SDK编程指南DVR-NVR
海<em>康威</em>视网络视频SDK编程指南,很实用!海康<em>二次开发</em>必看文档
海康播放库SDK
海<em>康威</em>视的视频播放库SDK,可以供<em>二次开发</em>,内含详细的函数使用说明。
海康 SDK编程指南
海<em>康威</em>视安卓端<em>二次开发</em>设备网络SDK变成指南,最新版!
康威视摄像头上位机软件
基于MFC做的海<em>康威</em>视的摄像头SDK的<em>二次开发</em>,实现基本的功能。满足基本使用需求
康威视Java2017-11开发包web版,内网亲测可用。
海<em>康威</em>视最新开发包Web版,只支持外部应用,亲测可用可回放可暂停加速慢速下载视频。
康威视 c# 开发实例
亲测可用 可以参考 官网上有 官网上有 官网上有 官网上有 去官网下载即可
海康web控件
海<em>康威</em>视web组件海<em>康威</em>视web组件海<em>康威</em>视web组件海<em>康威</em>视web组件
康威视网络摄像头Delphi调用Demo
海<em>康威</em>视网络摄像头系列<em>调用</em>demo
基于C#的海康摄像头二次开发
基于C#的海康摄像头<em>二次开发</em>,实现视频的采集显示,云台控制等功能,
开发调用康威视摄像头的web端页面
点击webComponents.exe安装 注意版本号和 32位 64位(这里跟正一下 木有64位尴尬尴尬) 如果没有合适的 请去官网下载 第二步:将文件夹中 demo.js demo.css webVideoCtrl.js 这3个文件导入你的项目,还需要jquery 没有的小伙伴可以导开发包里面的1.7
PreviewDemo-海康威视C#直播源码SDK.zip
【Demo内容说明】 ------------------------------------- 1. 实现预览、抓图(BMP、JPEG)、客户端录像、云台控制(2014-7-4) 2. 设备通道号在界面上手动输入,64路以下NVR的IP通道一般从33开始 3. bin文件夹下为已编译的可执行程序(Release版本) 4. SDK日志保存路径:"C:\\SdkLog\\"(2014-7-4) 【注意事项】 ------------------------------------ 1. 海<em>康威</em>视官方源码 2. 请将设备网络SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹等文件均拷贝到bin文件夹下。 HCNetSDKCom文件夹(包含里面的功能组件dll库文件)需要和HCNetSDK.dll、HCCore.dll一起加载,放在同一个目录下,且HCNetSDKCom文件夹名不能修改。 3. 如果自行开发软件不能正常实现相应功能,而且程序没有指定加载的dll库路径,请在程序运行的情况下尝试删除HCNetSDK.dll。如果可以删除,说明程序可能<em>调用</em>到系统盘Windows->System32目录下的dll文件,建议删除或者更新该目录下的相关dll文件;如果不能删除,dll文件右键选择属性确认SDK库版本。 4. 如按上述步骤操作后还是不能实现相应功能,请根据NET_DVR_GetLastError返回的错误号判断原因。
康威视H.265系列NVRSDK资料
海<em>康威</em>视H.265系列NVR(76 77 86 96 I K系列)<em>二次开发</em>包
康威视文档iVMS-8700_V2.9.2-C#
iVMS-8700_V2.9.2-C#海<em>康威</em>视 的demo开发模版附带文档
康威视的人脸识别的成功事例和相关文件
海<em>康威</em>视的人脸识别的成功事例和相关文件,欢迎下载谢谢
Delphi 调用海康接口
Delphi<em>调用</em>海康SDK,实时视频,抓拍,回放。Delphi<em>调用</em>海康SDK,实时视频,抓拍,回放。
海康视频监控 hik chrome 谷歌浏览器 二次开发 sdk 非ie
Chrome浏览器视频插件(采用PPAPI技术)内部<em>调用</em>视频平台OCX完成功能,所以Chrome浏览器视频插件的运行依赖于视频平台OCX,接口也依赖于视频平台OCX的接口。 Chrome浏览器插件支持32位Chrome和64位Chrome,安装插件时可以选择Chrome的位数。插件支持Chrome 49及以上版本,建议使用较新的稳定版本(Chrome60以上)。
康威视开发文档及Demo
海<em>康威</em>视开发文档及Demo,包括安卓和iOS相关代码,有需要的可以下载
康威视视频监控控件的使用和实现
海<em>康威</em>视视频监控控件的使用和实现,接口文档
利用海康威sdk 预览摄像机
利用海<em>康威</em>视<em>sdk</em> 预览摄像机
康威视webdemo+开发文档
海<em>康威</em>视web开发包3.0, java开发<em>调用</em>海<em>康威</em>视摄像头的web端页面,开发文档 nginx
康威视iVMS-8700平台SDKV2.6 HTTP-OpenAPI使用说明书
海<em>康威</em>视iVMS-8700平台SDKV2.6 HTTP-OpenAPI使用说明书
康威视web demo,含开发文档
海<em>康威</em>视的web demo,含开发文档
康威视Javademo
海<em>康威</em>视的Java版本测试demo(内含jar包),预览 , 回放等常用功能
康威视SDK HCNetSDK C#封装
海<em>康威</em>视SDK HCNetSDK C#封装
海康SDK delphi demo
海康<em>sdk</em><em>二次开发</em>delphi例程,包括回调函数
康威视网络摄像机SDK库文件
海<em>康威</em>视网络摄像机SDK库文件,各种动态链接库文件,以及主要接口测试程序
康威视图像处理Demo
对海<em>康威</em>视摄像头的<em>二次开发</em>,对抓取图像进行实时处理,基于VS2013和OpenCV
康威视开发文档及API函数介绍
<em>关于</em>海<em>康威</em>视采集卡的开发文档,里面附有相关API函数的介绍。
C#在网页调用康威视摄像头实例分享
C#在网页<em>调用</em>海<em>康威</em>视摄像头实例分享 C#在网页<em>调用</em>海<em>康威</em>视摄像头实例分享
文章热词 机器学习 机器学习课程 机器学习教程 深度学习视频教程 深度学习学习
相关热词 androidsdk 海康威视 海康威视运动检测c# c++研发应届生去海康威视可以么 关于c++builder的书 python就业班视 关于python培训班
我们是很有底线的