aijinhui
2023-10-17 49207386ea4a3d663628347eef443af9c7cc7f39
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java
@@ -61,7 +61,7 @@
    private static HCNetSDK hCNetSDK;
    @Override
    public void loadHCNetSDKLib() {
    public boolean init() {
        try {
            log.debug("开始加载sdk库文件路径");
            if (Platform.isWindows()) {
@@ -96,8 +96,10 @@
                ptrByteArraySsl.write();
                hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer());
            }
            return true;
        } catch (Exception ex) {
            log.error("加载库文件异常:" + ex.getMessage());
            return false;
        }
    }
@@ -794,7 +796,7 @@
        String cameraId = cmd.getCameraId();
        Integer channelNum = cmd.getChanNo();
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return null;
            return new HashMap<>();
        }
        Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
@@ -852,9 +854,9 @@
        NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS();
        m_ptzPosCurrent.wAction = 1;
        try {
            String p = String.valueOf(ptz.get("p") * 10);
            String t = String.valueOf(ptz.get("t") * 10);
            String z = String.valueOf(ptz.get("z") * 10);
            String p = String.valueOf((int)(ptz.get("p") * 10));
            String t = String.valueOf((int)(ptz.get("t") * 10));
            String z = String.valueOf((int)(ptz.get("z") * 10));
            m_ptzPosCurrent.wPanPos = (short) (Integer.parseInt(p, 16));
            m_ptzPosCurrent.wTiltPos = (short) (Integer.parseInt(t, 16));
            m_ptzPosCurrent.wZoomPos = (short) (Integer.parseInt(z, 16));
@@ -1468,6 +1470,15 @@
                    GlobalVariable.previewMap.remove(cameraId);
                }
                log.debug("录像停止");
                //存入minio
                String BucketName = "record";
                String ObjectName =IdUtils.simpleUUID() + ".mp4";
                FileInputStream stream = new FileInputStream(path);
                boolean b = MinioUtil.uploadObject(BucketName, ObjectName, stream, stream.available(), "video/MP4");
                if (b) {
                    url = MinioUtil.getBucketObjectUrl(BucketName, ObjectName);
                    log.debug("上传文件成功!" + url);
                }
            }
            return url;
        } catch (Exception ex) {
@@ -1477,13 +1488,13 @@
    }
    @Override
    public void recordStart(CameraCmd cmd) {
    public boolean recordStart(CameraCmd cmd) {
        try {
            String cameraId = cmd.getCameraId();
            Integer channelNum = cmd.getChanNo();
            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                return;
                return false;
            }
            Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId);
            //强制I帧结构体对象
@@ -1515,18 +1526,20 @@
            int lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null);
            if (lRealHandle == -1) {
                log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError());
                return;
                return false;
            }
            log.debug("取流成功");
            GlobalVariable.threadMap.put(cameraId, Thread.currentThread().getName());
            GlobalVariable.previewMap.put(cameraId, lRealHandle);
            if (!hCNetSDK.NET_DVR_SaveRealData_V30(GlobalVariable.previewMap.get(cameraId), 2, path)) {
                log.error("保存视频文件到临时文件夹失败 错误码为:  " + hCNetSDK.NET_DVR_GetLastError());
                return;
                return false;
            }
            log.debug("录像开始");
            return true;
        } catch (Exception ex) {
            log.error("开始录像异常" + ex.getMessage());
            return false;
        }
    }