From 016aa105789fca71e86cdbb0d26a181812f200f9 Mon Sep 17 00:00:00 2001 From: liusuyi <1951119284@qq.com> Date: 星期三, 10 七月 2024 15:33:36 +0800 Subject: [PATCH] 优化:流媒体同步任务 --- ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java | 73 ++++++++++++++++-------------------- 1 files changed, 33 insertions(+), 40 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java index ec6c8a3..3957ce6 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java +++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java @@ -112,9 +112,7 @@ log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint()); return AjaxResult.warn(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError())); } -// if (GlobalVariable.loginMap.containsKey(camera.getId())) { -// GlobalVariable.loginMap.remove(camera.getId()); -// } + camera.setState("1"); camera.setChanNum(m_stDeviceInfo.byChanNum); camera.setStartDChan(1); @@ -123,7 +121,12 @@ //鑾峰彇鏈�鏂伴�氶亾 List<ArdChannel> ardChannelList = getChannels(camera); if (ardChannelList.size() > 0) { + ardChannelService.deleteArdChannelByDeviceId(camera.getId()); + ardChannelList.stream().forEach(channel -> { + ardChannelService.insertArdChannel(channel); + }); camera.setChanNum(ardChannelList.size()); + camera.setChannelList(ardChannelList); ardCamerasService.updateArdCameras(camera); //閰嶇疆鍒版祦濯掍綋 addVtdu(camera); @@ -154,9 +157,6 @@ log.error("璁惧[" + camera.getIp() + ":" + camera.getPort() + "]鐧诲綍澶辫触:" + getErrorCodePrint()); return AjaxResult.warn(getErrorCodePrint()); } -// if (GlobalVariable.loginMap.containsKey(camera.getId())) { -// GlobalVariable.loginMap.remove(camera.getId()); -// } camera.setState("1"); camera.setChanNum(m_stDeviceInfo.byChanNum); camera.setStartDChan(1); @@ -167,7 +167,12 @@ //鑾峰彇鏈�鏂伴�氶亾 List<ArdChannel> ardChannelList = getChannels(camera); if (ardChannelList.size() > 0) { + ardChannelService.deleteArdChannelByDeviceId(camera.getId()); + ardChannelList.stream().forEach(channel -> { + ardChannelService.insertArdChannel(channel); + }); camera.setChanNum(ardChannelList.size()); + camera.setChannelList(ardChannelList); ardCamerasService.updateArdCameras(camera); //閰嶇疆鍒版祦濯掍綋 addVtdu(camera); @@ -183,17 +188,17 @@ //娣诲姞鍒版祦濯掍綋 private void addVtdu(ArdCameras camera) { - for (int i = 1; i < camera.getChanNum() + 1; i++) { - String name = camera.getId() + "_" + i; - String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + i + "&subtype=0"; - Vtdu vtdu = vtduService.selectVtduByName(name); - if (vtdu != null) { + camera.getChannelList().stream().forEach(channel -> { + String name = camera.getId() + "_" + channel.getChanNo(); + String rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + channel.getChanNo() + "&subtype=0"; + //鍒犻櫎娴佸獟浣� + if (vtduService.selectVtduByName(name) != null) { vtduService.deleteVtduByName(name); } //娣诲姞鍒版祦濯掍綋 - CameraCmd cmd = new CameraCmd(camera.getId(), i); + CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo()); Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd); - vtdu = new Vtdu(); + Vtdu vtdu = new Vtdu(); if (videoCompressionCfg.get("videoEncType") != null) { if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) { vtdu.setIsCode("0");//榛樿涓嶈浆鐮� @@ -204,11 +209,11 @@ vtdu.setIsCode("0");//榛樿涓嶈浆鐮� } vtdu.setRtspSource(rtspSource); - vtdu.setName(camera.getId() + "_" + i); + vtdu.setName(name); vtdu.setMode("1");//榛樿CPU杞В鐮� vtdu.setCameraId(camera.getId()); vtduService.insertVtdu(vtdu); - } + }); } //鍒涘缓寮曞闃熷垪 @@ -226,23 +231,12 @@ //鑾峰彇閫氶亾 public List<ArdChannel> getChannels(ArdCameras camera) { - ardChannelService.deleteArdChannelByDeviceId(camera.getId()); LLong loginId = new LLong(camera.getLoginId()); List<ArdChannel> ardChannelList = new ArrayList<>(); for (int i = 1; i < camera.getChanNum() + 1; i++) { ArdChannel channel = new ArdChannel(); - NetSDKLib.AV_CFG_ChannelName av_cfg_channelName = new NetSDKLib.AV_CFG_ChannelName(); - boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName); - if (!b) { - log.error("鑾峰彇閰嶇疆澶辫触,璇风◢鍚庨噸璇�" + getErrorCodePrint()); - // return AjaxResult.warn(ErrorCode.getErrorCode(LoginModule.netsdk.CLIENT_GetLastError())); - } - String chanName = ""; - try { - chanName = new String(av_cfg_channelName.szName, "GBK").trim(); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } + String chanName = ConfigModule.getChannelName(loginId, i - 1).trim(); + log.debug("鑾峰彇閫氶亾鍚嶇О锛�" + chanName); channel.setName(chanName.equals("") ? "閫氶亾" + i : chanName); channel.setDeviceId(camera.getId()); channel.setChanNo(i); @@ -253,7 +247,6 @@ } } ardChannelList.add(channel); - ardChannelService.insertArdChannel(channel); } return ardChannelList; } @@ -411,9 +404,9 @@ float t = (float) dh_ptz_location_info.nPTZTilt / 10 * -1; String nPTZTilt = df.format(t < 0 ? t + 360 : t); String nPTZZoom = df.format((float) dh_ptz_location_info.nPTZZoom); - ptzMap.put("p" , nPTZPan); - ptzMap.put("t" , nPTZTilt); - ptzMap.put("z" , nPTZZoom); + ptzMap.put("p", nPTZPan); + ptzMap.put("t", nPTZTilt); + ptzMap.put("z", nPTZZoom); return AjaxResult.success(ptzMap); } @@ -591,7 +584,7 @@ // return false; //} log.debug("鏈湴褰曞儚寮�濮�"); - return AjaxResult.success("鏈湴褰曞儚寮�濮�" , lRealHandle); + return AjaxResult.success("鏈湴褰曞儚寮�濮�", lRealHandle); } catch (Exception ex) { log.error("鏈湴褰曞儚寮�濮嬪紓甯�" + ex.getMessage()); return AjaxResult.error("鏈湴褰曞儚寮�濮嬪紓甯�" + ex.getMessage()); @@ -796,7 +789,7 @@ log.error("璁剧疆ptz澶辫触:" + getErrorCodePrint()); return AjaxResult.warn("璁剧疆ptz澶辫触:" + getErrorCodePrint()); } - return AjaxResult.success("寮曞鐩爣浣嶇疆鎴愬姛",correctPitch); + return AjaxResult.success("寮曞鐩爣浣嶇疆鎴愬姛", correctPitch); } catch (Exception ex) { log.error("寮曞鐩爣浣嶇疆寮傚父:" + ex.getMessage()); return AjaxResult.error("寮曞鐩爣浣嶇疆寮傚父:" + ex.getMessage()); @@ -1110,10 +1103,10 @@ int nHeight = cfg_encode_info.stuMainStream[0].stuVideoFormat.nHeight; String resolution = nWidth + "*" + nHeight; float nFrameRate = cfg_encode_info.stuMainStream[0].stuVideoFormat.nFrameRate; - map.put("resolution" , resolution);//鍒嗚鲸鐜� - map.put("videoBitrate" , String.valueOf(nBitRate));//姣旂壒鐜� - map.put("videoEncType" , videoEncType);//缂栫爜 - map.put("nFrameRate" , String.valueOf(nFrameRate));//甯х巼 + map.put("resolution", resolution);//鍒嗚鲸鐜� + map.put("videoBitrate", String.valueOf(nBitRate));//姣旂壒鐜� + map.put("videoEncType", videoEncType);//缂栫爜 + map.put("nFrameRate", String.valueOf(nFrameRate));//甯х巼 } } catch (Exception ex) { log.error("鍙栫爜娴佸帇缂╁弬鏁板紓甯�:" + ex.getMessage()); @@ -1140,8 +1133,8 @@ float nAngelH = (float) dh_out_ptz_view_range_status.nAngelH / 10; float nAngelV = (float) dh_out_ptz_view_range_status.nAngelV / 10; Map<String, Object> map = getPtz(cmd);//鑾峰彇ptz - map.put("fHorFieldAngle" , nAngelH);// 姘村钩瑙嗗満瑙� - map.put("fVerFieldAngle" , nAngelV);// 鍨傜洿瑙嗗満瑙� + map.put("fHorFieldAngle", nAngelH);// 姘村钩瑙嗗満瑙� + map.put("fVerFieldAngle", nAngelV);// 鍨傜洿瑙嗗満瑙� return AjaxResult.success(map); } catch (Exception ex) { log.error("鑾峰彇浜戝彴鍙鍩熷紓甯�" + ex.getMessage()); -- Gitblit v1.9.3