linux下调用海康sdk

linux下调用海康sdk

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();

你可能感兴趣的:(java的坎坷之路)