From d873828ae4b9d4fc6ad510513c6c3f0c33118fd8 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Tue, 30 Dec 2025 11:32:06 +0800
Subject: [PATCH] 优化
---
ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java | 60 ++++++++++++++++++------------------------------------------
1 files changed, 18 insertions(+), 42 deletions(-)
diff --git a/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java b/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
index cca43e9..728245a 100644
--- a/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
+++ b/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
@@ -1,17 +1,15 @@
package com.ard.device.component.sdk.hik.service.impl;
-import com.ard.common.core.domain.AjaxResult;
import com.ard.common.utils.StringUtils;
import com.ard.device.camera.domain.ArdCamera;
-import com.ard.device.camera.service.IArdCameraService;
import com.ard.device.channel.domain.ArdChannel;
import com.ard.device.camera.domain.CameraCmd;
import com.ard.device.channel.domain.VideoCompressionCfg;
-import com.ard.device.channel.service.IArdChannelService;
import com.ard.device.component.sdk.common.GlobalVariable;
import com.ard.device.component.sdk.common.ResolutionEnum;
import com.ard.device.component.sdk.common.SdkErrorCodeEnum;
import com.ard.device.component.sdk.common.osSelect;
+import com.ard.device.component.sdk.dh.lib.NetSDKLib;
import com.ard.device.component.sdk.event.LoginEvent;
import com.ard.device.component.sdk.hik.lib.ExceptionCallBack;
import com.ard.device.component.sdk.hik.lib.HCNetSDK;
@@ -76,7 +74,7 @@
* 登录
*/
@Override
- public AjaxResult login(ArdCamera camera) {
+ public void login(ArdCamera camera) {
try {
String m_sDeviceIP = camera.getIp();
String m_sUsername = camera.getUsername();
@@ -109,17 +107,15 @@
eventPublisher.publishEvent(loginEvent);
log.warn("设备[{}:{}]登录失败: {}({})", camera.getIp(), camera.getPort(),
SdkErrorCodeEnum.getDescByCode(errorCode), errorCode);
- return AjaxResult.warn("设备[" + camera.getIp() + ":" + camera.getPort() + "]登录失败: " + SdkErrorCodeEnum.getDescByCode(errorCode) + "(" + errorCode + ")");
+ return;
}
log.info("Login Success 【 {}:{} 】", camera.getIp(), camera.getPort());
-
- GlobalVariable.loginMap.put(camera.getId(), loginId);
GlobalVariable.hikLoginMap.put(loginId, camera);
camera.setLoginId((long) loginId);
camera.setState("1");
int chanNum = m_strDeviceInfo.struDeviceV30.byChanNum;
int startChan = m_strDeviceInfo.struDeviceV30.byStartDChan + 1;
- if (camera.getType().equals("2")) {
+ if ("2".equals(camera.getType())) {
chanNum = m_strDeviceInfo.struDeviceV30.byIPChanNum;
startChan = m_strDeviceInfo.struDeviceV30.byStartDChan;
}
@@ -132,10 +128,8 @@
}
LoginEvent loginEvent = new LoginEvent(camera);
eventPublisher.publishEvent(loginEvent);
- return AjaxResult.success("设备登录成功");
} catch (Exception ex) {
log.error("注册设备异常", ex);
- return AjaxResult.error("注册设备异常" + ex.getMessage());
}
}
@@ -143,27 +137,15 @@
* 注销
*/
@Override
- public boolean logout(String cameraId) {
- if (!GlobalVariable.loginMap.containsKey(cameraId)) {
- return false;
- }
- Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
- boolean b = hCNetSDK.NET_DVR_Logout(userId);
- if (b) {
- GlobalVariable.loginMap.remove(cameraId);
- }
- return b;
+ public void logout(ArdCamera ardCamera) {
+
+ hCNetSDK.NET_DVR_Logout(ardCamera.getLoginId().intValue());
}
@Override
- public boolean isOnLine(CameraCmd cmd) {
+ public boolean isOnLine(ArdCamera ardCamera) {
try {
- String cameraId = cmd.getCameraId();
- if (!GlobalVariable.loginMap.containsKey(cameraId)) {
- return false;
- }
- Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
- return hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_CHECK_USER_STATUS, null, 0);
+ return hCNetSDK.NET_DVR_RemoteControl(ardCamera.getLoginId().intValue(), NET_DVR_CHECK_USER_STATUS, null, 0);
} catch (Exception ex) {
log.error("检测在线异常:{}", ex.getMessage());
return false;
@@ -175,19 +157,13 @@
*
*/
@Override
- public VideoCompressionCfg getVideoCompressionCfg(CameraCmd cmd) {
- String cameraId = cmd.getCameraId();
- Integer chanNo = cmd.getChanNo();
- if (!GlobalVariable.loginMap.containsKey(cameraId)) {
- return null;
- }
- Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
-
+ public VideoCompressionCfg getVideoCompressionCfg(ArdCamera ardCamera) {
+ Integer chanNo = ardCamera.getChanNo();
+ int userId = ardCamera.getLoginId().intValue();
HCNetSDK.NET_DVR_COMPRESSIONCFG_V30 compressionCfg = new HCNetSDK.NET_DVR_COMPRESSIONCFG_V30();
compressionCfg.write();
Pointer point = compressionCfg.getPointer();
IntByReference ibrBytesReturned = new IntByReference(0);
-
boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_COMPRESSCFG_V30, chanNo, point,
compressionCfg.size(), ibrBytesReturned);
if (bool) {
@@ -314,7 +290,7 @@
}
//分辨率
String resolution =
- ResolutionEnum.fromCode(compressionCfg.struNormHighRecordPara.byResolution).getResolution();
+ Objects.requireNonNull(ResolutionEnum.fromCode(compressionCfg.struNormHighRecordPara.byResolution)).getResolution();
//帧率
String nFrameRate;
switch (compressionCfg.struNormHighRecordPara.dwVideoFrameRate) {
@@ -401,6 +377,7 @@
/**
* 获取通道
*/
+ @Override
public List<ArdChannel> getChannels(ArdCamera camera) {
//获取通道
List<ArdChannel> channelList = new ArrayList<>();
@@ -437,13 +414,13 @@
channel.setName(channelName);
channel.setChanNo(chanNo);
//获取视频编码
- CameraCmd cameraCmd = new CameraCmd(camera.getId(), chanNo);
- VideoCompressionCfg videoCompressionCfg = getVideoCompressionCfg(cameraCmd);
+ camera.setChanNo(chanNo);
+ VideoCompressionCfg videoCompressionCfg = getVideoCompressionCfg(camera);
if (StringUtils.isNotNull(videoCompressionCfg)) {
channel.setVideoCode(videoCompressionCfg.getVideoEncType());
}
//NVR过滤离线通道
- if (camera.getType().equals("3") || camera.getType().equals("2")) {
+ if ("3".equals(camera.getType()) || "2".equals(camera.getType())) {
if (ipParaCfg.struStreamMode[iChanNo].uGetStream.struChanInfo.byEnable != 1) {
continue;
}
@@ -488,12 +465,11 @@
return false;
}
- System.out.println("✅ 尝试加载动态库: " + strDllPath);
+ System.out.println("⏳ 正在加载 HCNetSDK: " + strDllPath);
hCNetSDK = Native.loadLibrary(strDllPath, HCNetSDK.class);
System.out.println("✅ SDK 加载成功!");
} catch (Exception ex) {
System.err.println("❌ SDK 加载失败: " + strDllPath + "\n异常信息: " + ex.getMessage());
- ex.printStackTrace();
return false;
}
}
--
Gitblit v1.9.3