需求介绍:
近期需求,需要通过JavaWeb开发,实现在web页面上对海康摄像机进行调焦、控制方向、调光圈大小等操作。通过研究海康官网给的demo,进行JavaWeb二次开发。同时也欢迎各位小伙伴留言 ,共同探讨。
一、准备工作
1.1 下载官方SDK
首先去海康官网下载SDK及其Demo,传送门:https://www.hikvision.com/cn/download_more_570.html
1.2 引入文档中提供的两个jar包至maven仓库并在项目中引入
下载SDK后可以发现有这两个jar包
需要通过maven命令将这两个jar引入到maven本机仓库(可参考https://blog.csdn.net/qq_42401622/article/details/107199799)。
然后就可以在工程的pom.xml中引用了。
<!--海康sdk-->
<dependency>
<groupId>com.haikang</groupId>
<artifactId>jna</artifactId>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jna-1.0.0.jar</systemPath>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.haikang</groupId>
<artifactId>examples</artifactId>
<scope>system</scope>
<systemPath>${project.basedir}/lib/examples-1.0.0.jar</systemPath>
<version>1.0.0</version>
</dependency>
1.3 复制官方文档中所需要的的文件至本工程下。
i 复制HCNetSDK.java到本工程中。
在工程中选择合适的文件夹,将官方文档中的HCNetSDK.java复制进去。
ii 复制动态库到本工程中,动态库如下图。
在工程中选择合适的文件夹,将官方文档中的动态库复制进去。
二、加载动态库
进入准备好的HCNetSDK.java文件中,将动态库的加载路径进行设置,如下图。
三、API调试
使用main方法进行sdk接口调试,可以进行摄像机的左转和停止。致此,若想开发JavaWeb只需要在此基础上引申即可。
package org.example;
import com.sun.jna.NativeLong;
import java.io.IOException;
public class App
{
public static void main( String[] args ) throws IOException, InterruptedException {
NativeLong lUserID;//用户句柄
NativeLong lPreviewHandle = new NativeLong(-1);//预览句柄
HCNetSDK.NET_DVR_CLIENTINFO m_strClientInfo;//用户参数
HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
System.out.println("加载完成");
boolean bool = hCNetSDK.NET_DVR_Init();
System.out.println("初始化结果:" + bool);
HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
lUserID = hCNetSDK.NET_DVR_Login_V30("192.168.1.1",
(short) 8000, "admin", "123456", m_strDeviceInfo);
System.out.println("用户登录句柄:" + lUserID);
m_strClientInfo = new HCNetSDK.NET_DVR_CLIENTINFO();
m_strClientInfo.lChannel = new NativeLong(1);
lPreviewHandle = hCNetSDK.NET_DVR_RealPlay_V30(lUserID,
m_strClientInfo, null, null, true);
System.out.println("预览句柄:" + lPreviewHandle);
//云台左转
boolean isOK = hCNetSDK.NET_DVR_PTZControl(lPreviewHandle,hCNetSDK.PAN_LEFT,0);
System.out.println("左转操作结果:" + isOK);
Thread.sleep(1000);
//停止云台左转
isOK = hCNetSDK.NET_DVR_PTZControl(lPreviewHandle,hCNetSDK.PAN_LEFT,1);
System.out.println("停止左转结果:" + isOK);
int errorCode = hCNetSDK.NET_DVR_GetLastError();
System.out.println("最后一次错误码:" + errorCode);
}
}