通过海康sdk获取NVR IP通道接入配置 您所在的位置:网站首页 ip通道地址或管理端口 通过海康sdk获取NVR IP通道接入配置

通过海康sdk获取NVR IP通道接入配置

2024-07-06 22:17| 来源: 网络整理| 查看: 265

最近在做这一块的内容,通过海康的sdk获取其NVR上面IP通道接入配置,简单来说就是获取如下信息:

于是查询海康官网的JAVA Demo,和chm文档,就找到了如下内容

到这一步都还挺顺利的,内容基本都有,当时当我把 NET_DVR_IPPARACFG_V40 这个结构体的名字去HCNetSDK.java 文件内查询,竟然没有查询到,难道要自己创建一个,于是我发邮件给海康技术,得到的回复是暂时没有样例,只能自己按照其他结构体的定义来来自己定义这个结构体了,这个结构体嵌套了三层,最后一层还是一个联合结构体,我就是在这里出了问题,之前没了解过jna,所以在定义的时候,随便模仿的去定义了,最终使用sdk跑数据的时候,发现如下的结构的联合结构体的内容始终为 0 

其他都获取正常,我第一次的定义如下:

找了很多原因没有找到,后面突然找到一个文章说是要 重写 write和read方法 ,抱着试一试的想法,改了之后竟然可以了,最后获取到的信息如下:

 

关键结构体的定义如下:

 

public static class NET_DVR_STREAM_MODE extends Structure { public byte byGetStreamType; //取流方式GET_STREAM_TYPE,0-直接从设备取流,1-从流媒体取流、2-通过IPServer获得ip地址后取流,3.通过IPServer找到设备,再通过流媒体去设备的流 //4-通过流媒体由URL去取流,5-通过hkDDNS取流,6-直接从设备取流(扩展),使用NET_DVR_IPCHANINFO_V40结构, 7-通过RTSP协议方式进行取流 public byte [] byRes = new byte[3]; //保留字节 public NET_DVR_GET_STREAM_UNION uGetStream; // 不同取流方式结构体 public static class ByValue extends NET_DVR_STREAM_MODE implements Structure.ByValue{} public static class ByReference extends NET_DVR_STREAM_MODE implements Structure.ByReference{} @Override public void read() { super.read(); switch(byGetStreamType) { case 0: uGetStream.setType(NET_DVR_IPCHANINFO.class); break; case 1: uGetStream.setType(NET_DVR_IPSERVER_STREAM.class); break; case 2: uGetStream.setType(NET_DVR_PU_STREAM_CFG.class); break; case 3: uGetStream.setType(NET_DVR_DDNS_STREAM_CFG.class); break; case 4: uGetStream.setType(NET_DVR_PU_STREAM_URL.class); break; case 5: uGetStream.setType(NET_DVR_HKDDNS_STREAM.class); break; case 6: uGetStream.setType(NET_DVR_IPCHANINFO_V40.class); break; } uGetStream.read(); } @Override public void write() { super.write(); switch(byGetStreamType) { case 0: uGetStream.setType(NET_DVR_IPCHANINFO.class); break; case 1: uGetStream.setType(NET_DVR_IPSERVER_STREAM.class); break; case 2: uGetStream.setType(NET_DVR_PU_STREAM_CFG.class); break; case 3: uGetStream.setType(NET_DVR_DDNS_STREAM_CFG.class); break; case 4: uGetStream.setType(NET_DVR_PU_STREAM_URL.class); break; case 5: uGetStream.setType(NET_DVR_HKDDNS_STREAM.class); break; case 6: uGetStream.setType(NET_DVR_IPCHANINFO_V40.class); break; } uGetStream.write(); } }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有