From d353fdce7cb957aa0f5d9d51d0ad4205c96e156c Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期六, 21 十月 2023 11:57:12 +0800 Subject: [PATCH] 1、流媒体升级1.2.0,修改部分forest接口 2、登录设备判断编码自动配置转码 3、增加sdk聚焦模式切换 4、增加sdk视场角获取并定时上传 --- ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 353 ++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 196 insertions(+), 157 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java index 4fb1c27..d094ae1 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java @@ -5,7 +5,6 @@ import com.ruoyi.common.annotation.SdkOperate; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.file.MimeTypeUtils; -import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; @@ -26,7 +25,7 @@ import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.Base64; @@ -61,7 +60,7 @@ private static HCNetSDK hCNetSDK; @Override - public void loadHCNetSDKLib() { + public boolean init() { try { log.debug("寮�濮嬪姞杞絪dk搴撴枃浠惰矾寰�"); if (Platform.isWindows()) { @@ -96,8 +95,10 @@ ptrByteArraySsl.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer()); } + return true; } catch (Exception ex) { log.error("鍔犺浇搴撴枃浠跺紓甯革細" + ex.getMessage()); + return false; } } @@ -110,6 +111,7 @@ * @鍒涘缓鏃堕棿 2023/1/17 16:12 * @淇敼浜哄拰鍏跺畠淇℃伅 */ + @Async public void syncLogin(ArdCameras camera) { // 鍒濆鍖� if (!hCNetSDK.NET_DVR_Init()) { @@ -182,22 +184,23 @@ String name = camera.getId() + "_" + channel.getChanNo(); String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream"; Vtdu vtdu = vtduService.selectVtduByName(name); - if (vtdu == null) { - //娣诲姞鍒版祦濯掍綋 - vtdu = new Vtdu(); - vtdu.setRtspSource(rtspSource); - vtdu.setName(camera.getId() + "_" + channel.getChanNo()); - vtdu.setIsCode("0");//榛樿涓嶈浆鐮� - vtdu.setMode("1");//榛樿CPU杞В鐮� - vtdu.setCameraId(camera.getId()); - vtduService.insertVtdu(vtdu); - } else { - if (!rtspSource.equals(vtdu.getRtspSource())) { - //鏇存柊rtsp鍦板潃 - vtdu.setRtspSource(rtspSource); - vtduService.updateVtdu(vtdu); - } + if (vtdu != null) { + vtduService.deleteVtduByName(name); } + //娣诲姞鍒版祦濯掍綋 + vtdu = new Vtdu(); + vtdu.setRtspSource(rtspSource); + vtdu.setName(camera.getId() + "_" + channel.getChanNo()); + CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo()); + Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); + if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) { + vtdu.setIsCode("0");//榛樿涓嶈浆鐮� + } else { + vtdu.setIsCode("1");//榛樿杞爜 + } + vtdu.setMode("1");//榛樿CPU杞В鐮� + vtdu.setCameraId(camera.getId()); + vtduService.insertVtdu(vtdu); } } //鍒涘缓寮曞闃熷垪 @@ -283,7 +286,7 @@ for (ArdCameras camera : ardCameras) { Thread.sleep(500); //寮傛鐧诲綍 - asyncLogin(camera); + syncLogin(camera); } } catch (Exception ex) { log.error("鍒濆鍖栫櫥褰曠浉鏈哄紓甯革細" + ex.getMessage()); @@ -303,7 +306,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); boolean b = hCNetSDK.NET_DVR_Logout(userId); if (b) { GlobalVariable.loginMap.remove(cameraId); @@ -323,7 +326,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); return hCNetSDK.NET_DVR_RemoteControl(userId, NET_DVR_CHECK_USER_STATUS, null, 0); } catch (Exception ex) { log.error("妫�娴嬪湪绾垮紓甯革細" + ex.getMessage()); @@ -342,7 +345,6 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - @SdkOperate public boolean pTZControlWithSpeed(CameraCmd cmd) { String cameraId = cmd.getCameraId(); boolean enable = cmd.isEnable(); @@ -352,7 +354,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); int dwStop; if (enable) { dwStop = 0;//寮�鍚� @@ -429,7 +431,6 @@ * @param cmd 鐩告満鍛戒护 */ @Override - @SdkOperate public boolean setFocusPos(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); @@ -438,7 +439,7 @@ return false; } // 鑾峰彇鍙傛暟 - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG(); HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO(); struGisInfo.struPtzPosEx.dwFocus = dwFocusPos; @@ -465,14 +466,15 @@ * @param cmd 鐩告満鍛戒护 */ @Override - public Map<String, Object> getFocusPos(CameraCmd cmd) { + public int getFocusPos(CameraCmd cmd) { + int result = 0; String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return new HashMap<>(); + return result; } // 鑾峰彇鍙傛暟 - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG(); HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO(); struStdCfg.read(); @@ -486,13 +488,12 @@ if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); log.error("鑾峰彇GIS淇℃伅鏁版嵁澶辫触,璇风◢鍚庨噸璇�" + code); - return new HashMap<>(); + return result; } else { struGisInfo.read(); - Map<String, Object> map = new HashMap<>(); - map.put("dwFocus", struGisInfo.struPtzPosEx.dwFocus); - return map; + result = struGisInfo.struPtzPosEx.dwFocus; } + return result; } /** @@ -501,7 +502,6 @@ * @param cmd 鐩告満鍛戒护 */ @Override - @SdkOperate public boolean setPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); @@ -509,7 +509,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, SET_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); @@ -524,7 +524,6 @@ * @param cmd 鐩告満鍛戒护 */ @Override - @SdkOperate public boolean gotoPreset(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); @@ -532,7 +531,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); boolean bool = hCNetSDK.NET_DVR_PTZPreset_Other(userId, channelNum, GOTO_PRESET, PresetIndex); if (!bool) { int code = hCNetSDK.NET_DVR_GetLastError(); @@ -550,15 +549,15 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 */ @Override - public Map<String, String> getVideoCompressionCfg(CameraCmd cmd) { + public Map<String, Object> 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); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); - Map<String, String> map = new HashMap<>(); + Map<String, Object> map = new HashMap<>(); NET_DVR_COMPRESSIONCFG_V30 compressioncfg = new NET_DVR_COMPRESSIONCFG_V30(); compressioncfg.write(); Pointer pioint = compressioncfg.getPointer(); @@ -615,85 +614,85 @@ videoBitrate = "淇濈暀"; break; case 1: - videoBitrate = "16K(淇濈暀)"; + videoBitrate = "16(淇濈暀)"; break; case 2: - videoBitrate = "32K"; + videoBitrate = "32"; break; case 3: - videoBitrate = "48k"; + videoBitrate = "48"; break; case 4: - videoBitrate = "64k"; + videoBitrate = "64"; break; case 5: - videoBitrate = "80k"; + videoBitrate = "80"; break; case 6: - videoBitrate = "96k"; + videoBitrate = "96"; break; case 7: - videoBitrate = "128k"; + videoBitrate = "128"; break; case 8: - videoBitrate = "160k"; + videoBitrate = "160"; break; case 9: - videoBitrate = "192k"; + videoBitrate = "192"; break; case 10: - videoBitrate = "224k"; + videoBitrate = "224"; break; case 11: - videoBitrate = "256K"; + videoBitrate = "256"; break; case 12: - videoBitrate = "320K"; + videoBitrate = "320"; break; case 13: - videoBitrate = "384K"; + videoBitrate = "384"; break; case 14: - videoBitrate = "448K"; + videoBitrate = "448"; break; case 15: - videoBitrate = "512K"; + videoBitrate = "512"; break; case 16: - videoBitrate = "640K"; + videoBitrate = "640"; break; case 17: - videoBitrate = "768K"; + videoBitrate = "768"; break; case 18: - videoBitrate = "896K"; + videoBitrate = "896"; break; case 19: - videoBitrate = "1024K"; + videoBitrate = "1024"; break; case 20: - videoBitrate = "1280K"; + videoBitrate = "1280"; break; case 21: - videoBitrate = "1536K"; + videoBitrate = "1536"; break; case 22: - videoBitrate = "1792K"; + videoBitrate = "1792"; break; case 23: videoBitrate = "2048K"; break; case 24: - videoBitrate = "3072K"; + videoBitrate = "3072"; break; case 25: - videoBitrate = "4096K"; + videoBitrate = "4096"; break; case 26: - videoBitrate = "8192K"; + videoBitrate = "8192"; break; case 27: - videoBitrate = "16384K"; + videoBitrate = "16384"; break; default: videoBitrate = "鍏朵粬"; @@ -703,43 +702,43 @@ String resolution = ""; switch (compressioncfg.struNormHighRecordPara.byResolution) { case 0: - resolution = "DCIF(528*384/528*320)"; + resolution = "528*384/528*320"; break; case 1: - resolution = "CIF(352*288/352*240)"; + resolution = "352*288/352*240"; break; case 2: - resolution = "QCIF(176*144/176*120)"; + resolution = "176*144/176*120"; break; case 3: - resolution = "4CIF(704*576/704*480)"; + resolution = "704*576/704*480"; break; case 4: - resolution = "2CIF(704*288/704*240)"; + resolution = "704*288/704*240"; break; case 6: - resolution = "QVGA(320*240)"; + resolution = "320*240"; break; case 7: - resolution = "QQVGA(160*120)"; + resolution = "160*120"; break; case 16: - resolution = "VGA(640*480)"; + resolution = "640*480"; break; case 17: - resolution = "UXGA(1600*1200)"; + resolution = "1600*1200"; break; case 18: - resolution = "SVGA(800*600)"; + resolution = "800*600"; break; case 19: - resolution = "HD720P(1280*720)"; + resolution = "1280*720"; break; case 20: - resolution = "XVGA(1280*960)"; + resolution = "1280*960"; break; case 21: - resolution = "HD900P(1600*900)"; + resolution = "1600*900"; break; case 22: resolution = "1360*1024"; @@ -751,7 +750,7 @@ resolution = "1920*1920"; break; case 27: - resolution = "1920*1080p"; + resolution = "1920*1080"; break; case 28: resolution = "2560*1920"; @@ -766,10 +765,80 @@ resolution = "涓嶅湪褰撳墠鍒嗚鲸鐜囩储寮曪紝璇疯仈绯荤鐞嗗憳娣诲姞"; break; } - map.put("resolution", resolution); - map.put("videoBitrate", videoBitrate); - map.put("videoEncType", videoEncType); - map.put("streamType", streamType); + //甯х巼 + String nFrameRate = ""; + switch (compressioncfg.struNormHighRecordPara.dwVideoFrameRate) { + case 0: + nFrameRate = "0"; + break; + case 1: + nFrameRate = "1/16"; + break; + case 2: + nFrameRate = "1/8"; + break; + case 3: + nFrameRate = "1/4"; + break; + case 4: + nFrameRate = "1/2"; + break; + case 5: + nFrameRate = "1"; + break; + case 6: + nFrameRate = "2"; + break; + case 7: + nFrameRate = "4"; + break; + case 8: + nFrameRate = "6"; + break; + case 9: + nFrameRate = "8"; + break; + case 10: + nFrameRate = "10"; + break; + case 11: + nFrameRate = "12"; + break; + case 12: + nFrameRate = "16"; + break; + case 13: + nFrameRate = "20"; + break; + case 14: + nFrameRate = "15"; + break; + case 15: + nFrameRate = "18"; + break; + case 16: + nFrameRate = "22"; + break; + case 17: + nFrameRate = "25"; + break; + case 18: + nFrameRate = "30"; + break; + case 19: + nFrameRate = "35"; + break; + case 20: + nFrameRate = "40"; + break; + default: + nFrameRate = "鏈煡"; + break; + } + map.put("resolution", resolution);//鍒嗚鲸鐜� + map.put("videoBitrate", videoBitrate);//姣旂壒鐜� + map.put("videoEncType", videoEncType);//缂栫爜 + map.put("nFrameRate", nFrameRate);//甯х巼 } else { int code = hCNetSDK.NET_DVR_GetLastError(); @@ -794,9 +863,9 @@ 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); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); Pointer pioint = m_ptzPosCurrent.getPointer(); @@ -840,7 +909,6 @@ * @淇敼浜哄拰鍏跺畠淇℃伅 娉ㄦ剰淇话瑙掑害璐熷�奸渶瑕佸姞涓�360寰楀埌鐨勬鍊艰繘琛岃缃� */ @Override - @SdkOperate public boolean setPtz(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); @@ -848,13 +916,13 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); 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)); @@ -873,14 +941,13 @@ } @Override - @SdkOperate public boolean guideTargetPosition(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZPOS m_ptzPosCurrent = new NET_DVR_PTZPOS(); m_ptzPosCurrent.wAction = 1; try { @@ -908,49 +975,6 @@ } } - /** - * @鎻忚堪 鎿嶆帶閿佸畾 - * @鍙傛暟 [userId, channelNum] - * @杩斿洖鍊� boolean - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/1/17 16:36 - * @淇敼浜哄拰鍏跺畠淇℃伅 0-瑙i攣 1-閿佸畾 - */ - @Override - @SdkOperate - public boolean controlLock(CameraCmd cmd) { - String cameraId = cmd.getCameraId();//鐢宠閿佺殑鐩告満 - ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId); - Date now = new Date(); - now.setTime(now.getTime() + cmd.getExpired() * 1000); - ardCameras.setOperatorExpired(now);//璁剧疆褰撳墠杩囨湡鏃堕棿 - ardCamerasService.updateArdCameras(ardCameras); - return true; - } - - /** - * @鎻忚堪 鎿嶆帶瑙i攣 - * @鍙傛暟 [userId, channelNum] - * @杩斿洖鍊� boolean - * @鍒涘缓浜� 鍒樿嫃涔� - * @鍒涘缓鏃堕棿 2023/6/30 15:36 - * @淇敼浜哄拰鍏跺畠淇℃伅 - */ - @Override - public boolean controlUnLock(CameraCmd cmd) { - String cameraId = cmd.getCameraId();//鐢宠瑙i攣鐨勭浉鏈� - String operator = cmd.getOperator();//鐢宠鑰� - ArdCameras ardCameras = ardCamerasService.selectArdCamerasById(cameraId); - if (ardCameras.getOperatorId().equals(operator)) { - //濡傛灉瑙i攣鐩告満鐨勫綋鍓嶇敤鎴锋槸鐢宠鑰咃紝鍒欐竻绌鸿鐩告満鐨勮繃鏈熸椂闂� - ardCameras.setOperatorExpired(null); - int i = ardCamerasService.updateArdCameras(ardCameras); - if (i > 0) { - log.debug(cameraId + "--瑙i攣鎴愬姛"); - } - } - return true; - } /** * @鎻忚堪 鑾峰彇ptz閿佸畾淇℃伅 @@ -967,7 +991,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return -1; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZ_LOCKCFG netDvrPtzLockcfg = new NET_DVR_PTZ_LOCKCFG(); Pointer point = netDvrPtzLockcfg.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -999,7 +1023,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_INITIALPOSITIONCTRL initialpositionctrl = new NET_DVR_INITIALPOSITIONCTRL(); initialpositionctrl.dwSize = initialpositionctrl.size(); @@ -1031,7 +1055,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return new HashMap<>(); } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_PTZSCOPE m_ptzPosCurrent = new NET_DVR_PTZSCOPE(); Pointer point = m_ptzPosCurrent.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1080,7 +1104,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_CAMERAPARAMCFG_EX struCameraParam = new NET_DVR_CAMERAPARAMCFG_EX(); Pointer point = struCameraParam.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1126,7 +1150,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_CAMERAPARAMCFG_EX struDayNigh = new NET_DVR_CAMERAPARAMCFG_EX(); Pointer point = struDayNigh.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1174,7 +1198,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); Pointer point = struFocusMode.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1217,7 +1241,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_FOCUSMODE_CFG struFocusMode = new NET_DVR_FOCUSMODE_CFG(); Pointer point = struFocusMode.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1247,7 +1271,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); int dwStop; if (enable) { dwStop = 0;//寮�鍚� @@ -1280,7 +1304,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_DEVSERVER_CFG struDeicing = new NET_DVR_DEVSERVER_CFG(); Pointer point = struDeicing.getPointer(); IntByReference ibrBytesReturned = new IntByReference(0); @@ -1317,7 +1341,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); NET_DVR_WORKSTATE_V30 devwork = new NET_DVR_WORKSTATE_V30(); if (!hCNetSDK.NET_DVR_GetDVRWorkState_V30(userId, devwork)) { // 杩斿洖Boolean鍊硷紝鍒ゆ柇鏄惁鑾峰彇璁惧鑳藉姏 @@ -1360,7 +1384,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); //鍥剧墖淇℃伅 NET_DVR_JPEGPARA jpeg = new NET_DVR_JPEGPARA(); //璁剧疆鍥剧墖鍒嗚鲸鐜� @@ -1424,7 +1448,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); //寮哄埗I甯х粨鏋勪綋瀵硅薄 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //鏂板缓缁撴瀯浣撳璞� netDvrIFrame.read(); @@ -1468,6 +1492,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,15 +1510,15 @@ } @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); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); //寮哄埗I甯х粨鏋勪綋瀵硅薄 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //鏂板缓缁撴瀯浣撳璞� netDvrIFrame.read(); @@ -1515,18 +1548,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; } } @@ -1540,7 +1575,7 @@ if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); //region 寮哄埗I甯� HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //鏂板缓缁撴瀯浣撳璞� netDvrIFrame.read(); @@ -1586,14 +1621,15 @@ } @Override - public void recordStopNotToMinio(CameraCmd cmd) { + public boolean recordStopNotToMinio(CameraCmd cmd) { + boolean result = false; try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChanNo(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { - return; + return false; } - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); //寮哄埗I甯х粨鏋勪綋瀵硅薄 HCNetSDK.NET_DVR_I_FRAME netDvrIFrame = new HCNetSDK.NET_DVR_I_FRAME(); //鏂板缓缁撴瀯浣撳璞� netDvrIFrame.read(); @@ -1620,9 +1656,12 @@ GlobalVariable.previewMap.remove(cameraId); } log.debug("褰曞儚鍋滄"); + result = true; } catch (Exception ex) { log.error("褰曞儚鍋滄寮傚父" + ex.getMessage()); + result = false; } + return result; } //鑾峰彇IP閫氶亾 @@ -1678,7 +1717,7 @@ return new HashMap<>(); } // 鑾峰彇鍙傛暟 - Integer userId = (Integer)GlobalVariable.loginMap.get(cameraId); + Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId); HCNetSDK.NET_DVR_STD_CONFIG struStdCfg = new HCNetSDK.NET_DVR_STD_CONFIG(); HCNetSDK.NET_DVR_GIS_INFO struGisInfo = new HCNetSDK.NET_DVR_GIS_INFO(); struStdCfg.read(); -- Gitblit v1.9.3