基于海康SDK开发文档分析+云台控制实现+经典案例

上一篇:海康威视java开发+demo运行+调用dll动态库坑

一、准备

  1. 海康的SDK下载 https://www.hikvision.com/cn/download_61.html
  2. 开发环境
  3. 海康设备(ip、端口、账号、密码)

二、SDK开发文档分析

  1. 开发文档位置:CH-HCNetSDKV5.3.6.30_build20180816_Win64 ->开发文档 -> 设备网络SDK使用手册.chm
  2. 打开文档注意下面这两个地方(这两个地方是开发寻找调用的接口的关键)
  3. 由于该文档并不是开发文档,所以我们自己构建结构体不知道应该怎样定义(举一个典型的例子)

这是SDK定义

这是Java代码

//报警设备信息
public static class NET_DVR_ALARMER extends Structure
{public  byte byUserIDValid;                 /* userid是否有效 0-无效,1-有效 */public  byte bySerialValid;                 /* 序列号是否有效 0-无效,1-有效 */public  byte byVersionValid;                /* 版本号是否有效 0-无效,1-有效 */public  byte byDeviceNameValid;             /* 设备名字是否有效 0-无效,1-有效 */public  byte byMacAddrValid;                /* MAC地址是否有效 0-无效,1-有效 */public  byte byLinkPortValid;               /* login端口是否有效 0-无效,1-有效 */public  byte byDeviceIPValid;               /* 设备IP是否有效 0-无效,1-有效 */public  byte bySocketIPValid;               /* socket ip是否有效 0-无效,1-有效 *///原本是NativeLong类型   但是在之后的测试中发现在windows中这个是偏移了4字节  所以改为intpublic  int lUserID;                        /* NET_DVR_Login()返回值, 布防时有效    */public  byte[] sSerialNumber = new byte[SERIALNO_LEN];   /* 序列号 */public  int dwDeviceVersion;               /* 版本信息 高16位表示主版本,低16位表示次版本*/public  byte[] sDeviceName = new byte[NAME_LEN];           /* 设备名字 */public  byte[] byMacAddr = new byte[MACADDR_LEN];        /* MAC地址 */public  short wLinkPort;                     /* link port */public  byte[] sDeviceIP = new byte[128];               /* IP地址 */public  byte[] sSocketIP = new byte[128];                /* 报警主动上传时的socket IP地址 */public  byte byIpProtocol;                  /* Ip协议 0-IPV4, 1-IPV6 */public  byte[] byRes2 = new byte[11];
}
  1. 知道接口需要搜索的时候

三、云台控制实现

  1. 按照上面的分析找到开发的流程结合java版本的Demo

  2. 调用接口的时候需要注意

    ①、海康的demo是启动了预览的(如果需要和海康的demo一致的话,海康有些好的web控件)

    ②、我采用的方案是前端采用Video.js播放,通过EasyNVR流媒体服务(也可以自己搭建,我自

    己搭建的不太稳定)拿到对应的RTMP/HLS/FLV播放路径

  3. 根据上面的两种在调用接口的时候会有区别

    ①、启动预览(海康demo方案)

    ②、不启动预览

四、经典的案例

  1. 下面写出了经典的设置值和获取值的方法(在一些参数不知道怎么赋值的情况下,可以参照这个)
 /*** 设置视频参数*/public boolean setParm(String lUser, Integer lCannel, VideoParmBean videoParmBean){IntByReference ibrBytesReturned = new IntByReference(0);HCNetSDK.NET_DVR_CAMERAPARAMCFG_EX struCameraCfg_ex = new HCNetSDK.NET_DVR_CAMERAPARAMCFG_EX();Pointer lpOutBuffer = struCameraCfg_ex.getPointer();struCameraCfg_ex.write();if(!hCNetSDK.NET_DVR_GetDVRConfig(new NativeLong(Long.parseLong(lUser)), 3368/*NET_DVR_GET_CCDPARAMCFG_EX*/, new NativeLong(lCannel), lpOutBuffer, struCameraCfg_ex.size(), ibrBytesReturned)){return false;}struCameraCfg_ex.read();struCameraCfg_ex.dwSize = struCameraCfg_ex.size();//给结构体赋值struCameraCfg_ex.struVideoEffect.liangdu = videoParmBean.getLiangdu().byteValue();struCameraCfg_ex.struVideoEffect.ruidu = videoParmBean.getRuidu().byteValue();struCameraCfg_ex.struVideoEffect.sedu = videoParmBean.getSedu().byteValue();struCameraCfg_ex.struVideoEffect.baohedu = videoParmBean.getBaohedu().byteValue();struCameraCfg_ex.struVideoEffect.duibidu = videoParmBean.getDuibidu().byteValue();struCameraCfg_ex.struNoiseRemove.byDigitalNoiseRemoveLevel = videoParmBean.getQuzao().byteValue();Pointer lpInBuffer = struCameraCfg_ex.getPointer();struCameraCfg_ex.write();if(!hCNetSDK.NET_DVR_SetDVRConfig(new NativeLong(Long.parseLong(lUser)), 3369/*NET_DVR_SET_CCDPARAMCFG_EX*/, new NativeLong(lCannel), lpInBuffer, struCameraCfg_ex.size())){return false;}return true;}
  1. 关于回调函数的设置,可以在报警的地方找到

基于海康SDK开发文档分析+云台控制实现+经典案例相关推荐

  1. 知微传感3D相机SDK开发文档一查找相机

    知微传感3D相机SDK开发文档一查找相机 主要对知微传感3D相机的SDK文件做一个介绍,大家一个界面显示程序包含图像的获得,相机的查找和链接 查找相机,通过UDP广播形式查找局域网相机 链接相机,通过 ...

  2. 扒一扒坑人的“微信支付”SDK开发文档

    在开发微信支付的的时候,想必大家也遇到了这个坑人的事件,大家不要抱怨,腾讯的文档是除了名的坑人开发文档,今天闲来扒一下"微信支付"的文档,后面我再给大家扒一下"现金红包& ...

  3. 基于海康SDK的web系统开发

    在网上搜索了大量资料,都没有找到适合自己的.网上大部分都是对海康SDK的讲解,或者是图形化界面的运行.涉及到web开发时,也是通过WebComponents.exe进行开发,与我所需的功能均不一致,所 ...

  4. 基于海康sdk回放下载

    项目中遇到需要从海康crv查看录像和回放功能.研究了好久,最终搞好了.总的过程大致分为以下几步: 一.下载海康sdk包 去海康官网下载sdk包,注意:linux和windows下的包是不一样的!!!! ...

  5. 如何使用融云地图,文件等插件--融云 Android SDK 2.8.0+ Extension 开发文档

    转载自融云 Android SDK 2.8.0+ Extension 开发文档 融云 SDK 2.8.0 后对 会话界面输入区域.+号扩展区域.语音消息.Emoji 等进行了优化和重构,重构后上列区域 ...

  6. 图书馆管理系统程序+全套开发文档(系统计划书,系统使用说明,测试报告,UML分析与设计,工作记录)

    图书馆管理系统程序+全套开发文档(系统计划书,系统使用说明,测试报告,UML分析与设计,工作记录): https://download.csdn.net/download/qq_39932172/11 ...

  7. tx2 fpga pcie无法读写_Cyclone V SOC(ARM+FPGA)开发文档_之开发流程详解

    双击可查看大图(手动狗头) 目录 Altera Cyclone V soc开发文档 之软硬件开发 1 Cyclone V开发流程介绍 5 专业术语 5 Cyclone V软件开发介绍 6 U-BOOT ...

  8. ubuntu arm qt_Cyclone V SOC(ARM+FPGA)开发文档_之开发流程详解

    双击可查看大图(手动狗头) 目录 Altera Cyclone V soc开发文档 之软硬件开发 1 Cyclone V开发流程介绍 5 专业术语 5 Cyclone V软件开发介绍 6 U-BOOT ...

  9. autojs 开发文档集合

    加入我们的QQ群553908361,和各作者同群交流 教程会优先发布于收费脚本v群. 该代码选自于aj开发者的文档,群里有人反馈开发文档打开慢.所以做了这个.方便搜索.如有侵权,请私信我进行删除 同时 ...

最新文章

  1. [administrative] windows 下制作USB启动盘的工具
  2. ubuntu中snap包管理器的安装、更新删除与简单使用
  3. Tensorflow——[AttributeError:module tensorflow no attribute app]解决方案
  4. python中基于tcp协议的通信(数据传输)
  5. 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  6. 刚刚,四位平民上天了!
  7. Swift基础语法: 23 - Swift的Trailing闭包, 捕获, 闭包是引用类型
  8. iOS核心动画CALayer和UIView
  9. fiddler的基本使用教程
  10. Web前端性能优化优秀文章集锦
  11. 计算机专业英语第六版考试试卷,计算机专业英语试题及答案(A卷)
  12. ArcGIS实验教程——实验二:ArcGIS地理配准完整操作步骤
  13. 大手笔!舒印彪对核电发展表态,华能抢到了核电开发入场券!
  14. 移动硬盘格式化(pc和mac共用)-菜鸟级解决方案[转]
  15. 如何修改Win10的Windows Terminal的背景(带图文)
  16. Hive-beeline启动脚本
  17. Spark RDD简介
  18. 微型计算机原理与接口技术(周荷琴 冯焕清)第六版 课后习题答案 第三章(部分答案)
  19. 想要出国读博作博后的看过来:德国马普育种所植物与微生物互作方向招收3名博士1名博后
  20. RTOS面试常问题目

热门文章

  1. poc-狮子鱼cms
  2. 23k入职腾讯测试岗那天,我哭了,这5个月付出的一切总算没有白费~
  3. BCT8933 、QFN3x3-20L 主要替换艾为的AW8733
  4. mysql的预写日志_编写数据库:第2部分-预写日志
  5. redis中存储java对象的两种方式
  6. php图库管理,学校图库管理程序(PHP版),毕业论文设计,答辩ppt,开题报告,外文翻译,硕士研究生...
  7. R数据分析:PLS结构方程模型介绍,论文报告方法和实际操作
  8. 2022年最新地产活动4-6月份策划案例( 清明节、端午节、劳动节、父亲节)共23份
  9. 编程语言的发展趋势:从没有分号,到DSL
  10. 奇安信 测试|测试开发 面试真题|面经 汇总