一,前言

  公司一项目需要拿到海康刻录机里面某时间段的视频去刻录。遇到问题第一时间看官网有么有demo可以套用,哎,一言难尽,打开官网看到文档后,感觉长得不像,就没继续看了,不知道怎么弄的我,迷茫着在网上找答案,网上这方面的资料也少的厉害。最终还是硬着头皮把官网上的看着像的全下载了,终于找到了自己想要目标

二,下载

官网文档 https://www.hikvision.com/cn/download_61.html

请根据需要下载,这里我下载的是 设备网络SDK_Win64 :

三,整理成项目并运行

下载完之后打开该目录:根据个人的下载盘符,这是我的目录 H:\海康设备资料\CH-HCNetSDKV5.3.6.30_build20180816_Win64\Demo示例\4- Java 开发示例\1-ClientDemo\ClientDemo-NetBeansPro

然后将整个ClientDemo-NetBeansPro文件拷贝到你的工作空间,用你的idea 或者 eclipse 打开,解决错误。这里提一句,切记你的jdk版本,你是用64位的SDK就需要64位 jdk 反之自己想。后面有用的。

eclipse 直接导进去就OK

idea需要手动添加 examples.jar和jna.jar

其中jna.jar可以在Maven的pom.xml中直接添加

1 <!-- https://mvnrepository.com/artifact/com.sun.jna/jna -->
2 <dependency>
3     <groupId>com.sun.jna</groupId>
4     <artifactId>jna</artifactId>
5     <version>3.0.9</version>
6 </dependency>
7             

添加examples.jar, 具体怎么添加maven没有的jar,网上自己搜,很多方式,以下只是我自己的方式。

这个添加完之后一般情况下没太多的错误,有啥错误自己瞅瞅改吧改吧也就没有了,过去半个月了,我也不太记得有啥比较难的错误。

这里需要提醒一句,下面图标红的这个文件一定的看。

给大家看看我的工程目录,这里标记的几个文件需要处于同一级目录,切记不可以修改 HCNetSDKCom 文件名称,jar包记得添加

这里看一下HCNetSDK.dll文件的加载

有一个有趣的现象,eclipse里的 HCNetSDK.dll 加载,没有写绝对路径是OK的,没有报 HCNetSDK.dll 文件找不到的情况,可在idea中 无论如何都得写绝对路径,不然加载不上HCNetSDK.dll,希望谁看到可以给我说下是怎么一回事。

报错,找不到 HCNetSDK.dll文件  一共有俩原因,一个是路径问题,一个是 jdk 版本问题(官网上下载的64位SDK,请使用64位JDK,这是一个血淋淋的经历,亲身体验到的痛苦)

给大家看下IDEA下 HCNetSDK.dll 文件的加载

ClientDemo 这个是运行类(mian 方法),跑起来是一个Java swing界面(具体用的是swing 还是啥技术,没必要纠结)

填写刻录机的后台 登陆账号密码IP端口号 

这里我就不演示成功后的样子了,没有现场环境了。

下来直接上菜把。。。  想要自己研究的可以根据这个swing界面跟踪 代码接口,也可以查看下载SDK里的文档说明,里面说的很详细

第一步 初始化

第二步 注册登陆

第三步 下载指定视频(这里我只用到了按时间下载的视频)

首先再次展示一下项目结构

上代码(超级简单,这里是我下载测试使用的)

  1 package atest;
  2
  3 import java.util.Timer;
  4
  5 import javax.swing.JOptionPane;
  6
  7 import com.sun.jna.Native;
  8 import com.sun.jna.NativeLong;
  9 import com.sun.jna.Union;
 10 import com.sun.jna.examples.win32.W32API.HWND;
 11 import com.sun.jna.ptr.IntByReference;
 12
 13 import ClientDemo.ClientDemo;
 14 import ClientDemo.HCNetSDK;
 15
 16 public class Test {
 17     static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
 18     static HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo;// 设备信息
 19     static HCNetSDK.NET_DVR_IPPARACFG m_strIpparaCfg;// IP参数
 20     static HCNetSDK.NET_DVR_CLIENTINFO m_strClientInfo;// 用户参数
 21     static NativeLong lUserID;// 用户句柄
 22     static NativeLong m_lLoadHandle;// 下载句柄
 23     static String sDeviceIP;// IP
 24     static Timer Downloadtimer;
 25
 26     public void A_d() {
 27         // =====================1. 初始化开始====================================
 28         boolean initfalse = hCNetSDK.NET_DVR_Init();// 初始化
 29         if (initfalse != true) {
 30             System.out.println("初始化失败!");
 31         } else {
 32             System.out.println("初始化成功!");
 33         }
 34         // =====================初始化结束=====================================
 35
 36         // =====================2. 注册服务开始====================================
 37         sDeviceIP = "92.206.75.30";// IP
 38         int iPort = 8000;// 端口号
 39         String textFieldUserName = "admin";// 用户名
 40         String passwordFieldPwd = "fpga12345";// 密码
 41
 42         m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
 43         lUserID = hCNetSDK.NET_DVR_Login_V30(sDeviceIP, (short) iPort, textFieldUserName, passwordFieldPwd,
 44                 m_strDeviceInfo);
 45         long userID = lUserID.longValue();
 46         if (userID >= 0) {
 47             System.out.println("登陆注册成功");
 48         } else if (userID == -1) {
 49             System.out.println("登陆注册失败");
 50         }
 51
 52         // =====================注册服务结束====================================
 53
 54
 55         // =====================按照开始时间和结束时间下载视频 开始====================================
 56         m_lLoadHandle = new NativeLong(-1);
 57         if (m_lLoadHandle.intValue() == -1) {
 58             HCNetSDK.NET_DVR_TIME struStartTime;
 59             HCNetSDK.NET_DVR_TIME struStopTime;
 60
 61             struStartTime = new HCNetSDK.NET_DVR_TIME();
 62             struStopTime = new HCNetSDK.NET_DVR_TIME();
 63             struStartTime.dwYear = Integer.parseInt("2019");// 开始时间
 64             struStartTime.dwMonth = Integer.parseInt("3");
 65             struStartTime.dwDay = Integer.parseInt("26");
 66             struStartTime.dwHour = Integer.parseInt("18");
 67             struStartTime.dwMinute = Integer.parseInt("0");
 68             struStartTime.dwSecond = Integer.parseInt("0");
 69
 70             struStopTime.dwYear = Integer.parseInt("2019");// 结束时间
 71             struStopTime.dwMonth = Integer.parseInt("3");
 72             struStopTime.dwDay = Integer.parseInt("26");
 73             struStopTime.dwHour = Integer.parseInt("18");
 74             struStopTime.dwMinute = Integer.parseInt("5");
 75             struStopTime.dwSecond = Integer.parseInt("0");
 76             int m_iChanShowNum = 1;// 通道(摄像头IP地址)
 77
 78             String sFileName = "H:\\test\\" + sDeviceIP + m_iChanShowNum + struStartTime.toStringTitle() + struStopTime.toStringTitle() + ".mp4";
 79             System.out.println(sFileName);
 80
 81             // 视频下载调用
 82             m_lLoadHandle = hCNetSDK.NET_DVR_GetFileByTime(lUserID, new NativeLong(m_iChanShowNum), struStartTime,
 83                     struStopTime, sFileName);
 84             if (m_lLoadHandle.intValue() >= 0) {
 85                 hCNetSDK.NET_DVR_PlayBackControl(m_lLoadHandle, HCNetSDK.NET_DVR_PLAYSTART, 0, null);
 86                 Downloadtimer = new Timer();// 新建定时器
 87                 Downloadtimer.schedule(new DownloadTask(), 0, 5000);// 0秒后开始响应函数
 88                 // System.out.println("视频下载成功!");
 89             } else {
 90                 System.out.println("下载失败");// 按时间
 91                 System.out.println("laste error " + hCNetSDK.NET_DVR_GetLastError());
 92                 return;
 93             }
 94         }
 95     }
 96
 97     /*************************************************
 98      * 类: DownloadTask 类描述: 下载定时器响应函数
 99      *************************************************/
100     class DownloadTask extends java.util.TimerTask {
101         // 定时器函数
102         @Override
103         public void run() {
104             IntByReference nPos = new IntByReference(0);
105             hCNetSDK.NET_DVR_PlayBackControl(m_lLoadHandle, HCNetSDK.NET_DVR_PLAYGETPOS, 0, nPos);
106             if (nPos.getValue() > 100) {
107                 hCNetSDK.NET_DVR_StopGetFile(m_lLoadHandle);
108                 m_lLoadHandle.setValue(-1);
109                 Downloadtimer.cancel();
110                 System.out.println("由于网络原因或DVR忙,下载异常终止!");
111             }
112             if (nPos.getValue() == 100) {
113                 hCNetSDK.NET_DVR_StopGetFile(m_lLoadHandle);
114                 m_lLoadHandle.setValue(-1);
115                 Downloadtimer.cancel();
116                 System.out.println("按时间下载结束!");
117             }
118         }
119     }
120
121 }

mian调用一下就OK

1 package atest;
2
3 public class Test_Main {
4     public static void main(String[] args) {
5         Test test = new Test();
6         test.A_d();
7     }
8 }

这里没有调用 结束调用SDK的接口,因为没看到影响 。。。所以 。。。

到此海康NVR或者DVR视频的下载就OK了,自己往项目中整合。

这里是给自己一个记录,同时看到哪里有问题,请兄弟们在下方留言指正。

转载于:https://www.cnblogs.com/hotspring/p/10696704.html

海康视频下载,以及实时视频预览相关推荐

  1. 实现海康监控视频播放(实时预览)(抓拍,录像,对讲等功能)

    1. 将需要存储的监控抓拍和录像功能存储到本地磁盘,使用输入报存到浏览器缓存里.在created拿取缓存数据,判断缓存里是否有数据. 如果没有弹出输入框. <div v-if="cac ...

  2. vue2实现海康威视根据海康插件进行监控实时预览和回放功能,全套代码,开箱即用。

    这是一套拿到手就能直接用的根据海康提供的摄像机节点实时预览和回放的全步骤代码,开箱即用. 前言 我的是基于vue2写的,vue3可以看我下一篇文章.  点击跳转至vue3关于海康视频开发文章. 很多人 ...

  3. html 预览海康实时视频,海康视频实时预览插件

    更新记录 1.0.1(2020-06-17) 对于没有云台的设备,新增了直接全屏播放的调用函数 1.0.0(2020-06-12) 修改插件采集的数据.发送的服务器地址.以及数据用途说明 查看更多 平 ...

  4. 海康网络摄像头实时视频预览(流媒体转码推流 red5,nginx-rtmp,ffmpeg)

    海康网络摄像头实时视频预览(流媒体转码推流 red5,nginx-rtmp,ffmpeg) 实现思路 获取摄像头rtsp流→流媒体拉流转码推流成rtmp流(网页具备flash可播放)→根据rtmp流地 ...

  5. 调用海康视频接口获取预览取流的URL

    开始之前请参考海康官方SDK文档 鉴于前段时间刚接触视频这一块,整理了自己的一些经验,具体的你们还是参考文档来吧 附上文档地址 https://open.hikvision.com/docs/docI ...

  6. uni-app 海康(HIKVISION)实时视频预览、录像回放、语音对讲

    uni-app 海康(HIKVISION)实时视频预览.录像回放.语音对讲:https://ext.dcloud.net.cn/plugin?id=2403

  7. uni-app 海康实时视频预览、录像回放、倍数回放、抓图、声音、录像、语言对讲、鱼眼 V2

    地址:海康实时视频预览.录像回放.倍数回放.抓图.声音.录像.语言对讲.鱼眼 V2 - DCloud 插件市场 海康iSecure Center实时视频预览.录像回放.倍数回放.抓图.声音.录像.语言 ...

  8. java 前台播放视频_「纯js项目」海康视频项目,java后台+前台web显示的,望提供思路!...

    纯js项目: 海康视频项目,java后台+前台web显示的,望提供思路! 如果只是实现BS架构,可以向海康要web开发包,直接使用浏览器通过ocx访问海康设备浏览视频,如果需要的功能不全,再使用JNI ...

  9. 实现flv格式网络摄像头实时视频预览(nginx-rtmp,ffmpeg)

    实现http-flv格式网络摄像头实时视频预览(nginx-rtmp,ffmpeg) 实现思路 获取摄像头rtsp流→流媒体拉流转码推流成rtmp流(网页具备flash可播放,谷歌浏览器已经禁用)→不 ...

最新文章

  1. Linux 下 LaTeX 2018 安装与使用
  2. R语言--查看数据类型+类型判断
  3. sql2005主从数据库同步配置
  4. css布局:块级元素的居中
  5. IDEA15 下运行Scala遇到问题以及解决办法
  6. PowerDesigner逆向工程,从数据库导出PDM(包括采坑记录)
  7. 删除的文件如何恢复?一个技巧就解决
  8. 深度学习基础 | NLP大魔王 · BERT
  9. 贵州:2018经济增速继续领先 2019“九字真言”主攻高质量
  10. axure9数据统计插件_数据分析太棘手?常用8大统计软件解决难题!
  11. 人脸对齐(十三)--3DDFA
  12. zabbix 创建触发器
  13. 微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
  14. —— GPS测量原理及应用复习-4 ——
  15. He's a Pirate---David Garrett
  16. 数据结构知识点全面总结—精华版
  17. 分治算法解决问题(c语言)
  18. 100天搞定机器学习|day37 无公式理解反向传播算法之精髓
  19. 启动zkCli.sh时指定IP地址
  20. Oracle HINT的常见用法

热门文章

  1. 三种App软件开发模式:自建、外包、免编程自制,哪一种适合你?
  2. 幻灯片更换模板_如何创建Google幻灯片模板
  3. 项目4-一元一次方程类
  4. 《黑马程序员》 category分类的使用(Objective - c语法)
  5. ssm+jsp计算机毕业设计车辆违章查询系统2hie7(程序+LW+源码+远程部署)
  6. 算法实现自动扫雷游戏
  7. 语句摘抄——第11周
  8. Android 歌词滚动效果(歌词逐个与逐渐变色)可换行
  9. MySQL插入数据库乱码问题Incorrect string value: ‘\xE8\xB5\xB5‘ for column ‘name‘ at row 1
  10. AD软件画电路图笔记