基于海康威视的SDK实现二次开发

2 篇文章 0 订阅
订阅专栏
2 篇文章 1 订阅
订阅专栏

前言

因为网上关于海康威视SDK这块的开发资源比较少,自己也是一步一步摸索过来,知道那种痛苦,
所以把自己的一些过来人的经验写出来供大家学习参考

1.对接海康威视的SDK

进入海康威视官网

在这里插入图片描述

下载你所需要的SDK开发包(这里我就用windows来作为案列)

在这里插入图片描述

下载完SDK解压

里面有开发文档和SDK的动态库文件,有各种开发语言的Demo案列。(可以参考一下他的接口调用)

在这里插入图片描述

注:这里需要注意的是开发文档,很重要!里面有一份文档接口的API,和各种编程指南

运行Demo示例

这里我使用的语言是Java,通过他的提示导入所需要的dll文件

在这里插入图片描述

在这里插入图片描述

这里可以参考一下我导入的文件

注:这两个jar包需要编译

在这里插入图片描述

注:导入成功之后如果能正确运行Demo并且能够通过海康威视的摄像头进行预览的话说明导入的文件是正确的

在这里插入图片描述

开发接口之前的环境配置

现在就可以进行自己的开发节奏了。记住上面那两个jar包,和lib文件夹里面的那些文件。

  1. 创建一个springboot项目

  2. 把lib包放到springboot项目中的resources文件中

  3. 编译那两个jar包(这里建议是使用mvn的命令把jar包打入到自己的maven仓库会比较好一点)

    mvm install:install-file 
        -Dfile=你jar包的路径\examples.jar 
        -DgroupId=com.xx.xx 
        -DartifactId=examples
        -Dversion=1.0-SNAPSHOT 
        -Dpackaging=jar
    

    不导入的话也可以直接编译到项目中去,或者使用maven的路径引用

    <dependency>
        <groupId>examples</groupId>
        <artifactId>examples</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${basedir}/src/main/resources/lib/examples.jar</systemPath>
    </dependency>
    <dependency>
         <groupId>jna</groupId>
         <artifactId>jna</artifactId>
         <version>1.0</version>
         <scope>system</scope>
         <systemPath>${basedir}/src/main/resources/lib/jna.jar</systemPath>
    </dependency>
    
  4. 加载SDK库

    注:这个接口就是后面开发用到的海康威视的SDK

    在这里插入图片描述

    在这里添加这句代码

    HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(CommonKit.getWebPath() + "HCNetSDK.dll", HCNetSDK.class);
    

    这里我才用的是用动态获取路径的方式来加载的。

    注:这里的路径很重要,如果不行的话可以配置为绝对路径

    public class CommonKit {
    	/**
    	 * 获取项目webapp目录
    	 * @return String
    	 */
    	public static String getWebPath() {
    		return CommonKit.class.getClassLoader().getResource("").getPath().substring(1) + "lib/
    	}
    }
    

开始基于海康威视SDK的开发

注:这里面的SDK其实是一个大杂烩,里面有很多接口其中有摄像头的预览,视频的下载和语言的播报等接口

  1. 编写工具类

    通过读取海康威视的开发文档我们得知调用海康威视的SDK接口的时候需要初始化,完成操作之后需要释放资源。

    在实际开发中项目一般是一直运行的,所以这里我用了spring的两个注解,在项目启动时候初始化,结束项目运行

    的时候释放资源。这样就不用每一次操作都去初始化和释放资源了。

    注:这两个方法是必须的,所有的接口执行都需要初始化

    这里只是初始化和释放资源的代码,其他的方法按照自己的业务逻辑来进行完善。

    @Slf4j
    @Component
    public class HikvisionUtil {	
    	private static final HCNetSDK hcNetSDK = HCNetSDK.INSTANCE;
    
    	/**
         * 初始化
         */
        @PostConstruct
        public void init() {
            boolean flag = hcNetSDK.NET_DVR_Init();
            String message = flag ? "成功" : "失败";
            log.info("摄像头初始化" + message);
        }
    
        /**
         * 释放资源
         */
        @PreDestroy
        public void leanup() {
            boolean flag = hcNetSDK.NET_DVR_Cleanup();
            String message = flag ? "成功" : "失败";
            log.info("摄像头关闭资源" + message);
        }
    }
    
  2. 如何排错?

    新手在开发的时候可能会发生很多错误,这里我的建议是通过打印报错编码和日志来进行排查错误

    这个接口能够返回你上一次失败操作的错误码

    hcNetSDK.NET_DVR_GetLastError()
    

    得到错误码,拿到报错的海康SDK接口去他的文档进行查阅

    这里我用登录接口来举一个例子

在这里插入图片描述

通过错误码就能够正确的找到错误的原因。

2.总结海康威视的开发

第一次对接SDK的常见问题

  1. 怎么完善海康威视的后续开发?

    一般的情况都是基于摄像头进行开发,在对摄像头进行开发的话建议查看此文档,里面有接口调用顺序和参数说明,基于文档完善上面的工具类。

在这里插入图片描述

在这里插入图片描述

  1. 如何部署到Linux服务器上面?

    首先HCNetSDK接口类需要继承Library,经过本人的尝试最新版本的SDK,
    继承Library可以同时支持windows和Linux两种环境

在这里插入图片描述

如果需要部署到Linux服务器上面的话,需要下载Linux那一套SDK

下载SDK

注:Linux下面是so文件

在这里插入图片描述

  1. 对接海康摄像头出现 java.lang.Error: Structure.getFieldOrder()

    Exception in thread "threadPoolTaskExecutor-1" java.lang.Error: Structure.getFieldOrder() on class com.ruoyi.web.equipment.hk.HCNetSDK$NET_DVR_USER_LOGIN_INFO does not provide enough names [0] ([]) to match declared fields [15] ([bUseAsynLogin, byHttps, byLoginMode, byProxyType, byRes2, byUseTransport, byUseUTCTime, byVerifyMode, cbLoginResult, iProxyID, pUser, sDeviceAddress, sPassword, sUserName, wPort])

    注:这个问题是因为海康jna.jar比较老,结构体定义没有getFiledOrder,可创建一个类继承 Structure

    import com.sun.jna.Structure;
    import java.lang.reflect.Field;
    import java.lang.reflect.Modifier;
    import java.util.ArrayList;
    import java.util.List;
    
    
    public class HIKSDKStructure extends Structure {
        protected List<String> getFieldOrder(){
            List<String> fieldOrderList = new ArrayList<String>();
            for (Class<?> cls = getClass();
                 !cls.equals(HIKSDKStructure.class);
                 cls = cls.getSuperclass()) {
                Field[] fields = cls.getDeclaredFields();
                int modifiers;
                for (Field field : fields) {
                    modifiers = field.getModifiers();
                    if (Modifier.isStatic(modifiers) || !Modifier.isPublic(modifiers)) {
                        continue;
                    }
                    fieldOrderList.add(field.getName());
                }
            }
            return fieldOrderList;
        }
    }
    

    然后对 HCNetSDK 接口中的静态类里面,所有继承 Structure 替换为 HIKSDKStructure 即可

3.后续完善

摄像头在前端的预览

摄像头的截图功能

摄像头的手动录像功能

摄像头的回放下载功能


目前就写这么多吧,本文是一篇入门介绍文,因为网上关于这块的资料很少,

所以真心帮助那些和我一样一开始就接触对接硬件开发的程序员了解大概开发的流程。

注:一定要多看文档,海康威视文档算比较详细的那种了。

有后续有开发问题的话可以在下方留言,或者咨询本人的163邮箱 18375669585@163.com。

最后:七夕节还在写博客,写文不易求大家给小弟个赞🤞

Qt海康威视SDK二次开发登录与预览
02-25
Qt开发海康威视网络摄像头SDK,网络摄像头的注册与预览,相关函数的用法与示例。 Qt开发海康威视网络摄像头SDK,网络摄像头的注册与预览,相关函数的用法与示例。
海康相机SDK二次开发
05-24
MvCodeReaderSDKNet海康相机SDK二次开发,读取快递包裹一维码 及XY坐标 MvCodeReaderSDKNet海康相机SDK二次开发,读取快递包裹一维码 及XY坐标
海康威视工业相机SDK的开发使用笔记
最新发布
木牛的博客
07-08 2633
常见的问题类型有: 相机节点不存在或者无法访问,例如,自动曝光,在手动曝光情况下,自动曝光节点会被隐藏,或者其他相机存在这个参数,而使用的相机无此参数,例如线扫相机的行频参数等等,还比如说部分相机无此功能,例如event参数,部分相机固件暂不支持用户调用。sdk接口调用,有一定流程顺序,例如getimagebuffer在startgrabing之前调用,就违反了接口流程,就会报错顺序调用错误 还比如,没有调用startgrabing接口,就去调用频繁调用stopgrabing接口,也会报此错误。
海康威视SDK二次开发JAVA(SpringBoot)
很多时候犯错都是在不知情的情况下发生的
10-29 5366
System.out.println("hksdk(视频)-退出状态" + hcNetSDK.NET_DVR_GetLastError());System.out.println("hksdk(视频)-登录海康录像机信息,状态值:" + hcNetSDK.NET_DVR_GetLastError());System.out.println("hksdk(视频)-下载失败" + hcNetSDK.NET_DVR_GetLastError());
海康SDK二次开发实现实时预览、按时间回放等功能Demo
11-17
实现海康监控sdk二次开发,可以实现按时间段回放监控视频,实时预览监控视频,下载视频等功能。
海康威视二次开发SDK
10-16
海康威视摄像机的二次开发DEMO及说明,里面包括JAVA,C#的源码实例
海康威视相机SDK二次开发JAVA语言)
普通还不自信的程序员
03-14 3111
有个项目需要使用java程序读取海康威视的相机图片。相机通过以太网连接服务器,部署在服务器上的java程序将相机拍摄的画面保存在指定路径下。海康威视提供了sdk开发包,可以在官网中下载,windows和linux系统都有。但是开发包中给出的示例代码,无法满足实际需要,所以还需要对代码进行二次开发。在进行二次开发时,官网并未提供java语言的开发手册,示例代码中也并未提供详细注释,所以我只能在阅读示例代码时,按照自己的理解添加一些注释。
海康威视网络摄像头SDK二次开发(QT版本)
xy_77777的博客
12-02 3755
海康威视网络摄像头SDK二次开发(QT):连接和取图
海康威视sdk二次开发包.zip
03-31
海康威视的32位windows版的sdk, 【注意事项】 ------------------------------------ 1. 请到海康威视官网下载最新版本设备网络SDK:http://www.hikvision.com/Cn/download_more_401.html 2. 请将设备网络SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、HCNetSDKCom文件夹、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、ssleay32.dll、libeay32.dll、zlib1.dll、hpr.dll等文件均拷贝到bin文件夹下。HCNetSDKCom文件夹(包含里面的功能组件dll库文件)需要和HCNetSDK.dll、HCCore.dll一起加载,放在同一个目录下,且HCNetSDKCom文件夹名不能修改。 3. 如果自行开发软件不能正常实现相应功能,而且程序没有指定加载的dll库路径,请在程序运行的情况下尝试删除HCNetSDK.dll。如果可以删除,说明程序可能调用到系统盘Windows->System32目录下的dll文件,建议删除或者更新该目录下的相关dll文件;如果不能删除,dll文件右键选择属性确认SDK库版本。 4. 如按上述步骤操作后还是不能实现相应功能,请根据NET_DVR_GetLastError返回的错误号判断原因。
海康sdk二次开发代码
01-02
海康sdk二次开发代码demo,包括浏览视频和控制摄像头等操作
海康威视硬盘录像机SDK二次开发C#专用封装包
05-31
海康威视硬盘录像机SDK二次开发C#专用封装包,基于农民伯伯的源码修改,因之前有很多错误的地址,目前完成了一半左右 目前修改完成结构体如下: 获取设备参数:NET_DVR_DEVICECFG ok 获取时间参数:NET_DVR_TIME ok 获取网络参数:NET_DVR_NETCFG_V30 ok 网络参数相关: NET_DVR_IPADDR ok NET_DVR_PPPOECFG ok NET_DVR_ETHERNET_V30 ok 获取图像参数:NET_DVR_PICCFG_V30 ok 图像参数相关: NET_DVR_COLOR ok NET_DVR_VILOST_V30 ok NET_DVR_HANDLEEXCEPTION_V30 okv NET_DVR_SCHEDTIME okv NET_DVR_MOTION_V30 okv NET_DVR_HANDLEEXCEPTION_V30 okv NET_DVR_SCHEDTIME okv NET_DVR_HIDEALARM_V30 okv NET_DVR_HIDEALARM_V30 okv NET_DVR_SHELTER okv 获取压缩参数:NET_DVR_COMPRESSIONCFG_V30 okv NET_DVR_COMPRESSION_INFO_V30 okv 获取录像参数:NET_DVR_RECORD_V30 okv NET_DVR_RECORDDAY okv NET_DVR_RECORDSCHED okv 获取云台参数:NET_DVR_DECODERCFG_V30 okv 获取232串口参数:NET_DVR_RS232CFG_V30 ok 串口参数相关: NET_DVR_SINGLE_RS232 ok NET_DVR_PPPCFG_V30 ok NET_DVR_IPADDR ok NET_DVR_PPPCFG ok ---------------------------------------------------------------------------------------------------- 获取报警输入参数:NET_DVR_ALARMINCFG_V30 ok 报警输入参数相关: NET_DVR_HANDLEEXCEPTION_V30 ok ---------------------------------------------------------------------------------------------------- 获取报警输出参数:NET_DVR_ALARMOUTCFG_V30 ok 报警输出参数相关: NET_DVR_SCHEDTIME ok ---------------------------------------------------------------------------------------------------- 获取本地预览参数:NET_DVR_PREVIEWCFG_V30 ok ---------------------------------------------------------------------------------------------------- 获取视频输出参数:NET_DVR_VIDEOOUT_V30 ok ---------------------------------------------------------------------------------------------------- 获取用户参数: NET_DVR_USER_V30 ----------------------------------------------------------------------------------------------------- 获取异常参数: NET_DVR_EXCEPTION_V30 ok -----------------------------------------------------------------------------------------------------
海康威视二次开发问题
12-01
海康威视没有提供web端通过时间区间下载文件,本示例在海康威视提供的demo和web开发版本上组合通过重新写了个接口来实现。不明白的可以联系 讨论。
基于C#的海康摄像头二次开发
07-30
基于C#的海康摄像头二次开发实现视频的采集显示,云台控制等功能,
海康威视二次开发
01-08
海康威视二次开发包,动态链接库以及开发文档,支持网络摄像头、硬盘刻录机等硬件的二次开发,有例程。
海康威视SDK
11-27
海康威视SDK供监控视频二次开发用,C++开发的,并带有一个使用的DEMO
海康威视sdk二次开发基于springboot报警回调
07-29
在进行海康威视SDK二次开发时,我们需要完成以下步骤: 1. **环境准备**:确保安装了Java开发环境,并且在项目中引入SpringBoot依赖。同时,需要获取海康威视SDK,通常包含必要的jar包和文档。 2. **配置SDK**:在...
海康威视web3.0二次开发
11-17
为了实现二次开发,我们需要掌握Web3.0提供的API和SDK。 2. **兼容性要求**:描述中提到,该开发环境需要使用IE浏览器或基于IE内核的浏览器,这是由于Web3.0可能依赖某些仅在IE支持的ActiveX插件。因此,开发者需...
基于QT+C++实现海康威视工业相机二次开发+GUI界面+源码(毕业设计&课程设计&项目开发)
05-27
基于QT+C++实现海康威视工业相机二次开发+GUI界面+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于QT+C++实现海康威视工业相机二次开发+GUI界面+...
java 海康工业相机
07-29
Java海康工业相机是一款由海康威视推出的工业相机产品,它结合了工业相机的高性能以及Java编程语言的优势。 首先,Java海康工业相机具备强大的图像采集和处理能力。它采用先进的图像传感器技术,能够高效地获取高质量的图像数据。同时,它还拥有丰富的图像处理算法,能够对图像进行实时处理,如边缘增强、色彩平衡、图像增强等,使得用户能够获得更好的图像效果。 其次,Java海康工业相机具备灵活的软件开发能力。通过使用Java编程语言,开发者可以方便地进行相机控制和图像处理的编程。Java作为一种跨平台的编程语言,可以在不同的操作系统上运行,具有良好的兼容性和扩展性。开发者可以使用Java提供的各种库和工具,快速地开发出符合自己需求的应用程序。 此外,Java海康工业相机还具备丰富的接口和功能。它提供了多种数据传输接口,如USB、GigE Vision等,方便用户进行相机的连接和数据传输。同时,它还支持多种触发方式和同步功能,可以满足不同工业应用的需求。 总之,Java海康工业相机具备强大的图像采集和处理能力,以及灵活的软件开发能力。它为用户提供了一种便捷高效的工具,可以广泛应用于工业自动化、机器视觉、智能监控等领域。
写文章

热门文章

  • 基于海康威视的SDK实现二次开发 26141
  • SpringBoot+海康威视摄像头实现在前端的预览 13859
  • Docker Desktop中安装Redis并挂载配置文件 1577
  • LeetCode 62.不同路径 334
  • 4000字长文爆杀KMP 266

分类专栏

  • Docker 1篇
  • 数据结构和算法 1篇
  • LeetCode 1篇
  • 海康威视 2篇
  • Java 2篇

最新评论

  • SpringBoot+海康威视摄像头实现在前端的预览

    SingleHandFuckDragon: 这里就是自动装配的原理了,可以在自己的SpringBoot项目创建这么一个配置文件覆盖掉ffmpeg jar包中的配置,你也可以反编译他的jar包修改他里面的配置文件,这里面的这个配置文件好像配置是ffmpeg的路径啥的,太久我也忘了

  • SpringBoot+海康威视摄像头实现在前端的预览

    Aokiji__: 注:可以更改源码自行编译jar包。 或者在自己的Springboot项目中建一个loadFFmpeg.properties配置文件来覆盖 这一块没看懂有没有懂哥教一下

  • 基于海康威视的SDK实现二次开发

    SingleHandFuckDragon: 打到maven仓库里面

  • 基于海康威视的SDK实现二次开发

    hh的规格: 大哥,我在本地能够运行,但是项目打成jar 之后,就说找不到 com.sun.jna.NativeLon ,我两个jar 都在 BOOT-INF/lib目录里的

  • 基于海康威视的SDK实现二次开发

    weixin_48006140: @PreDestroy 打错了这个注解

最新文章

  • Docker Desktop中安装Redis并挂载配置文件
  • LeetCode 62.不同路径
  • 4000字长文爆杀KMP
2023年1篇
2022年4篇

目录

目录

评论 61
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王阜新网站优化推广服务商上海求推荐好的服务行业网站优化乌鲁木齐网站制作及优化群发自动优化网站上虞网站优化哪家价钱合理南园网站优化多少钱国内网站优化哪个好石家庄百度快照网站优化价格优化网站 毫秒响应岳阳外贸网站优化哪家好网站内部链接的优化从化企业网站推广优化方案怎么查询网站是哪家优化的seo网站排名优化软件教程柘城个性化网站关键词优化费用麻涌家具网站优化咨询网站seo优化方案seo优化网站标题设置石家庄网站优化飞数科技最好省心的传统行业网站优化网站结构优化有什么好处天柱网站优化价格深圳软件网站优化经验许昌网站自然优化哪家正规网站建设优化陷阱青海网站排名优化公司广州网站优化服务洪梅环保网站优化银川网站排名优化软件银川网站优化推广哪个公司好香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化