海康SDK java调用中遇到的问题

来源:互联网 发布:作图软件cs 编辑:程序博客网 时间:2024/06/04 18:17

   第一次写东西,有不好的地方请大神指出

1.  海康威视官网下载最新版本设备网络SDK:http://www.hikvision.com/Cn/download_more_401.html,注意32位64位http://www.hikvision.com/Cn/download_more_401.html

解压之后会有个说明,具体内容如下:

【Demo内容说明】

-------------------------------------
1. 该Demo主要介绍预览、回放、云台控制、参数配置等基本功能

【注意事项】
------------------------------------
1. 请到海康威视官网下载最新版本设备网络SDK:http://www.hikvision.com/Cn/download_more_401.html

2. 请修改程序代码,其中HCNetSDK.java文件自己指定loadlibrary加载库的路径,【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、HCNetSDKCom文件夹等文件均拷贝到该路径下。

   HCNetSDKCom文件夹(包含里面的功能组件dll库文件)需要和HCNetSDK.dll、HCCore.dll一起加载,放在同一个目录下,且HCNetSDKCom文件夹名不能修改。

3. 如果自行开发软件不能正常实现相应功能,而且程序没有指定加载的dll库路径,请在程序运行的情况下尝试删除HCNetSDK.dll。如果可以删除,说明程序可能调用到系统盘Windows->System32目录下的dll文件,建议删除或者更新该目录下的相关dll文件;如果不能删除,dll文件右键选择属性确认SDK库版本。

4. 如按上述步骤操作后还是不能实现相应功能,请根据NET_DVR_GetLastError返回的错误号判断原因。



然后按照这个步骤你会发现出现Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'HCNetSDK': ÕҲ»µ½ָ¶¨这个错误,此时不要慌,你调用的没错是因为文档少写个dll

此时请加入AudioRender.dll然后在运行就可以了


成功之后呢我们直接运行demo可以出现界面,但是界面是需要登录的,如果摄像头是固定IP就好说,但是如果是动态IP在登录之前是需要调用获取动态IP的接口NET_DVR_GetDVRIPByResolveSvr_EX 但是当你使用java调用的时候会发现他的out参数是个String类型,这在java中是不行的,那么怎么办呢?此时我们需要修改HCNetSDK中的NET_DVR_GetDVRIPByResolveSvr_EX 这个方法参数,把sGetIp类型改为byte[] 就可以了,然后调用的时候把byte[] 设置大点,比如这样byte sGetIP[]= new byte[20];然后调用的时候会返回一大串数组,在new String(sGetIp)就可以得到动态IP了


剩下的接口就很简单了,由于今天感冒了,这篇文档先到此位置了,过几天我会把 获取rtsp流转为rtmp流中遇到的问题,以及linux中统计在线观看人数写出来,此文章有不当之处,请大佬们清喷,我还是萌新