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

这篇具有很好参考价值的文章主要介绍了基于海康威视的SDK实现二次开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

1.对接海康威视的SDK

进入海康威视官网

海康sdk二次开发,Java,海康威视,java,spring boot,spring

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

海康sdk二次开发,Java,海康威视,java,spring boot,spring

下载完SDK解压

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

海康sdk二次开发,Java,海康威视,java,spring boot,spring

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

运行Demo示例

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

海康sdk二次开发,Java,海康威视,java,spring boot,spring

海康sdk二次开发,Java,海康威视,java,spring boot,spring

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

注:这两个jar包需要编译

海康sdk二次开发,Java,海康威视,java,spring boot,spring

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

海康sdk二次开发,Java,海康威视,java,spring boot,spring

开发接口之前的环境配置

现在就可以进行自己的开发节奏了。记住上面那两个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

    海康sdk二次开发,Java,海康威视,java,spring boot,spring

    在这里添加这句代码

    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接口去他的文档进行查阅

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

海康sdk二次开发,Java,海康威视,java,spring boot,spring

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

2.总结海康威视的开发

第一次对接SDK的常见问题

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

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

海康sdk二次开发,Java,海康威视,java,spring boot,spring

海康sdk二次开发,Java,海康威视,java,spring boot,spring

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

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

海康sdk二次开发,Java,海康威视,java,spring boot,spring

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

下载SDK

注:Linux下面是so文件

海康sdk二次开发,Java,海康威视,java,spring boot,spring

  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。

最后:七夕节还在写博客,写文不易求大家给小弟个赞🤞文章来源地址https://www.toymoban.com/news/detail-846592.html

到了这里,关于基于海康威视的SDK实现二次开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 海康威视摄像头二次开发_云台控制_视频画面实时预览(基于Qt实现)

    需求:需要在公司的产品里集成海康威视摄像头的SDK,用于控制海康威视的摄像头。 拍照抓图、视频录制、云台控制、视频实时预览等等功能。 开发环境: windows-X64(系统) + Qt5.12.6(Qt版本) + MSVC2017_X64(使用的编译器) 海康威视提供了 设备网络SDK ,设备网络SDK是基于设备私有网

    2024年02月13日
    浏览(33)
  • 【记录】海康相机(SDK)二次开发时的错误码

    在进行海康sdk二次开发的时候,经常碰到各种错误,遂结合官方文档和广大网友的一些经验,把这些错误码记录一下,方便查找。笔者使用的SDK版本是HCNetSDKV6.1.9.4。 错误类型 错误码 错误信息 NET_DVR_NOERROR 0 没有错误。 NET_DVR_PASSWORD_ERROR 1 用户名密码错误。注册时输入的用户名

    2024年04月08日
    浏览(65)
  • 【HIKROBOT】海康机器人:工业相机SDK二次开发

    海康机器人官网链接:https://www.hikrobotics.com/cn 根据购买设备的型号下载用户说明书 笔者实验室购买了两款,一款GigE网口接口的,一款USB接口 GigE网口接口 USB接口:MV-CA050-20UC 服务支持”“下载中心”“机器视觉”中下载MVS客户端安装包及SDK开发包。 1.1.1 Ubuntu18.04系统安装 下

    2024年02月05日
    浏览(31)
  • 【项目实践】海康威视工业相机SDK开发小白版入门教程(VS2015+OpenCV4.5.1)

      由于学校要求暑期实习,于是找了一位学长开的公司,接了一个项目,是 对海康威视工业相机(MV_CE200_10GM)进行二次开发,读取其图像并做分析处理。 于是花了一点时间查找的相关资料并记录一些 入门要点 。   想先说说一些 “尝试授人与渔” 的话,也是自己的一

    2024年02月04日
    浏览(33)
  • web实时预览功能开发 java 海康sdk nvr

    目录 1.实时视频流解决方案 2.步骤 1.搭建rtmp+flv服务器 2.java预览demo 3.实时预览 1.配置海康sdk库文件 2.修改FPREVIEW_NEWLINK_CB代码,推流 3.修改FPREVIEW_DATA_CB代码,取流 4.javacv的推流 3.部分代码 1.启动项目初始化cms,stream的代码 2.cms代码 3.stream代码 1.前端调用后台接口, 2.后台接口

    2024年02月16日
    浏览(26)
  • 海康威视工业相机Linux SDK开发指南详细步骤(Ubuntu20.04+单目、双目相机单次、连续拍照)

    由于实验需要使用双目相机同步采集图像,实验室准备的设备是海康威视的工业相机,对其进行二次开发,其中花了大部分时间查找资料,以及代码进行反复调试,最后到达了想要的效果,并写博客记录一下。 首先是资料的查找,我们要注意的是海康威视一共有两个官网,一

    2024年02月16日
    浏览(58)
  • 海康威视SDK视频录制及强制I帧操作

    使用下面方法可以实现视频录像功能。 该方法有个问题,视频可以录制,但是不能被前端页面直接加载播放,因为视频编码格式问题,虽然可以用FFMPEG工具进行格式转化,但是引入第三方的库,无疑会使代码的维护性降低。 FFMPEG工具 地址 提取码 zc14 使用FFmpeg进行转换的方法

    2023年04月24日
    浏览(47)
  • 大华SDK+JAVA+4g网络摄像头进行二次开发

    监控,相信大家都不陌生。现在的监控技术发展迅速,国内以海康威视为首的智能视频监控提供商也层出不穷。现在,这些提供商都已经提供了相应的SDK以及API接口,能够很好的支撑我们进行摄像机的二次开发工作。相信大家都有接触过这么一个需求:利用手机可以自己进行

    2024年01月20日
    浏览(33)
  • 海康威视监控相机的SDK与opencv调用(非工业相机)

    本篇主要对海康威视的监控相机的SDK回调进行研究,并于opencv结合,保存图像,以供后续其他处理,开发语言为C++ 2.1 海康SDK介绍 海康SDK下载地址 根据自身编译环境,下载对应的SDK,需要注意的是,不要和工业相机SDK相混淆,工业相机好像是MVS是什么玩意儿,现在暂时没研究

    2024年02月04日
    浏览(38)
  • 如何降低海康、大华等网络摄像头调用的高延迟问题(一):海康威视网络摄像头的python sdk使用(opencv读取sdk流)

    目录 1.python sdk使用 1.海康SDK下载  2.opencv读取sdk流  先说效果,我是用的AI推理的实时流,延迟从高达7秒降到小于1秒 如果觉得这个延迟还不能接受,下一章,给大家介绍点上不得台面的小方法 SDK(Software Development Kit)是软件开发工具包的缩写,它是一组用于开发特定软件或

    2024年02月07日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包