| | |
| | | import com.ruoyi.constant.sdkPriority; |
| | | import com.ruoyi.device.camera.domain.CameraCmd; |
| | | import com.ruoyi.device.camera.mapper.ArdCamerasMapper; |
| | | import com.ruoyi.device.hiksdk.common.global.globalVariable; |
| | | import com.ruoyi.device.hiksdk.common.GlobalVariable; |
| | | import com.ruoyi.device.camera.domain.ArdCameras; |
| | | import com.ruoyi.device.hiksdk.config.MinioClientSingleton; |
| | | import com.ruoyi.device.hiksdk.domain.recordInfo; |
| | | import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil; |
| | | import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK; |
| | |
| | | SysUserMapper sysUserMapper; |
| | | |
| | | private static HCNetSDK hCNetSDK; |
| | | private static Map<Integer, recordInfo> user_real_Map = new HashMap<>(); |
| | | |
| | | @Override |
| | | public void loadHCNetSDKLib() { |
| | |
| | | hCNetSDK.NET_DVR_Cleanup(); |
| | | camera.setLoginId(-1); |
| | | } |
| | | if (globalVariable.loginMap.containsKey(camera.getId())) { |
| | | globalVariable.loginMap.remove(camera.getId()); |
| | | if (GlobalVariable.loginMap.containsKey(camera.getId())) { |
| | | GlobalVariable.loginMap.remove(camera.getId()); |
| | | } |
| | | globalVariable.loginMap.put(camera.getId(), lUserID); |
| | | GlobalVariable.loginMap.put(camera.getId(), lUserID); |
| | | |
| | | camera.setLoginId(lUserID); |
| | | camera.setChannel((int) m_strDeviceInfo.byStartChan); |
| | |
| | | */ |
| | | @Override |
| | | public boolean loginOut(String cameraId) { |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | boolean b = hCNetSDK.NET_DVR_Logout(userId); |
| | | if (b) { |
| | | globalVariable.loginMap.remove(cameraId); |
| | | GlobalVariable.loginMap.remove(cameraId); |
| | | } |
| | | return b; |
| | | } |
| | |
| | | @Override |
| | | public boolean isOnLine(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | boolean isOnLine = hCNetSDK.NET_DVR_RemoteControl(userId, HCNetSDK.NET_DVR_CHECK_USER_STATUS, null, 0); |
| | | return isOnLine; |
| | | } |
| | |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | Integer speed = cmd.getSpeed(); |
| | | Integer code = cmd.getCode(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | Integer dwStop; |
| | | if (enable) { |
| | | dwStop = 0;//开启 |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | Integer dwFocusPos = cmd.getDwFocusPos(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | |
| | | NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG(); |
| | | Pointer point = focusmodeCfg.getPointer(); |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return new HashMap<>(); |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | |
| | | NET_DVR_FOCUSMODE_CFG focusmodeCfg = new NET_DVR_FOCUSMODE_CFG(); |
| | | Pointer point = focusmodeCfg.getPointer(); |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | Integer PresetIndex = cmd.getPresetIndex(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex); |
| | | if (!bool) { |
| | | int code = hCNetSDK.NET_DVR_GetLastError(); |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | Integer PresetIndex = cmd.getPresetIndex(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex); |
| | | if (!bool) { |
| | | int code = hCNetSDK.NET_DVR_GetLastError(); |
| | |
| | | public String getVideoResolution(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return " "; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | |
| | | String ResResolution = ""; |
| | | NET_DVR_COMPRESSIONCFG_V30 resolution = new NET_DVR_COMPRESSIONCFG_V30(); |
| | |
| | | public Map<String, Object> getPtz(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return null; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | |
| | | NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); |
| | | Pointer pioint = m_ptzPosCurrent.getPointer(); |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | Map<String, Double> ptz = cmd.getPtzMap(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); |
| | | m_ptzPosCurrent.wAction = 1; |
| | | try { |
| | |
| | | public boolean setTargetPosition(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); |
| | | m_ptzPosCurrent.wAction = 1; |
| | | try { |
| | |
| | | public int getPTZLockInfo(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return -1; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG(); |
| | | Pointer point = netDvrPtzLockcfg.getPointer(); |
| | | IntByReference ibrBytesReturned = new IntByReference(0); |
| | |
| | | public boolean setZeroPtz(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL(); |
| | | |
| | | initialpositionctrl.dwSize = initialpositionctrl.size(); |
| | |
| | | public Map<String, Object> getPtzScope(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return new HashMap<>(); |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE(); |
| | | Pointer point = m_ptzPosCurrent.getPointer(); |
| | | IntByReference ibrBytesReturned = new IntByReference(0); |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | boolean enable = cmd.isEnable(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX(); |
| | | Pointer point = struCameraParam.getPointer(); |
| | | IntByReference ibrBytesReturned = new IntByReference(0); |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | boolean enable = cmd.isEnable(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX(); |
| | | Pointer point = struDayNigh.getPointer(); |
| | | IntByReference ibrBytesReturned = new IntByReference(0); |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | boolean enable = cmd.isEnable(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); |
| | | Pointer point = struFocusMode.getPointer(); |
| | | IntByReference ibrBytesReturned = new IntByReference(0); |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | boolean enable = cmd.isEnable(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | Integer dwStop; |
| | | if (enable) { |
| | | dwStop = 0;//开启 |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | boolean enable = cmd.isEnable(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return false; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG(); |
| | | Pointer point = struDeicing.getPointer(); |
| | | IntByReference ibrBytesReturned = new IntByReference(0); |
| | |
| | | public String captureJPEGPicture(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return ""; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30(); |
| | | if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) { |
| | | // 返回Boolean值,判断是否获取设备能力 |
| | |
| | | public String picCutCate(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return ""; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | //图片信息 |
| | | NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA(); |
| | | //设置图片分辨率 |
| | |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | boolean enable = cmd.isEnable(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return ""; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | String path = ""; |
| | | //预览参数 |
| | | NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO(); |
| | |
| | | previewinfo.write(); |
| | | int lRealHandle; |
| | | if (enable) { |
| | | if (!user_real_Map.containsKey(userId)) { |
| | | if (!GlobalVariable.user_real_Map.containsKey(userId)) { |
| | | lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null); |
| | | if (lRealHandle == -1) { |
| | | int iErr = hCNetSDK.NET_DVR_GetLastError(); |
| | |
| | | recordInfo info = new recordInfo(); |
| | | info.setLRealHandle(lRealHandle); |
| | | info.setRecordPath(path); |
| | | user_real_Map.put(userId, info); |
| | | GlobalVariable.user_real_Map.put(userId, info); |
| | | } |
| | | recordInfo info = user_real_Map.get(userId); |
| | | recordInfo info = GlobalVariable.user_real_Map.get(userId); |
| | | if (!hCNetSDK.NET_DVR_SaveRealData_V30(info.getLRealHandle(), 1, info.getRecordPath())) { |
| | | log.error("保存视频文件到临时文件夹失败 错误码为: " + hCNetSDK.NET_DVR_GetLastError()); |
| | | return "保存视频文件到临时文件夹失败 错误码为:" + hCNetSDK.NET_DVR_GetLastError(); |
| | |
| | | //return info.getRecordPath(); |
| | | return ""; |
| | | } else { |
| | | recordInfo info = user_real_Map.get(userId); |
| | | recordInfo info = GlobalVariable.user_real_Map.get(userId); |
| | | if (StringUtils.isNull(info)) { |
| | | return ""; |
| | | } |
| | |
| | | } catch (IOException ex) { |
| | | log.error("上传文件异常:" + ex.getMessage()); |
| | | } |
| | | user_real_Map.remove(userId); |
| | | GlobalVariable.user_real_Map.remove(userId); |
| | | return url; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @SdkOperate |
| | | public void recordToMinio(CameraCmd cmd) { |
| | | try { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer channelNum = cmd.getChannelNum(); |
| | | boolean enable = cmd.isEnable(); |
| | | if (!globalVariable.loginMap.containsKey(cameraId)) { |
| | | if (!GlobalVariable.loginMap.containsKey(cameraId)) { |
| | | return; |
| | | } |
| | | Integer userId = globalVariable.loginMap.get(cameraId); |
| | | Integer userId = GlobalVariable.loginMap.get(cameraId); |
| | | String path = ""; |
| | | //强制I帧结构体对象 |
| | | HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //新建结构体对象 |
| | | netDvrIFrame.read(); |
| | | netDvrIFrame.dwChannel = channelNum; //因为上文代码中设置了通道号,按照上文中的设置 |
| | | netDvrIFrame.byStreamType = 0; |
| | | netDvrIFrame.dwSize = netDvrIFrame.size(); |
| | | netDvrIFrame.write(); |
| | | |
| | | if(!hCNetSDK.NET_DVR_RemoteControl(userId,3402,netDvrIFrame.getPointer(),netDvrIFrame.dwSize)){ |
| | | log.error("强制I帧 错误码为: " + hCNetSDK.NET_DVR_GetLastError()); |
| | | } |
| | | //预览参数 |
| | | NET_DVR_PREVIEWINFO previewinfo = new NET_DVR_PREVIEWINFO(); |
| | | previewinfo.read(); |
| | |
| | | previewinfo.write(); |
| | | int lRealHandle; |
| | | if (enable) { |
| | | if (!user_real_Map.containsKey(userId)) { |
| | | if (!GlobalVariable.user_real_Map.containsKey(userId)) { |
| | | lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(userId, previewinfo, null, null); |
| | | if (lRealHandle == -1) { |
| | | int iErr = hCNetSDK.NET_DVR_GetLastError(); |
| | | log.error("取流失败" + iErr); |
| | | log.error("取流失败" + hCNetSDK.NET_DVR_GetLastError()); |
| | | return; |
| | | } |
| | | log.info("取流成功"); |
| | |
| | | recordInfo info = new recordInfo(); |
| | | info.setLRealHandle(lRealHandle); |
| | | info.setRecordPath(path); |
| | | user_real_Map.put(userId, info); |
| | | GlobalVariable.user_real_Map.put(userId, info); |
| | | } |
| | | recordInfo info = user_real_Map.get(userId); |
| | | if (!hCNetSDK.NET_DVR_SaveRealData_V30(info.getLRealHandle(), 1, info.getRecordPath())) { |
| | | recordInfo info = GlobalVariable.user_real_Map.get(userId); |
| | | if (!hCNetSDK.NET_DVR_SaveRealData_V30(info.getLRealHandle(), 2, info.getRecordPath())) { |
| | | log.error("保存视频文件到临时文件夹失败 错误码为: " + hCNetSDK.NET_DVR_GetLastError()); |
| | | return; |
| | | } |
| | | log.info("录像开始"); |
| | | } else { |
| | | recordInfo info = user_real_Map.get(userId); |
| | | recordInfo info = GlobalVariable.user_real_Map.get(userId); |
| | | if (StringUtils.isNull(info)) { |
| | | return; |
| | | } |
| | | hCNetSDK.NET_DVR_StopRealPlay(info.getLRealHandle()); |
| | | log.info("录像停止"); |
| | | //存入minio |
| | | String BucketName = cmd.getRecordBucketName(); |
| | | String ObjectName = cmd.getRecordObjectName(); |
| | | String ContentType = "video/MP4"; |
| | | FileInputStream stream = new FileInputStream(info.getRecordPath()); |
| | | String url = ""; |
| | | boolean b = MinioUtils.uploadObject(BucketName, ObjectName, stream, stream.available(), ContentType); |
| | | if (b) { |
| | | url = BucketName + ObjectName; |
| | | log.info("上传文件成功!" + url); |
| | | user_real_Map.remove(userId); |
| | | if(cmd.isUploadMinio()) { |
| | | //存入minio |
| | | String BucketName = cmd.getRecordBucketName(); |
| | | String ObjectName = cmd.getRecordObjectName(); |
| | | String ContentType = "video/MP4"; |
| | | FileInputStream stream = new FileInputStream(info.getRecordPath()); |
| | | boolean b = MinioUtils.uploadObject(BucketName, ObjectName, stream, stream.available(), ContentType); |
| | | if (b) { |
| | | log.info("上传文件成功!" + MinioClientSingleton.domainUrl + "/" + BucketName + "/" + ObjectName); |
| | | GlobalVariable.user_real_Map.remove(userId); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception ex) { |