liusuyi
2025-12-30 d873828ae4b9d4fc6ad510513c6c3f0c33118fd8
ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
@@ -9,6 +9,7 @@
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;
@@ -109,8 +110,6 @@
                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");
@@ -138,26 +137,15 @@
     * 注销
     */
    @Override
    public void logout(String cameraId) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return;
        }
        Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
        boolean b = hCNetSDK.NET_DVR_Logout(userId);
        if (b) {
            GlobalVariable.loginMap.remove(cameraId);
        }
    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;
@@ -169,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) {
@@ -432,8 +414,8 @@
                    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());
                    }