Linux下调用海康SDK(java版)

一:配置java项目所需的库文件,库文件的配置分为两种方案
方案1 :将需要的库文件放到系统的 /usr/lib下,HCNetSDKCom文件夹下的文件也copy到 /usr/lib下
方案2:
2.1: 进入/etc/profile下,将自己java工程需要的so文件的路径:如下

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/aa/java/LinuxJavaDemo/libs:/home/aa/java/LinuxJavaDemo/libs/HCNetSDKCom

注意:/home/aa/java/LinuxJavaDemo/lib 改路径为存放so文件以及HCNetSDKCom文件夹的路径,export 与LD_LIBRARY…在一行上
退出后,使用source /etc/profile使环境变量生效

2.2:进入/etc/ld.so.conf下,加入java工程所需要的so文件,如下:

/home/aa/java/LinuxJavaDemo/libs
/home/aa/java/LinuxJavaDemo/libs/HCNetSDKCom

使用ldconfig命令使配置生效

二:SDK的具体调用
SDK中提供了很多模块的接口,如预览模块、回放和下载模块等的接口,根据文档接口的说明实现模块功能,本次拿云台控制模块中的云台基本控制来作为例子

①初始化sdk:获得sdk对象,进行初始化,如下

private HCNetSDK sdk = HCNetSDK.INSTANCE;
sdk.NET_DVR_Init();

②注册设备
在sdk接口文档中有好几种实现注册的接口,参数的具体含义也给出了,根据情况选择接口实现注册,我选择的是NET_DVR_Login_V30接口实现注册,接口位置在文档下的基本接口定义

-> 用户注册
NET_DVR_DEVICEINFO_V30 lpDeviceInfo = new NET_DVR_DEVICEINFO_V30();
//注册
id = sdk.NET_DVR_Login_V30(ip, port, username, password, lpDeviceInfo);

实现云台基本控制的接口总共有四个接口,大致分为两大类,开启预览和不开启预览,而每一类又有两个接口,分别是能设置速度和不能设置速度,本次以开启预览不设置速度作为示例
③开启预览
开启预览的接口会根据sdk版本的不同而有所变化,本次示例中用的是NET_DVR_RealPlay_V30这个接口,具体参数查看接口文档,位置在文档下的基本接口定义 -> 实时预览

NET_DVR_CLIENTINFO lpClientInfo = new NET_DVR_CLIENTINFO();
lpClientInfo.hPlayWnd = null;
lpClientInfo.lChannel = Channel;
lpClientInfo.lLinkMode = new NativeLong(0);
lpClientInfo.sMultiCastIP = null;
FRealDataCallBack_V30Imple  fRealDataCallBack_V30 = new FRealDataCallBack_V30Imple();
handel = sdk.NET_DVR_RealPlay_V30(id, lpClientInfo, fRealDataCallBack_V30, null, false);

④云台控制

本次示例使用 NET_DVR_PTZControl接口,参数 LONG lRealHandle,DWORD dwPTZCommand, DWORD dwStop,dwPTZCommand 云台控制命令,可以实现云台的控制,具体命令请查看文档,再此不一一列举。dwStop参数实现了云台控制的开启和结束,1为结束,0为开始

sdk.NET_DVR_PTZControl(handel, comment, 0); //开启控制,comment为云台控制命令
sdk.NET_DVR_PTZControl(handel, comment, 1);//结束云台控制,comment为云台控制命令,因与开启时的命令一致

⑤结束预览

结束预览的接口为NET_DVR_StopRealPlay,参数为开启预览接口的返回值
boolean b1 = sdk.NET_DVR_StopRealPlay(handel);

⑥注销设备

//注销设备使用的是NET_DVR_Logout接口,参数为注册接口的返回值
boolean b2 = sdk.NET_DVR_Logout_V30(id);

⑦释放SDK资源

//释放SDK资源,调用NET_DVR_Cleanup接口实现,无需传递参数。
boolean b2 =  sdk.NET_DVR_Cleanup();

注意:每个接口调用,可以根据其返回值判断是否成功,不同的接口返回值有所不同,具体可以查看文档,在出现错误的情况下,可以使用NET_DVR_GetLastError接口来获得操作的错误码,根据错误码去查询网络通讯库错误码表,即可查看错误原因。NET_DVR_GetLastError位置在文档下的基本接口定义-> SDK本地功能 ->获取错误信息

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值