1 库文件的配置
方法一:在系统/sur/lib下加入所需的so文件,HCNetSDKCom文件下的so文件也拷贝到/usr/lib目录下。
方法二:①进入/etc/profile 里,将所需so文件的路径添加进去。例如:
expot LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/pi/java/lib:/home/pi/java/lib/HCNetSDKCom
保存后在终端输入source /etc/profile 使其生效. 注意:export与LD_LIBRARY_PATH在一行上,中间有空格
②进入/etc/ld.so.conf下,加入所需的so文件路径。例如:
/home/pi/java/lib
/home/pi/java/lib/HCNetSDKCom
保存后在终端输入 ldconfig 使其生效
2 调用sdk的具体步骤
一般调用海康sdk分为:初始化sdk、注册设备、开启预览、在开启预览后对摄像头的操作、停止预览、注销、释放sdk资源。
①初始化:首先获取sdk对象,后注册。
HCNetSDK sdk = HCNetSDK.INSTANCE;
boolean b = sdk.NET_DVR_Init() //初始化
②注册设备:调用接口NET_DVR_Login_V30(String ip, short port, String userName, String password,NET_DVR_DEVICEINFO_V30 configInfo) 完成注册,接口所需的参数,摄像头的ip,端口号,用户名,密码,设备信息。返回-1表示失败,其他返回值代表的是用户的ID值,该ID值唯一,后续对设备的操作都要通过这个ID完成。
//获取设备信息
HCNetSDK.NET_DVR_DEVICEINFO_V30 config = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
//注册
NativeLong uId = sdk.NET_DVR_Login_V30(ip, (short) 8000, "admin", "Hist1207", config);
③开启预览:调用NET_DVR_RealPlay_V30(NativeLong uId,LPNET_DVR_CLIENTINFO info,fRealDataCallBack_V30 callBack, Pointer pUser , boolean bBlocked),其中UId是注册后的返回值,info是预览参数,callBack是码流数据回调函数,pUser是用户信息,bBlocked请求码流是否阻塞。-1表示失败,其他值是调用其他函数的句柄参数。
// 预览参数设置
HCNetSDK.NET_DVR_CLIENTINFO nInfo = new HCNetSDK.NET_DVR_CLIENTINFO();
nInfo.hPlayWnd = null;
nInfo.lChannel = new NativeLong(1);
nInfo.lLinkMode = new NativeLong(0);
nInfo.sMultiCastIP = null;
// 开启预览
NativeLong realPlay = sdk.NET_DVR_RealPlay_V30(uId, nInfo, new FRealDataCallBack_V30Impls(), null, false);
④具体操作,以云台控制为例。调用NET_DVR_PTZControl(NativeLong lRealHandle,int dwPTZCommand,int dwStop)接口,lRealHandle是预览的返回值,dwPTZCommand,移动的方向,具体参考sdk文档说明,dwStop 开始或停止,0开始,1停止。
boolean b = sdk.NET_DVR_PTZControl(uId, direction, 0); //开始
boolean b1 = sdk.NET_DVR_PTZControl(uId, direction, 1);//结束
⑤停止预览:调用NET_DVR_StopRealPlay(NativeLong uId);uId是开启预览的返回值。
boolean b = sdk.NET_DVR_StopRealPlay(uId);
⑥注销用户:NET_DVR_Logout_V30(NativeLong uId) uId 是注册后的返回值
boolean b1 = sdk.NET_DVR_Logout_V30(uId);
⑦释放资源:NET_DVR_Cleanup();
boolean b2 = sdk.NET_DVR_Cleanup();