海康视频下载,以及实时视频预览
一,前言
公司一項目需要拿到海康刻錄機里面某時間段的視頻去刻錄。遇到問題第一時間看官網有么有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
總結
以上是生活随笔為你收集整理的海康视频下载,以及实时视频预览的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海康sdkC++二次开发之回放下载
- 下一篇: 团队管理_第一期干部训练营心得