zhangnaisong
2024-05-31 9091740e4964c6065c6549cd1599624d0fb24cbd
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -22,12 +22,10 @@
import com.ruoyi.utils.gis.Point;
import com.ruoyi.utils.sdk.common.GlobalVariable;
import com.ruoyi.utils.tools.ArdTool;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
@@ -59,37 +57,45 @@
     */
    @Override
    public void run(ApplicationArguments args) {
        try {
            // 从ardCamerasService中获取ArdCameras列表
            List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
            for (ArdCameras camera : ardCameras) {
                login(camera);
                asyncLogin(camera);
            }
        } catch (Exception ex) {
            // 初始化登录相机异常,记录错误日志
            log.error("初始化登录相机异常:" + ex.getMessage());
        }
    }
    //登录
    //同步登录
    @Override
    public Boolean login(ArdCameras ardCamera) {
        boolean result = false;
    public AjaxResult login(ArdCameras ardCamera) {
        try {
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                //sdkStrategy.login(ardCamera);//同步登录
                cameraSDK.asyncLogin(ardCamera);//异步登录
                result = true;
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.login(ardCamera);//同步登录
        } catch (Exception ex) {
            log.error("登录异常:" + ex.getMessage());
            return false;
            return AjaxResult.error("登录异常:" + ex.getMessage());
        }
        return result;
    }
    @Override
    public AjaxResult asyncLogin(ArdCameras ardCamera) {
        try {
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.asyncLogin(ardCamera);//异步登录
        } catch (Exception ex) {
            log.error("登录异常:" + ex.getMessage());
            return AjaxResult.error("登录异常:" + ex.getMessage());
        }
    }
    //注销
@@ -134,13 +140,12 @@
    public AjaxResult pTZControl(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
        if (ardCamera != null) {
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.pTZControl(cmd);
        } else {
            return AjaxResult.error("摄像头不存在");
        if (ardCamera == null) {
            AjaxResult.warn("设备不存在");
        }
        String factory = ardCamera.getFactory();
        CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
        return cameraSDK.pTZControl(cmd);
    }
    //设置聚焦值
@@ -149,13 +154,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.setFocusPos(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.setFocusPos(cmd);
        } catch (Exception ex) {
            log.error("设置聚焦值异常:" + ex.getMessage());
            return AjaxResult.error("设置聚焦值异常:" + ex.getMessage());
@@ -168,13 +172,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.getFocusPos(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.getFocusPos(cmd);
        } catch (Exception ex) {
            log.error("获取聚焦值异常:" + ex.getMessage());
            return AjaxResult.error("获取聚焦值异常:" + ex.getMessage());
@@ -187,13 +190,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.setPreset(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.setPreset(cmd);
        } catch (Exception ex) {
            log.error("设置预置位异常:" + ex.getMessage());
            return AjaxResult.error("设置预置位异常" + ex.getMessage());
@@ -206,13 +208,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.gotoPreset(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.gotoPreset(cmd);
        } catch (Exception ex) {
            log.error("调用预置位异常:" + ex.getMessage());
            return AjaxResult.error("调用预置位异常" + ex.getMessage());
@@ -226,11 +227,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                map = cameraSDK.getVideoCompressionCfg(cmd);
            if (ardCamera == null) {
                return new HashMap<>();
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            map = cameraSDK.getVideoCompressionCfg(cmd);
        } catch (Exception ex) {
            log.error("获取码流压缩参数异常:" + ex.getMessage());
        }
@@ -243,13 +245,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.controlDefogcfg(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.controlDefogcfg(cmd);
        } catch (Exception ex) {
            log.error("操控透雾异常:" + ex.getMessage());
            return AjaxResult.error("操控透雾异常" + ex.getMessage());
@@ -262,13 +263,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.controlInfrarecfg(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.controlInfrarecfg(cmd);
        } catch (Exception ex) {
            log.error("操控红外异常:" + ex.getMessage());
            return AjaxResult.error("操控红外异常:" + ex.getMessage());
@@ -281,13 +281,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.controlFocusMode(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.controlFocusMode(cmd);
        } catch (Exception ex) {
            log.error("操控聚焦模式异常:" + ex.getMessage());
            return AjaxResult.error("操控聚焦模式异常:" + ex.getMessage());
@@ -300,13 +299,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.getFocusMode(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.getFocusMode(cmd);
        } catch (Exception ex) {
            log.error("获取聚焦模式异常:" + ex.getMessage());
            return AjaxResult.error("获取聚焦模式异常:" + ex.getMessage());
@@ -316,38 +314,33 @@
    //云台加热
    @Override
    public AjaxResult controlPTHeateRpwron(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.controlPTHeateRpwron(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.controlPTHeateRpwron(cmd);
        } catch (Exception ex) {
            log.error("操控云台加热异常:" + ex.getMessage());
            return AjaxResult.error("操控云台加热异常:" + ex.getMessage());
        }
    }
    //镜头加热
    @Override
    public AjaxResult controlCameraDeicing(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.controlCameraDeicing(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.controlCameraDeicing(cmd);
        } catch (Exception ex) {
            log.error("操控云台加热异常:" + ex.getMessage());
            return AjaxResult.error("操控云台加热异常:" + ex.getMessage());
@@ -360,22 +353,34 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.getPTZLockInfo(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.getPTZLockInfo(cmd);
        } catch (Exception ex) {
            log.error("获取云台锁定信息异常:" + ex.getMessage());
            return AjaxResult.error("获取云台锁定信息异常:" + ex.getMessage());
        }
    }
    //本地抓图
    @Override
    public String captureJPEGPicture(CameraCmd cmd) {
        return null;
    public AjaxResult localCapture(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.localCapture(cmd);
        } catch (Exception ex) {
            log.error("手动抓图异常:" + ex.getMessage());
            return AjaxResult.error("手动抓图异常:" + ex.getMessage());
        }
    }
    //抓图
@@ -406,17 +411,16 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                String gdtype = ardCamera.getGdtype();
                if (gdtype.equals("1")) {
                    return cameraSDK.getPtzHigh(cmd);
                } else {
                    return cameraSDK.getPtz(cmd);
                }
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            String gdtype = ardCamera.getGdtype();
            if (gdtype.equals("1")) {
                return cameraSDK.getPtzHigh(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
                return cameraSDK.getPtz(cmd);
            }
        } catch (Exception ex) {
            log.error("获取ptz异常:" + ex.getMessage());
@@ -430,13 +434,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.getPtzScope(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.getPtzScope(cmd);
        } catch (Exception ex) {
            log.error("获取ptz范围异常:" + ex.getMessage());
            return AjaxResult.error("获取ptz范围异常:" + ex.getMessage());
@@ -450,7 +453,7 @@
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera == null) {
                return AjaxResult.error("摄像头不存在");
                return AjaxResult.warn("设备不存在");
            }
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(ardCamera.getFactory());
            String gdtype = ardCamera.getGdtype();
@@ -460,10 +463,9 @@
            } else {
                return cameraSDK.setPtz(cmd);
            }
        } catch (Exception ex) {
            log.error("设置ptz异常:" + ex.getMessage());
           return AjaxResult.error("设置ptz异常:" + ex.getMessage());
            return AjaxResult.error("设置ptz异常:" + ex.getMessage());
        }
    }
@@ -473,13 +475,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.setZeroPtz(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.setZeroPtz(cmd);
        } catch (Exception ex) {
            log.error("设置零方位角异常:" + ex.getMessage());
            return AjaxResult.error("设置零方位角异常:" + ex.getMessage());
@@ -492,13 +493,12 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.guideTargetPosition(cmd);
            } else {
                return AjaxResult.error("摄像头不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.guideTargetPosition(cmd);
        } catch (Exception ex) {
            log.error("引导指向目标异常:" + ex.getMessage());
            return AjaxResult.error("引导指向目标异常:" + ex.getMessage());
@@ -516,7 +516,7 @@
        //获取井
        ArdAlarmpointsWell well = ardAlarmpointsWellService.selectArdAlarmpointsWellById(cmd.getWellId());
        if (well == null) {
            return AjaxResult.error("井不存在");
            return AjaxResult.warn("井不存在");
        }
        GuidePoint guidePoint = new GuidePoint().setLongitude(well.getLongitude()).setLatitude(well.getLatitude());
        cmd.setTargetPosition(new double[]{guidePoint.getLongitude(), guidePoint.getLatitude()});
@@ -579,15 +579,15 @@
        String cameraId = getCameraByNear(new double[]{well.getLongitude(), well.getLatitude()});
        cmd.setCameraId(cameraId);
        if ("".equals(cameraId)) {
            return AjaxResult.error("未找到引导相机");
            return AjaxResult.warn("未找到引导相机");
        }
        //判断禁引区
        if (isInPolygon(cameraId, new Double[]{well.getLongitude(), well.getLatitude()})) {
            return AjaxResult.error("井位置属于相机禁止引导区域");
            return AjaxResult.warn("井位置属于相机禁止引导区域");
        }
        //按井坐标开始引导
        if (!guideTargetPosition(cmd).get("code").equals(200)) {
            return AjaxResult.error("井坐标引导失败", "cameraId:" + cameraId);
            return AjaxResult.warn("井坐标引导失败", "cameraId:" + cameraId);
        }
        return AjaxResult.success("井坐标引导成功", "cameraId:" + cameraId);
@@ -689,9 +689,8 @@
    public AjaxResult controlLock(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();//申请锁的相机
        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
        if(ardCameras==null)
        {
            return AjaxResult.error("设备未登录");
        if (ardCameras == null) {
            return AjaxResult.warn("设备不存在");
        }
        Date now = new Date();
        now.setTime(now.getTime() + cmd.getExpired() * 1000);
@@ -713,9 +712,8 @@
        String cameraId = cmd.getCameraId();//申请解锁的相机
        String operator = cmd.getOperator();//申请者
        ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId);
        if(ardCameras==null)
        {
            return AjaxResult.error("设备未登录");
        if (ardCameras == null) {
            return AjaxResult.warn("设备不存在");
        }
        if (ardCameras.getOperatorId().equals(operator)) {
            //如果解锁相机的当前用户是申请者,则清空该相机的过期时间
@@ -808,16 +806,51 @@
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera != null) {
                String factory = ardCamera.getFactory();
                CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
                return cameraSDK.getGisInfo(cmd);
            } else {
                return AjaxResult.error("相机不存在");
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.getGisInfo(cmd);
        } catch (Exception ex) {
            log.error("获取相机架设参数异常:" + ex.getMessage());
            return AjaxResult.error("获取相机架设参数异常:" + ex.getMessage());
        }
    }
    //本地录像开始
    @Override
    public AjaxResult localRecordStart(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.localRecordStart(cmd);
        } catch (Exception ex) {
            log.error("本地录像开始异常:" + ex.getMessage());
            return AjaxResult.error("本地录像开始异常:" + ex.getMessage());
        }
    }
    //本地录像停止
    @Override
    public AjaxResult localRecordStop(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            ArdCameras ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
            if (ardCamera == null) {
                return AjaxResult.warn("设备不存在");
            }
            String factory = ardCamera.getFactory();
            CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(factory);
            return cameraSDK.localRecordStop(cmd);
        } catch (Exception ex) {
            log.error("本地录像停止异常:" + ex.getMessage());
            return AjaxResult.error("本地录像停止异常:" + ex.getMessage());
        }
    }
}