1 下载sdk
下载地址:https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10
1.1 下载内容示例
1.2 demo 示例
1.3 选择具体示例项目
打开xxx开发示例后,选择想要运行的项目,本文 选择第一个项目
2 sdk环境导入步骤
2.1 新建Java项目
基础操作,不再赘述
2.2 导入组件
2.2.1 jar 导入
将项目中的两个jar导入,可选择导入到项目 lib目录下,或者直接 导入到项目中
2.2.2 sdk组件导入
按照1.1下载内容示例 的说明文档导入组件,windows 电脑将 .dll 文件全部导入项目
提示:最好将组件全部导入项目根目录下,这样好进行编译,如果放到lib 或者其他目录下,可能会出现找不到组件的情况。
将组件全部导入完成后,需要进行编译
2.3 导入示例代码
将选择的具体项目的代码导入
2.3.1 替换代码中的组件(动态库)路径
a.替换 HCNetSDK.dll (动态库)路径
若组件放在根目录下,则做如下配置
b. 替换 PlayCtrl.dll (播放库) 路径
若组件放在根目录下,则做如下配置
2.3.2 修改设备账号密码等信息
设备默认端口8000
登录成功示例:
2.4 各种功能demo
小提示:测试预览通道号为1;
本项目涉及到的sdk接口 均参照 设备网络sdk使用手册_V6.1 ,如对本文章代码使用的sdk接口不清楚或者想要实现其他功能等,请自行查找改手册
2.4.1 预览、抓图等
预览、抓图按照代码示例即可
2.4.2 视频下载
视频下载代码示例:
//保存视频信息
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
String newName = sf.format(new Date());
// lPlay 预览返回句柄
boolean b = hCNetSDK.NET_DVR_SaveRealData(lPlay, "F:\\test\\"+ newName +"preview.mp4");
if (! b){
int i = hCNetSDK.NET_DVR_GetLastError();
System.out.println("实时预览视频下载开始失败!错误码为:"+i);
}else {
System.out.println("实时视频下载开始!");
//自定义转向操作
turnLeftOne(userID,iChannelNo);
Thread.sleep(3000);
turnRight(userID,iChannelNo);
Thread.sleep(3000);
turnLeftTwo(userID,iChannelNo);
Thread.sleep(3000);
boolean b1 = hCNetSDK.NET_DVR_StopSaveRealData(lPlay);
if (b1){
System.out.println(" 视频结束下载成功! " );
}else {
System.out.println(" 视频结束下载失败 " );
}
海康产品下载的视频需要专用播放器 VS player 打开
播放器下载地址:海康官网
视频播放示例:
2.4.3 3D放大缩小示例
/**
* 云台3D放大或者缩小
*/
public static void location3D(int lUserID,int lDChannel ) throws InterruptedException {
if (lUserID == -1) {
System.out.println("请先注册");
return;
}
HCNetSDK.NET_DVR_POINT_FRAME point_frame = new HCNetSDK.NET_DVR_POINT_FRAME();
//放大操作 因为此处为前端在预览画面 取方框,此处为模拟方框数据
//*255 为标配操作
//2560,1440 为设备的 像素分辨率 在方法播放库抓图 getPicbyPlayCtrl() 中会打印此信息
point_frame.read();
point_frame.xTop = 800*255/2560; //方框起始点的x坐标
point_frame.yTop = 500*255/1440 ; //方框结束点的y坐标
point_frame.xBottom = 1600*255/2560; //方框结束点的x坐标
point_frame.yBottom = 1000*255/1440 ; //方框结束点的y坐标
point_frame.bCounter = 0; //保留
point_frame.write();
boolean b = hCNetSDK.NET_DVR_PTZSelZoomIn_EX(lUserID, lDChannel, point_frame);
if (b){
System.out.println(" 3D放大操作成功! " );
}else {
System.out.println(" 3D放大操作失败! " );
}
Thread.sleep(3000);
//缩小操作
point_frame.read();
point_frame.xTop = 2560*255/2560; //方框起始点的x坐标
point_frame.yTop = 1440*255/1440 ; //方框结束点的y坐标
point_frame.xBottom = 2560*255/1440; //方框结束点的x坐标
point_frame.yBottom = 1440*255/1440 ; //方框结束点的y坐标
point_frame.bCounter = 0; //保留
point_frame.write();
boolean b1 = hCNetSDK.NET_DVR_PTZSelZoomIn_EX(lUserID, lDChannel, point_frame);
if (b1){
System.out.println(" 3D缩小操作成功! " );
}else {
System.out.println(" 3D缩小操作成功! " );
}
}
几点小建议:
a.在想要设备实现具体功能前,请先查找设备是否支持;
b.在代码调试中多用获取最近错误或者查看日志等方法定位问题;
c.操作硬件动作注意闭合,sdk方法多为开关(开始-结束)方法。
注:
本文为海康威视摄像头硬件sdk Java二次开发的本地简单测试,给将要使用海康摄像头Java二次开发做一点小小的铺垫,博主也是刚刚学习不喜勿喷!!