From 2574db703fa175765394dba9d4e0d623a1bcd16a Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期三, 29 十一月 2023 17:19:57 +0800
Subject: [PATCH] 修复bug
---
src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java | 1019 +++++++++++++++++++++++++++++++----------------------------
1 files changed, 531 insertions(+), 488 deletions(-)
diff --git a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
index 92b0b37..c992f8e 100644
--- a/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
+++ b/src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
@@ -1,489 +1,532 @@
-package com.ard.utils.hiksdk.service.impl;
-
-import com.ard.alarm.camera.domain.ArdCameras;
-import com.ard.alarm.camera.domain.CameraCmd;
-import com.ard.alarm.external.domain.ArdEquipExternal;
-import com.ard.config.MinioClientSingleton;
-import com.ard.utils.other.ByteUtils;
-import com.ard.utils.hiksdk.common.GlobalVariable;
-import com.ard.utils.hiksdk.domain.DeviceInfo;
-import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
-import com.ard.utils.hiksdk.util.minio.MinioUtils;
-import com.sun.jna.Native;
-import com.sun.jna.Platform;
-import com.sun.jna.Pointer;
-import com.sun.jna.ptr.IntByReference;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.*;
-import java.nio.ByteBuffer;
-import java.util.*;
-
-
-/**
- * @ClassName: hikClientServiceImpl
- * @Description: 娴峰悍鎿嶄綔瀹㈡埛绔疄鐜扮被
- * @Author: Administrator
- * @Date: 2023骞�01鏈�17鏃� 11:25
- * @Version: 1.2
- **/
-@Slf4j(topic = "hikSdk")
-public class HikClientUtil {
-
- private static HCNetSDK hCNetSDK;
- // 鎶ヨ鍥炶皟鍑芥暟瀹炵幇
- public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;
-
- public static void loadHCNetSDKLib() {
- try {
- log.debug("寮�濮嬪姞杞絪dk搴撴枃浠惰矾寰�");
- if (Platform.isWindows()) {
- String WIN_PATH = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "HCNetSDK.dll";
- log.debug("褰撳墠Windows骞冲彴鐨剆dk搴撹矾寰勶細" + WIN_PATH);
- hCNetSDK = (HCNetSDK) Native.loadLibrary(WIN_PATH, HCNetSDK.class);
- } else {
- log.debug("Linux骞冲彴");
- String LINUX_PATH = System.getProperty("user.dir") + File.separator + "hiklib" + File.separator + "libhcnetsdk.so";
- log.debug("褰撳墠Linux骞冲彴鐨剆dk搴撹矾寰勶細" + LINUX_PATH);
- hCNetSDK = (HCNetSDK) Native.loadLibrary(LINUX_PATH, HCNetSDK.class);
-
- //璁剧疆HCNetSDKCom缁勪欢搴撴墍鍦ㄨ矾寰�
- //libhcnetsdk.so
- String strPathCom = "/home/hiklib";
- HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH();
- System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length());
- struComPath.write();
- hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer());
-
- //璁剧疆libcrypto.so鎵�鍦ㄨ矾寰�
- HCNetSDK.BYTE_ARRAY ptrByteArrayCrypto = new HCNetSDK.BYTE_ARRAY(256);
- String strPathCrypto = "/home/hiklib/libcrypto.so.1.1";
- System.arraycopy(strPathCrypto.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, strPathCrypto.length());
- ptrByteArrayCrypto.write();
- hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArrayCrypto.getPointer());
-
- //璁剧疆libssl.so鎵�鍦ㄨ矾寰�
- HCNetSDK.BYTE_ARRAY ptrByteArraySsl = new HCNetSDK.BYTE_ARRAY(256);
- String strPathSsl = "/home/hiklib/libssl.so.1.1";
- System.arraycopy(strPathSsl.getBytes(), 0, ptrByteArraySsl.byValue, 0, strPathSsl.length());
- ptrByteArraySsl.write();
- hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer());
- }
- } catch (Exception ex) {
- log.error("鍔犺浇搴撴枃浠跺紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 娉ㄥ唽鐧诲綍 鍙敮鎸佸悓姝ョ櫥闄嗭紝涓斿畼鏂逛笉寤鸿鐩存帴鍦ㄦ鎺ュ彛涓嬪啓鑰楁椂鎿嶄綔
- * @鍙傛暟 [dvrLogin]
- * @杩斿洖鍊� java.lang.Integer
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/1/17 16:12
- * @淇敼浜哄拰鍏跺畠淇℃伅
- */
- public ArdCameras login1(ArdCameras camera) {
- // 鍒濆鍖�
- if (!hCNetSDK.NET_DVR_Init()) {
- log.error("SDK鍒濆鍖栧け璐�");
- }
- //鎵撳嵃娴峰悍sdk鏃ュ織
- if (Platform.isWindows()) {
- String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
- hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
- } else {
- hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
- }
- String m_sDeviceIP = camera.getIp();
- String m_sUsername = camera.getUsername();
- String m_sPassword = camera.getPassword();
- short m_sPort = camera.getPort().shortValue();
- //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
- hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
- hCNetSDK.NET_DVR_SetReconnect(100000, true);
- //璁惧淇℃伅, 杈撳嚭鍙傛暟
- HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
- int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo);
- if (lUserID < 0) {
- //閲婃斁SDK璧勬簮
- hCNetSDK.NET_DVR_Cleanup();
- camera.setLoginId(-1);
- }
- if (GlobalVariable.loginMap.containsKey(camera.getId())) {
- GlobalVariable.loginMap.remove(camera.getId());
- }
- GlobalVariable.loginMap.put(camera.getId(), lUserID);
-
- camera.setLoginId(lUserID);
- camera.setChannel((int) m_strDeviceInfo.byStartChan);
- return camera;
- }
-
- /**
- * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/1/17 16:12
- */
- public static void login(DeviceInfo deviceInfo) {
- // 鍒濆鍖�
- if (!hCNetSDK.NET_DVR_Init()) {
- log.error("SDK鍒濆鍖栧け璐�");
- }
- //鎵撳嵃娴峰悍sdk鏃ュ織
- if (Platform.isWindows()) {
- String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
- hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
- } else {
- hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
- }
- String m_sDeviceIP = deviceInfo.getIp();
- String m_sUsername = deviceInfo.getUsername();
- String m_sPassword = deviceInfo.getPassword();
- short m_sPort = deviceInfo.getPort().shortValue();
- //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
- hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
- hCNetSDK.NET_DVR_SetReconnect(100000, true);
- //璁惧淇℃伅, 杈撳嚭鍙傛暟
- HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
- HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
-
- // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑
- m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
- System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
- m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
- System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
- m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
- System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
- m_strLoginInfo.wPort = m_sPort;
- m_strLoginInfo.byVerifyMode = 0;
- m_strLoginInfo.byLoginMode = 0;
- //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄� windowsSDK閲屾槸true鍜宖alse
- m_strLoginInfo.bUseAsynLogin = true;
- //寮傛鐧诲綍鍥炶皟
- m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo);
- m_strLoginInfo.write();
- int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
- if (i < 0) {
- int errorCode = hCNetSDK.NET_DVR_GetLastError();
- log.info("鐧诲綍寮傚父锛�" + errorCode);
- }
- }
-
- /**
- * @鎻忚堪 鐢ㄦ埛娉ㄩ攢
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/1/17 16:12
- */
- public static void logout(DeviceInfo deviceInfo) {
- String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort();
- //鎾ら槻
- if (GlobalVariable.alarmMap.containsKey(deviceInfo.getDeviceId())) {
- Integer lAlarmHandle = GlobalVariable.alarmMap.get(deviceInfo.getDeviceId());
- boolean b = hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle);
- if (b) {
- log.debug("璁惧銆�" + deviceIpPort + "銆戞挙闃叉垚鍔�");
- }
- }
- //鐧诲嚭
- if (GlobalVariable.loginMap.containsKey(deviceInfo.getDeviceId())) {
- Integer lUserID = GlobalVariable.loginMap.get(deviceInfo.getDeviceId());
- boolean b = hCNetSDK.NET_DVR_Logout(lUserID);
- if (b) {
- log.debug("璁惧銆�" + deviceIpPort + "銆戞敞閿�鎴愬姛");
- }
- }
- }
-
- /**
- * @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void loginAllCamera(List<ArdCameras> ardCameras) {
- try {
- for (ArdCameras camera : ardCameras) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(camera.getId());
- info.setIp(camera.getIp());
- info.setPort(camera.getPort());
- info.setUsername(camera.getUsername());
- info.setPassword(camera.getPassword());
- login(info);
- String key = camera.getIp() + ":" + camera.getPort();
- GlobalVariable.cameraMap.put(key, camera);
- }
- } catch (Exception ex) {
- log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲嚭鎵�鏈夌浉鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void logoutAllCamera(List<ArdCameras> ardCameras) {
- try {
- for (ArdCameras camera : ardCameras) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(camera.getId());
- info.setIp(camera.getIp());
- info.setPort(camera.getPort());
- info.setUsername(camera.getUsername());
- info.setPassword(camera.getPassword());
- logout(info);
- String key = camera.getIp() + ":" + camera.getPort();
- GlobalVariable.cameraMap.remove(key);
- }
- } catch (Exception ex) {
- log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal alarmHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(alarmHost.getId());
- info.setIp(alarmHost.getIp());
- info.setPort(alarmHost.getPort());
- info.setUsername(alarmHost.getUsername());
- info.setPassword(alarmHost.getPassword());
- login(info);
-// String key=alarmHost.getIp()+":"+alarmHost.getPort();
-// GlobalVariable.alarmHostMap.put(key, alarmHost);
- }
- } catch (Exception ex) {
- log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal alarmHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(alarmHost.getId());
- info.setIp(alarmHost.getIp());
- info.setPort(alarmHost.getPort());
- info.setUsername(alarmHost.getUsername());
- info.setPassword(alarmHost.getPassword());
- logout(info);
-// String key=alarmHost.getIp()+":"+alarmHost.getPort();
-// GlobalVariable.alarmHostMap.remove(key);
- }
- } catch (Exception ex) {
- log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲綍鎵�鏈夐棬绂佷富鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal accessControlHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(accessControlHost.getId());
- info.setIp(accessControlHost.getIp());
- info.setPort(accessControlHost.getPort());
- info.setUsername(accessControlHost.getUsername());
- info.setPassword(accessControlHost.getPassword());
- login(info);
-//
-// String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
-// GlobalVariable.accessHostMap.put(key, accessControlHost);
- }
- } catch (Exception ex) {
- log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
- /**
- * @鎻忚堪 鐧诲嚭鎵�鏈夐棬绂佷富鏈�
- * @鍒涘缓浜� 鍒樿嫃涔�
- * @鍒涘缓鏃堕棿 2023/2/3 10:10
- */
- public static void logoutAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
- try {
- for (ArdEquipExternal accessControlHost : ardEquipExternals) {
- Thread.sleep(100);
- DeviceInfo info = new DeviceInfo();
- info.setDeviceId(accessControlHost.getId());
- info.setIp(accessControlHost.getIp());
- info.setPort(accessControlHost.getPort());
- info.setUsername(accessControlHost.getUsername());
- info.setPassword(accessControlHost.getPassword());
- logout(info);
-// String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
-// GlobalVariable.accessHostMap.remove(key);
- }
- } catch (Exception ex) {
- log.error("鍒濆鍖栨姤璀︿富鏈哄紓甯革細" + ex.getMessage());
- }
- }
-
-
- /**
- * 寤虹珛甯冮槻涓婁紶閫氶亾锛岀敤浜庝紶杈撴暟鎹�
- *
- * @param lUserID 鍞竴鏍囪瘑绗�
- * @param lAlarmHandle 鎶ヨ澶勭悊鍣�
- */
- public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) {
- // 鏍规嵁璁惧娉ㄥ唽鐢熸垚鐨刲UserID寤虹珛甯冮槻鐨勪笂浼犻�氶亾锛屽嵆鏁版嵁鐨勪笂浼犻�氶亾
- if (lUserID == -1) {
- log.error("璇峰厛娉ㄥ唽");
- return lUserID;
- }
- if (lAlarmHandle < 0) {
- // 璁惧灏氭湭甯冮槻,闇�瑕佸厛杩涜甯冮槻
- if (fMSFCallBack_V31 == null) {
- fMSFCallBack_V31 = new FMSGCallBack();
- if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) {
- log.error("璁剧疆鍥炶皟鍑芥暟澶辫触!閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
- }
- }
- // 杩欓噷闇�瑕佸璁惧杩涜鐩稿簲鐨勫弬鏁拌缃紝涓嶈缃垨璁剧疆閿欒閮戒細瀵艰嚧璁惧娉ㄥ唽澶辫触
- HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();
- m_strAlarmInfo.dwSize = m_strAlarmInfo.size();
- // 鏅鸿兘浜ら�氬竷闃蹭紭鍏堢骇锛�0 - 涓�绛夌骇锛堥珮锛夛紝1 - 浜岀瓑绾э紙涓級锛�2 - 涓夌瓑绾э紙浣庯級
- m_strAlarmInfo.byLevel = 2;
- // 鏅鸿兘浜ら�氭姤璀︿俊鎭笂浼犵被鍨嬶細0 - 鑰佹姤璀︿俊鎭紙NET_DVR_PLATE_RESULT锛�, 1 - 鏂版姤璀︿俊鎭�(NET_ITS_PLATE_RESULT)
- m_strAlarmInfo.byAlarmInfoType = 1;
- // 甯冮槻绫诲瀷(浠呴拡瀵归棬绂佷富鏈恒�佷汉璇佽澶�)锛�0 - 瀹㈡埛绔竷闃�(浼氭柇缃戠画浼�)锛�1 - 瀹炴椂甯冮槻(鍙笂浼犲疄鏃舵暟鎹�)
- m_strAlarmInfo.byDeployType = 1;
- m_strAlarmInfo.write();
- // 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙�
- lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
- if (lAlarmHandle == -1) {
- log.error("璁惧銆�" + deviceIpPort + "銆戝竷闃插け璐ワ紝閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
- } else {
- log.debug("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�");
- }
- }
- return lAlarmHandle;
- }
-
- /**
- * 娉ㄩ攢
- *
- * @param lUserID 璁惧娉ㄥ唽鎴愬姛鍞竴鏍囪瘑绗�
- */
- public static void logout(int lUserID) {
- // 娉ㄩ攢
- hCNetSDK.NET_DVR_Logout(lUserID);
- // 閲婃斁sdk璧勬簮
- hCNetSDK.NET_DVR_Cleanup();
- }
-
- /**
- * 鎶撳浘
- *
- * @param cmd 鎶撳浘鍛戒护
- */
- public static String picCutCate(CameraCmd cmd) {
- String cameraId = cmd.getCameraId();
- Integer channelNum = cmd.getChannelNum();
- if (!GlobalVariable.loginMap.containsKey(cameraId)) {
- return "";
- }
- Integer userId = GlobalVariable.loginMap.get(cameraId);
- //鍥剧墖淇℃伅
- HCNetSDK.NET_DVR_JPEGPARA jpeg = new HCNetSDK.NET_DVR_JPEGPARA();
- //璁剧疆鍥剧墖鍒嗚鲸鐜�
- //鍥剧墖灏哄锛�0-CIF(352*288/352*240)锛�1-QCIF(176*144/176*120)锛�2-4CIF(704*576/704*480)鎴朌1(720*576/720*486)锛�3-UXGA(1600*1200)锛�
- // 4-SVGA(800*600)锛�5-HD720P(1280*720)锛�6-VGA(640*480)锛�7-XVGA(1280*960)锛�8-HD900P(1600*900)锛�9-HD1080P(1920*1080)锛�10-2560*1920锛�
- // 11-1600*304锛�12-2048*1536锛�13-2448*2048锛�14-2448*1200锛�15-2448*800锛�16-XGA(1024*768)锛�17-SXGA(1280*1024)锛�18-WD1(960*576/960*480),
- // 19-1080I(1920*1080)锛�20-576*576锛�21-1536*1536锛�22-1920*1920锛�23-320*240锛�24-720*720锛�25-1024*768锛�26-1280*1280锛�27-1600*600锛�
- // 28-2048*768锛�29-160*120锛�75-336*256锛�78-384*256锛�79-384*216锛�80-320*256锛�82-320*192锛�83-512*384锛�127-480*272锛�128-512*272锛� 161-288*320锛�
- // 162-144*176锛�163-480*640锛�164-240*320锛�165-120*160锛�166-576*720锛�167-720*1280锛�168-576*960锛�180-180*240, 181-360*480, 182-540*720,
- // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(浣跨敤褰撳墠鐮佹祦鍒嗚鲸鐜�)
- jpeg.wPicSize = 0;
- //璁剧疆鍥剧墖璐ㄩ噺锛�0-鏈�濂斤紝1-杈冨ソ锛�2-涓�鑸�
- jpeg.wPicQuality = 0;
- IntByReference a = new IntByReference();
- //璁剧疆鍥剧墖澶у皬
- ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
- // 鎶撳浘鍒板唴瀛橈紝鍗曞抚鏁版嵁鎹曡幏骞朵繚瀛樻垚JPEG瀛樻斁鍦ㄦ寚瀹氱殑鍐呭瓨绌洪棿涓�
- // log.debug("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------");
- boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
- //log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is);
- if (is) {
- // log.debug("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError());
- byte[] array = jpegBuffer.array();
- //瀛樺偍鍒癿inio
-
- String ContentType = "image/JPEG";
- InputStream input = new ByteArrayInputStream(array);
- String url = "";
- try {
- boolean b = MinioUtils.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, ContentType);
- if (b) {
- // url = MinioUtils.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
- // url = url.indexOf('?') != -1 ? url.substring(0, url.indexOf('?')) : url;
- url = MinioClientSingleton.domainUrl + "/" + cmd.getBucketName() + "/" + cmd.getObjectName();
- // log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
- }
- } catch (Exception ex) {
- log.error("涓婁紶鏂囦欢寮傚父锛�" + ex.getMessage());
- }
- return url;
- } else {
- int code = hCNetSDK.NET_DVR_GetLastError();
- log.debug("鎶撳浘澶辫触,璇风◢鍚庨噸璇�" + code);
- return "";
- }
- }
-
- /**
- * 鑾峰彇闃插尯鍚嶇О
- * 閫氶亾鍙�==闃插尯鍙� 浠�0寮�濮�
- * 鍒樿嫃涔�
- * 2023/7/6 10:48
- */
- public static String getDefenseZoneName(CameraCmd cmd) {
- String name = "";
- try {
- String cameraId = cmd.getCameraId();
- Integer channelNum = cmd.getWZoneIndex();//閫氶亾鍙�==闃插尯鍙�
- if (!GlobalVariable.loginMap.containsKey(cameraId)) {
- return name;
- }
- Integer userId = GlobalVariable.loginMap.get(cameraId);
-
- HCNetSDK.NET_DVR_ALARMIN_PARAM netDvrAlarminParam = new HCNetSDK.NET_DVR_ALARMIN_PARAM();
- Pointer point = netDvrAlarminParam.getPointer();
- IntByReference ibrBytesReturned = new IntByReference();
- netDvrAlarminParam.write();
- boolean b = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM, channelNum, point, netDvrAlarminParam.size(), ibrBytesReturned);
- if (b) {
- netDvrAlarminParam.read();
- name = ByteUtils.bytesToStringZh(netDvrAlarminParam.byName);
- } else {
- int error = hCNetSDK.NET_DVR_GetLastError();
- log.info("鑾峰彇闃插尯鍚嶇О澶辫触:" + error);
- }
- } catch (Exception ex) {
- log.error("鑾峰彇闃插尯鍚嶇О寮傚父:" + ex.getMessage());
- }
- return name;
- }
-
+package com.ard.utils.hiksdk.service.impl;
+
+import com.ard.alarm.camera.domain.ArdCameras;
+import com.ard.alarm.camera.domain.CameraCmd;
+import com.ard.alarm.external.domain.ArdEquipExternal;
+import com.ard.utils.minio.MinioUtil;
+import com.ard.utils.other.ByteUtils;
+import com.ard.utils.hiksdk.common.GlobalVariable;
+import com.ard.utils.hiksdk.domain.DeviceInfo;
+import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK;
+import com.ard.utils.spring.SpringUtils;
+import com.sun.jna.Native;
+import com.sun.jna.Platform;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.*;
+import java.nio.ByteBuffer;
+import java.util.*;
+
+
+/**
+ * @ClassName: hikClientServiceImpl
+ * @Description: 娴峰悍鎿嶄綔瀹㈡埛绔疄鐜扮被
+ * @Author: Administrator
+ * @Date: 2023骞�01鏈�17鏃� 11:25
+ * @Version: 1.2
+ **/
+@Slf4j(topic = "hikSdk")
+public class HikClientUtil {
+ public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK;
+ // 鎶ヨ鍥炶皟鍑芥暟瀹炵幇
+ public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31;
+
+ /**
+ * @鎻忚堪 娉ㄥ唽鐧诲綍 鍙敮鎸佸悓姝ョ櫥闄嗭紝涓斿畼鏂逛笉寤鸿鐩存帴鍦ㄦ鎺ュ彛涓嬪啓鑰楁椂鎿嶄綔
+ * @鍙傛暟 [dvrLogin]
+ * @杩斿洖鍊� java.lang.Integer
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/1/17 16:12
+ * @淇敼浜哄拰鍏跺畠淇℃伅
+ */
+ public ArdCameras login1(ArdCameras camera) {
+ // 鍒濆鍖�
+ if (!hCNetSDK.NET_DVR_Init()) {
+ log.error("SDK鍒濆鍖栧け璐�");
+ }
+ //鎵撳嵃娴峰悍sdk鏃ュ織
+ if (Platform.isWindows()) {
+ String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
+ hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
+ } else {
+ hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
+ }
+ String m_sDeviceIP = camera.getIp();
+ String m_sUsername = camera.getUsername();
+ String m_sPassword = camera.getPassword();
+ short m_sPort = camera.getPort().shortValue();
+ //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
+ hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
+ hCNetSDK.NET_DVR_SetReconnect(100000, true);
+ //璁惧淇℃伅, 杈撳嚭鍙傛暟
+ HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30();
+ int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo);
+ if (lUserID < 0) {
+ //閲婃斁SDK璧勬簮
+ hCNetSDK.NET_DVR_Cleanup();
+ camera.setLoginId(-1);
+ }
+ if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+ GlobalVariable.loginMap.remove(camera.getId());
+ }
+ GlobalVariable.loginMap.put(camera.getId(), lUserID);
+
+ camera.setLoginId(lUserID);
+ camera.setChannel((int) m_strDeviceInfo.byStartChan);
+ return camera;
+ }
+
+ /**
+ * @鎻忚堪 娉ㄥ唽鐧诲綍 闆嗘垚浜嶯ET_DVR_Login_V30锛屾敮鎸佸悓姝ュ拰寮傛鐧诲綍
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/1/17 16:12
+ */
+ public static void login(DeviceInfo deviceInfo) {
+ // 鍒濆鍖�
+ if (!hCNetSDK.NET_DVR_Init()) {
+ log.error("SDK鍒濆鍖栧け璐�");
+ }
+ //鎵撳嵃娴峰悍sdk鏃ュ織
+ if (Platform.isWindows()) {
+ String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator;
+ hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true);
+ } else {
+ hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true);
+ }
+ String m_sDeviceIP = deviceInfo.getIp();
+ String m_sUsername = deviceInfo.getUsername();
+ String m_sPassword = deviceInfo.getPassword();
+ short m_sPort = deviceInfo.getPort().shortValue();
+ //璁剧疆杩炴帴鏃堕棿涓庨噸杩炴椂闂�
+ hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
+ hCNetSDK.NET_DVR_SetReconnect(100000, true);
+ //璁惧淇℃伅, 杈撳嚭鍙傛暟
+ HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
+ HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();
+
+ // 娉ㄥ唽璁惧-鐧诲綍鍙傛暟锛屽寘鎷澶囧湴鍧�銆佺櫥褰曠敤鎴枫�佸瘑鐮佺瓑
+ m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
+ System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
+ m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
+ System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
+ m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
+ System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
+ m_strLoginInfo.wPort = m_sPort;
+ m_strLoginInfo.byVerifyMode = 0;
+ m_strLoginInfo.byLoginMode = 0;
+ //鏄惁寮傛鐧诲綍锛�0- 鍚︼紝1- 鏄� windowsSDK閲屾槸true鍜宖alse
+ m_strLoginInfo.bUseAsynLogin = true;
+ //寮傛鐧诲綍鍥炶皟
+ m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo);
+ m_strLoginInfo.write();
+ int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+ if (i < 0) {
+ int errorCode = hCNetSDK.NET_DVR_GetLastError();
+ log.error("鐧诲綍寮傚父锛�" + errorCode);
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐢ㄦ埛娉ㄩ攢
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/1/17 16:12
+ */
+ public static void logout(DeviceInfo deviceInfo) {
+ String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort();
+ //鎾ら槻
+ if (GlobalVariable.alarmMap.containsKey(deviceInfo.getDeviceId())) {
+ Integer lAlarmHandle = GlobalVariable.alarmMap.get(deviceInfo.getDeviceId());
+ boolean b = hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle);
+ if (b) {
+ log.debug("璁惧銆�" + deviceIpPort + "銆戞挙闃叉垚鍔�");
+ }
+ }
+ //鐧诲嚭
+ if (GlobalVariable.loginMap.containsKey(deviceInfo.getDeviceId())) {
+ Integer lUserID = GlobalVariable.loginMap.get(deviceInfo.getDeviceId());
+ boolean b = hCNetSDK.NET_DVR_Logout(lUserID);
+ if (b) {
+ log.debug("璁惧銆�" + deviceIpPort + "銆戞敞閿�鎴愬姛");
+ }
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐧诲綍鎵�鏈夌浉鏈�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void loginAllCamera(List<ArdCameras> ardCameras) {
+ try {
+ for (ArdCameras camera : ardCameras) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(camera.getId());
+ info.setIp(camera.getIp());
+ info.setPort(camera.getPort());
+ info.setUsername(camera.getUsername());
+ info.setPassword(camera.getPassword());
+ login(info);
+ String key = camera.getIp() + ":" + camera.getPort();
+ GlobalVariable.cameraMap.put(key, camera);
+ }
+ } catch (Exception ex) {
+ log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐧诲嚭鎵�鏈夌浉鏈�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void logoutAllCamera(List<ArdCameras> ardCameras) {
+ try {
+ for (ArdCameras camera : ardCameras) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(camera.getId());
+ info.setIp(camera.getIp());
+ info.setPort(camera.getPort());
+ info.setUsername(camera.getUsername());
+ info.setPassword(camera.getPassword());
+ logout(info);
+ String key = camera.getIp() + ":" + camera.getPort();
+ GlobalVariable.cameraMap.remove(key);
+ }
+ } catch (Exception ex) {
+ log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐧诲綍鎵�鏈夋姤璀︿富鏈�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal alarmHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(alarmHost.getId());
+ info.setIp(alarmHost.getIp());
+ info.setPort(alarmHost.getPort());
+ info.setUsername(alarmHost.getUsername());
+ info.setPassword(alarmHost.getPassword());
+ login(info);
+// String key=alarmHost.getIp()+":"+alarmHost.getPort();
+// GlobalVariable.alarmHostMap.put(key, alarmHost);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲綍鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐧诲嚭鎵�鏈夋姤璀︿富鏈�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal alarmHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(alarmHost.getId());
+ info.setIp(alarmHost.getIp());
+ info.setPort(alarmHost.getPort());
+ info.setUsername(alarmHost.getUsername());
+ info.setPassword(alarmHost.getPassword());
+ logout(info);
+// String key=alarmHost.getIp()+":"+alarmHost.getPort();
+// GlobalVariable.alarmHostMap.remove(key);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲嚭鎵�鏈夋姤璀︿富鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐧诲綍鎵�鏈夐棬绂佷富鏈�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal accessControlHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(accessControlHost.getId());
+ info.setIp(accessControlHost.getIp());
+ info.setPort(accessControlHost.getPort());
+ info.setUsername(accessControlHost.getUsername());
+ info.setPassword(accessControlHost.getPassword());
+ login(info);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲綍鎵�鏈夐棬绂佷富鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐧诲嚭鎵�鏈夐棬绂佷富鏈�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void logoutAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal accessControlHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(accessControlHost.getId());
+ info.setIp(accessControlHost.getIp());
+ info.setPort(accessControlHost.getPort());
+ info.setUsername(accessControlHost.getUsername());
+ info.setPassword(accessControlHost.getPassword());
+ logout(info);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲嚭鎵�鏈夐棬绂佷富鏈哄紓甯革細" + ex.getMessage());
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐧诲綍鎵�鏈夎秴鑴�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void loginAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal superBrainHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(superBrainHost.getId());
+ info.setIp(superBrainHost.getIp());
+ info.setPort(superBrainHost.getPort());
+ info.setUsername(superBrainHost.getUsername());
+ info.setPassword(superBrainHost.getPassword());
+ login(info);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲綍鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
+ }
+ }
+
+ /**
+ * @鎻忚堪 鐧诲嚭鎵�鏈夎秴鑴�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void logoutAllSuperBrainHost(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal superBrainHost : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(superBrainHost.getId());
+ info.setIp(superBrainHost.getIp());
+ info.setPort(superBrainHost.getPort());
+ info.setUsername(superBrainHost.getUsername());
+ info.setPassword(superBrainHost.getPassword());
+ logout(info);
+// String key=accessControlHost.getIp()+":"+accessControlHost.getPort();
+// GlobalVariable.accessHostMap.remove(key);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲嚭鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
+ }
+ }
+ /**
+ * @鎻忚堪 鐧诲綍鎵�鏈夊鑱旇澶�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void loginAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(ardEquipExternal.getId());
+ info.setIp(ardEquipExternal.getIp());
+ info.setPort(ardEquipExternal.getPort());
+ info.setUsername(ardEquipExternal.getUsername());
+ info.setPassword(ardEquipExternal.getPassword());
+ login(info);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲綍鎵�鏈夊鑱旇澶囧紓甯革細" + ex.getMessage());
+ }
+ }
+ /**
+ * @鎻忚堪 鐧诲嚭鎵�鏈夊鑱旇澶�
+ * @鍒涘缓浜� 鍒樿嫃涔�
+ * @鍒涘缓鏃堕棿 2023/2/3 10:10
+ */
+ public static void logoutAllArdEquipExternals(List<ArdEquipExternal> ardEquipExternals) {
+ try {
+ for (ArdEquipExternal ardEquipExternal : ardEquipExternals) {
+ Thread.sleep(100);
+ DeviceInfo info = new DeviceInfo();
+ info.setDeviceId(ardEquipExternal.getId());
+ info.setIp(ardEquipExternal.getIp());
+ info.setPort(ardEquipExternal.getPort());
+ info.setUsername(ardEquipExternal.getUsername());
+ info.setPassword(ardEquipExternal.getPassword());
+ logout(info);
+ }
+ } catch (Exception ex) {
+ log.error("鐧诲嚭鎵�鏈夎秴鑴戝紓甯革細" + ex.getMessage());
+ }
+ }
+
+
+
+ /**
+ * 寤虹珛甯冮槻涓婁紶閫氶亾锛岀敤浜庝紶杈撴暟鎹�
+ *
+ * @param lUserID 鍞竴鏍囪瘑绗�
+ * @param lAlarmHandle 鎶ヨ澶勭悊鍣�
+ */
+ public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) {
+ // 鏍规嵁璁惧娉ㄥ唽鐢熸垚鐨刲UserID寤虹珛甯冮槻鐨勪笂浼犻�氶亾锛屽嵆鏁版嵁鐨勪笂浼犻�氶亾
+ if (lUserID == -1) {
+ log.error("璇峰厛娉ㄥ唽");
+ return lUserID;
+ }
+ if (lAlarmHandle < 0) {
+ // 璁惧灏氭湭甯冮槻,闇�瑕佸厛杩涜甯冮槻
+ if (fMSFCallBack_V31 == null) {
+ fMSFCallBack_V31 = new FMSGCallBack();
+ if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) {
+ log.error("璁剧疆鍥炶皟鍑芥暟澶辫触!閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
+ }
+ }
+ // 杩欓噷闇�瑕佸璁惧杩涜鐩稿簲鐨勫弬鏁拌缃紝涓嶈缃垨璁剧疆閿欒閮戒細瀵艰嚧璁惧娉ㄥ唽澶辫触
+ HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM();
+ m_strAlarmInfo.dwSize = m_strAlarmInfo.size();
+ // 鏅鸿兘浜ら�氬竷闃蹭紭鍏堢骇锛�0 - 涓�绛夌骇锛堥珮锛夛紝1 - 浜岀瓑绾э紙涓級锛�2 - 涓夌瓑绾э紙浣庯級
+ m_strAlarmInfo.byLevel = 0;
+ // 鏅鸿兘浜ら�氭姤璀︿俊鎭笂浼犵被鍨嬶細0 - 鑰佹姤璀︿俊鎭紙NET_DVR_PLATE_RESULT锛�, 1 - 鏂版姤璀︿俊鎭�(NET_ITS_PLATE_RESULT)
+ m_strAlarmInfo.byAlarmInfoType = 1;
+ // 甯冮槻绫诲瀷(浠呴拡瀵归棬绂佷富鏈恒�佷汉璇佽澶�)锛�0 - 瀹㈡埛绔竷闃�(浼氭柇缃戠画浼�)锛�1 - 瀹炴椂甯冮槻(鍙笂浼犲疄鏃舵暟鎹�)
+ m_strAlarmInfo.byDeployType = 1;
+ //浜鸿劯鎶ヨ淇℃伅绫诲瀷锛�1- 浜鸿劯渚︽祴鎶ヨ 0- 浜鸿劯鎶撴媿鎶ヨ
+ m_strAlarmInfo.byFaceAlarmDetection = 0;
+ m_strAlarmInfo.write();
+ // 甯冮槻鎴愬姛锛岃繑鍥炲竷闃叉垚鍔熺殑鏁版嵁浼犺緭閫氶亾鍙�
+ lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo);
+ if (lAlarmHandle == -1) {
+ log.error("璁惧銆�" + deviceIpPort + "銆戝竷闃插け璐ワ紝閿欒鐮�==========銆�" + hCNetSDK.NET_DVR_GetLastError());
+ } else {
+ log.debug("璁惧銆�" + deviceIpPort + "銆戝竷闃叉垚鍔�");
+ }
+ }
+ return lAlarmHandle;
+ }
+
+ /**
+ * 娉ㄩ攢
+ *
+ * @param lUserID 璁惧娉ㄥ唽鎴愬姛鍞竴鏍囪瘑绗�
+ */
+ public static void logout(int lUserID) {
+ // 娉ㄩ攢
+ hCNetSDK.NET_DVR_Logout(lUserID);
+ // 閲婃斁sdk璧勬簮
+ hCNetSDK.NET_DVR_Cleanup();
+ }
+
+ /**
+ * 鎶撳浘
+ *
+ * @param cmd 鎶撳浘鍛戒护
+ */
+ public static String picCutCate(CameraCmd cmd) {
+ String cameraId = cmd.getCameraId();
+ Integer channelNum = cmd.getChannelNum();
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+ return "";
+ }
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
+ //鍥剧墖淇℃伅
+ HCNetSDK.NET_DVR_JPEGPARA jpeg = new HCNetSDK.NET_DVR_JPEGPARA();
+ //璁剧疆鍥剧墖鍒嗚鲸鐜�
+ //鍥剧墖灏哄锛�0-CIF(352*288/352*240)锛�1-QCIF(176*144/176*120)锛�2-4CIF(704*576/704*480)鎴朌1(720*576/720*486)锛�3-UXGA(1600*1200)锛�
+ // 4-SVGA(800*600)锛�5-HD720P(1280*720)锛�6-VGA(640*480)锛�7-XVGA(1280*960)锛�8-HD900P(1600*900)锛�9-HD1080P(1920*1080)锛�10-2560*1920锛�
+ // 11-1600*304锛�12-2048*1536锛�13-2448*2048锛�14-2448*1200锛�15-2448*800锛�16-XGA(1024*768)锛�17-SXGA(1280*1024)锛�18-WD1(960*576/960*480),
+ // 19-1080I(1920*1080)锛�20-576*576锛�21-1536*1536锛�22-1920*1920锛�23-320*240锛�24-720*720锛�25-1024*768锛�26-1280*1280锛�27-1600*600锛�
+ // 28-2048*768锛�29-160*120锛�75-336*256锛�78-384*256锛�79-384*216锛�80-320*256锛�82-320*192锛�83-512*384锛�127-480*272锛�128-512*272锛� 161-288*320锛�
+ // 162-144*176锛�163-480*640锛�164-240*320锛�165-120*160锛�166-576*720锛�167-720*1280锛�168-576*960锛�180-180*240, 181-360*480, 182-540*720,
+ // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(浣跨敤褰撳墠鐮佹祦鍒嗚鲸鐜�)
+ jpeg.wPicSize = 0;
+ //璁剧疆鍥剧墖璐ㄩ噺锛�0-鏈�濂斤紝1-杈冨ソ锛�2-涓�鑸�
+ jpeg.wPicQuality = 0;
+ IntByReference a = new IntByReference();
+ //璁剧疆鍥剧墖澶у皬
+ ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024);
+ // 鎶撳浘鍒板唴瀛橈紝鍗曞抚鏁版嵁鎹曡幏骞朵繚瀛樻垚JPEG瀛樻斁鍦ㄦ寚瀹氱殑鍐呭瓨绌洪棿涓�
+ // log.debug("-----------杩欓噷寮�濮嬪皝瑁� NET_DVR_CaptureJPEGPicture_NEW---------");
+ boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a);
+ //log.debug("-----------杩欓噷寮�濮嬪浘鐗囧瓨鍏ュ唴瀛�----------" + is);
+ if (is) {
+ // log.debug("hksdk(鎶撳浘)-缁撴灉鐘舵�佸��(0琛ㄧず鎴愬姛):" + hCNetSDK.NET_DVR_GetLastError());
+ byte[] array = jpegBuffer.array();
+ //瀛樺偍鍒癿inio
+
+ String ContentType = "image/JPEG";
+ InputStream input = new ByteArrayInputStream(array);
+ String url = "";
+ try {
+ boolean b = MinioUtil.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, input.available(), ContentType);
+ if (b) {
+ url = MinioUtil.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName());
+ // log.debug("涓婁紶鏂囦欢鎴愬姛!" + url);
+ }
+ } catch (Exception ex) {
+ log.error("涓婁紶鏂囦欢寮傚父锛�" + ex.getMessage());
+ }
+ return url;
+ } else {
+ int code = hCNetSDK.NET_DVR_GetLastError();
+ log.debug("鎶撳浘澶辫触,璇风◢鍚庨噸璇�" + code);
+ return "";
+ }
+ }
+
+ /**
+ * 鑾峰彇闃插尯鍚嶇О
+ * 閫氶亾鍙�==闃插尯鍙� 浠�0寮�濮�
+ * 鍒樿嫃涔�
+ * 2023/7/6 10:48
+ */
+ public static String getDefenseZoneName(CameraCmd cmd) {
+ String name = "";
+ try {
+ String cameraId = cmd.getCameraId();
+ Integer channelNum = cmd.getWZoneIndex();//閫氶亾鍙�==闃插尯鍙�
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+ return name;
+ }
+ Integer userId = GlobalVariable.loginMap.get(cameraId);
+
+ HCNetSDK.NET_DVR_ALARMIN_PARAM netDvrAlarminParam = new HCNetSDK.NET_DVR_ALARMIN_PARAM();
+ Pointer point = netDvrAlarminParam.getPointer();
+ IntByReference ibrBytesReturned = new IntByReference();
+ netDvrAlarminParam.write();
+ boolean b = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM, channelNum, point, netDvrAlarminParam.size(), ibrBytesReturned);
+ if (b) {
+ netDvrAlarminParam.read();
+ name = ByteUtils.bytesToStringZh(netDvrAlarminParam.byName);
+ } else {
+ int error = hCNetSDK.NET_DVR_GetLastError();
+ log.info("鑾峰彇闃插尯鍚嶇О澶辫触:" + error);
+ }
+ } catch (Exception ex) {
+ log.error("鑾峰彇闃插尯鍚嶇О寮傚父:" + ex.getMessage());
+ }
+ return name;
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3