From 8a8a13eb80498e9b905b47b8dc4d52cd8fdb8497 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期二, 24 十月 2023 16:36:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java | 11 +
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java | 9 -
ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java | 96 ++++++++-------
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java | 20 +--
ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java | 6
ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java | 2
ard-work/src/main/java/com/ruoyi/cmd/startup.java | 2
ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java | 48 +++++--
ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 137 +++++++++++-----------
ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java | 2
ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java | 1
server/mediamtx/mediamtx.yml | 16 +-
ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java | 5
13 files changed, 191 insertions(+), 164 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/cmd/startup.java b/ard-work/src/main/java/com/ruoyi/cmd/startup.java
index 64b60f3..8466eda 100644
--- a/ard-work/src/main/java/com/ruoyi/cmd/startup.java
+++ b/ard-work/src/main/java/com/ruoyi/cmd/startup.java
@@ -6,6 +6,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.annotation.Order;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
@@ -77,6 +78,7 @@
}
@PostConstruct
+ @Order(1)
public void init() {
if (minioEnabled) {
log.info("鍒濆鍖栧惎鍔╩inio");
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
index bf0b78e..5f9a351 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/ICameraSdkService.java
@@ -6,8 +6,6 @@
import java.util.Map;
public interface ICameraSdkService {
- //鍒濆鍖栫櫥褰�
- void loginAll();
//鐧诲綍
Boolean login(ArdCameras ardCamera);
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index 22b1c04..99c36f5 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -14,6 +14,7 @@
import com.ruoyi.device.channel.mapper.ArdChannelMapper;
import com.ruoyi.device.hiksdk.service.IHikClientService;
import com.ruoyi.media.domain.Vtdu;
+import com.ruoyi.media.service.IMediaService;
import com.ruoyi.media.service.IVtduService;
import com.ruoyi.scheduling.domian.SchedulingParam;
import com.ruoyi.utils.gis.GisUtil;
@@ -50,9 +51,13 @@
private ArdChannelMapper ardChannelMapper;
@Resource
private IVtduService vtduService;
+ @Resource
+ private IMediaService mediaService;
+
@PostConstruct
public void loadCameras() {
+
//娓呯┖鐩告満缂撳瓨
Collection<String> cacheKeys = redisCache.keys(getCacheKey("*"));
redisCache.deleteObject(cacheKeys);
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java
index 3dca655..d0c7e52 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/AsyncLogin.java
@@ -1,24 +1,19 @@
package com.ruoyi.device.camera.service.impl;
-import com.ruoyi.common.utils.Threads;
import com.ruoyi.device.camera.domain.ArdCameras;
import com.ruoyi.device.dhsdk.service.IDhClientService;
import com.ruoyi.device.hiksdk.service.IHikClientService;
-import org.hibernate.validator.internal.util.stereotypes.Lazy;
import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.stereotype.Service;
-
import javax.annotation.Resource;
/**
* @ClassName 寮傛鐧诲綍
- * @Description:
+ * @Description: 鐢变簬娴佸獟浣撳绾跨▼鏈夐棶棰橈紝鏆傛椂涓嶄娇鐢ㄥ紓姝�
* @Author 鍒樿嫃涔�
* @Date 2023/10/23 21:39
* @Version 1.0
*/
-@Service
+
public class AsyncLogin {
@Resource
IHikClientService hikClientService;
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
index a59702a..b561e4e 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/CameraSdkServiceImpl.java
@@ -12,6 +12,8 @@
import com.ruoyi.device.hiksdk.service.IHikClientService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.SmartInitializingSingleton;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@@ -30,7 +32,7 @@
**/
@Service
@Slf4j(topic = "SDK")
-public class CameraSdkServiceImpl implements ICameraSdkService {
+public class CameraSdkServiceImpl implements ICameraSdkService, ApplicationRunner {
@Resource
private IArdCamerasService ardCamerasService;
@Resource
@@ -39,22 +41,16 @@
IDhClientService dhClientService;
@Resource
RedisCache redisCache;
- @Resource
- AsyncLogin asyncLogin;
-
-
- //鍒濆鍖朣DK
- @PostConstruct
@Override
- public void loginAll() {
+ public void run(ApplicationArguments args) throws Exception {
try {
List<ArdCameras> ardCameras = ardCamerasService.selectArdCamerasListNoDataScope(new ArdCameras());
for (ArdCameras camera : ardCameras) {
if ("1".equals(camera.getFactory())) {
- asyncLogin.hikLogin(camera);
+ hikClientService.login(camera);
} else if ("2".equals(camera.getFactory())) {
- asyncLogin.dhLogin(camera);
+ dhClientService.login(camera);
}
}
} catch (Exception ex) {
@@ -70,10 +66,10 @@
if (ardCamera != null) {
String factory = ardCamera.getFactory();
if (factory.equals("1")) {
- asyncLogin.hikLogin(ardCamera);
+ hikClientService.login(ardCamera);
result = true;
} else if (factory.equals("2")) {
- asyncLogin.dhLogin(ardCamera);
+ dhClientService.login(ardCamera);
result = true;
}
}
diff --git a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
index 8da654f..0a9df8c 100644
--- a/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/dhsdk/service/impl/DhClientServiceImpl.java
@@ -84,62 +84,64 @@
ardCamerasService.updateArdCameras(camera);
return false;
}
- synchronized (lock) {
- if (GlobalVariable.loginMap.containsKey(camera.getId())) {
- GlobalVariable.loginMap.remove(camera.getId());
- }
- //鍒犻櫎绠$悊閫氶亾
- ardChannelService.deleteArdChannelByDeviceId(camera.getId());
- camera.setState("1");
- camera.setChanNum(m_stDeviceInfo.byChanNum);
- camera.setStartDChan(1);
- camera.setLoginId((int) loginId.longValue());
- ardCamerasService.updateArdCameras(camera);
- GlobalVariable.loginMap.put(camera.getId(), loginId);
+ if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+ GlobalVariable.loginMap.remove(camera.getId());
+ }
+ //鍒犻櫎绠$悊閫氶亾
+ ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+ camera.setState("1");
+ camera.setChanNum(m_stDeviceInfo.byChanNum);
+ camera.setStartDChan(1);
+ camera.setLoginId((int) loginId.longValue());
+ ardCamerasService.updateArdCameras(camera);
+ GlobalVariable.loginMap.put(camera.getId(), loginId);
- //鑾峰彇鏈�鏂伴�氶亾
- for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
- ArdChannel channel = new ArdChannel();
- AV_CFG_ChannelName av_cfg_channelName = new AV_CFG_ChannelName();
- boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
- if (b) {
- String chanName = null;
- try {
- chanName = new String(av_cfg_channelName.szName, "GBK").trim();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- channel.setName(chanName);
- } else {
- channel.setName("閫氶亾" + i);
+ //鑾峰彇鏈�鏂伴�氶亾
+ for (int i = 1; i < m_stDeviceInfo.byChanNum + 1; i++) {
+ ArdChannel channel = new ArdChannel();
+ AV_CFG_ChannelName av_cfg_channelName = new AV_CFG_ChannelName();
+ boolean b = ConfigModule.GetNewDevConfig(loginId, i - 1, CFG_CMD_CHANNELTITLE, av_cfg_channelName);
+ if (b) {
+ String chanName = null;
+ try {
+ chanName = new String(av_cfg_channelName.szName, "GBK").trim();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
}
- channel.setDeviceId(camera.getId());
- channel.setChanNo(i);
- ardChannelService.insertArdChannel(channel);
+ channel.setName(chanName);
+ } else {
+ channel.setName("閫氶亾" + i);
}
- //閰嶇疆鍒版祦濯掍綋
- for (int i = 1; i < m_stDeviceInfo.byChanNum + 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) {
- vtduService.deleteVtduByName(name);
- }
- //娣诲姞鍒版祦濯掍綋
- CameraCmd cmd = new CameraCmd(camera.getId(), i);
- Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
- vtdu = new Vtdu();
+ channel.setDeviceId(camera.getId());
+ channel.setChanNo(i);
+ ardChannelService.insertArdChannel(channel);
+ }
+ //閰嶇疆鍒版祦濯掍綋
+ for (int i = 1; i < m_stDeviceInfo.byChanNum + 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) {
+ vtduService.deleteVtduByName(name);
+ }
+ //娣诲姞鍒版祦濯掍綋
+ CameraCmd cmd = new CameraCmd(camera.getId(), i);
+ Map<String, Object> videoCompressionCfg = getVideoCompressionCfg(cmd);
+ vtdu = new Vtdu();
+ if (videoCompressionCfg.get("videoEncType") != null) {
if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) {
vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
} else {
vtdu.setIsCode("1");//榛樿杞爜
}
- vtdu.setRtspSource(rtspSource);
- vtdu.setName(camera.getId() + "_" + i);
- vtdu.setMode("1");//榛樿CPU杞В鐮�
- vtdu.setCameraId(camera.getId());
- vtduService.insertVtdu(vtdu);
+ } else {
+ vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
}
+ vtdu.setRtspSource(rtspSource);
+ vtdu.setName(camera.getId() + "_" + i);
+ vtdu.setMode("1");//榛樿CPU杞В鐮�
+ vtdu.setCameraId(camera.getId());
+ vtduService.insertVtdu(vtdu);
}
return true;
}
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 a052a0f..97191e6 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
@@ -117,71 +117,72 @@
camera.setState("0");
return;
}
- synchronized (lock) {
- log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
- if (fExceptionCallBack == null) {
- fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
- //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
- if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
- log.debug("Set fExceptionCallBack function fail");
- return;
- } else {
- log.debug("Set fExceptionCallBack function successfully!");
- }
+
+ log.debug("Login Success [ " + camera.getIp() + ":" + camera.getPort() + " ]");
+ if (fExceptionCallBack == null) {
+ fExceptionCallBack = new ExceptionCallBack();//寮傚父鍥炶皟
+ //璁剧疆寮傚父鍥炶皟鍑芥暟(鍙湪鍥炶皟鍑芥暟涓幏鍙栬澶囦笂涓嬬嚎鐘舵�佺瓑)
+ if (!hCNetSDK.NET_DVR_SetExceptionCallBack_V30(0, 0, fExceptionCallBack, null)) {
+ log.debug("Set fExceptionCallBack function fail");
+ return;
+ } else {
+ log.debug("Set fExceptionCallBack function successfully!");
}
+ }
- if (GlobalVariable.loginMap.containsKey(camera.getId())) {
- GlobalVariable.loginMap.remove(camera.getId());
+ if (GlobalVariable.loginMap.containsKey(camera.getId())) {
+ GlobalVariable.loginMap.remove(camera.getId());
+ }
+
+ //鍒犻櫎绠$悊閫氶亾
+ ardChannelService.deleteArdChannelByDeviceId(camera.getId());
+ GlobalVariable.loginMap.put(camera.getId(), lUserID);
+ GlobalVariable.loginCameraMap.put(lUserID, camera);
+
+ camera.setLoginId(lUserID);
+ camera.setState("1");
+ camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
+ camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
+
+ //鑾峰彇鏈�鏂伴�氶亾
+ List<ArdChannel> cameraChannelList = getCameraChannelList(camera);
+ if (cameraChannelList.size() > 0) {
+ for (ArdChannel channel : cameraChannelList) {
+ channel.setId(IdUtils.simpleUUID());
+ ardChannelService.insertArdChannel(channel);
}
- //鍒犻櫎绠$悊閫氶亾
- ardChannelService.deleteArdChannelByDeviceId(camera.getId());
- GlobalVariable.loginMap.put(camera.getId(), lUserID);
- GlobalVariable.loginCameraMap.put(lUserID, camera);
-
-
- camera.setLoginId(lUserID);
- camera.setState("1");
- camera.setChanNum((int) m_strDeviceInfo.struDeviceV30.byChanNum);
- camera.setStartDChan((int) m_strDeviceInfo.struDeviceV30.byStartDChan);
- //鑾峰彇鏈�鏂伴�氶亾
- List<ArdChannel> cameraChannelList = getCameraChannelList(camera);
- if (cameraChannelList.size() > 0) {
- for (ArdChannel channel : cameraChannelList) {
- channel.setId(IdUtils.simpleUUID());
- ardChannelService.insertArdChannel(channel);
+ //娣诲姞鍒版祦濯掍綋
+ for (ArdChannel channel : cameraChannelList) {
+ 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) {
+ vtduService.deleteVtduByName(name);
}
//娣诲姞鍒版祦濯掍綋
- for (ArdChannel channel : cameraChannelList) {
- 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) {
- 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);
+ 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);
}
- //鍒涘缓寮曞闃熷垪
- if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
- Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
- PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
- GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
- }
- ardCamerasService.updateArdCameras(camera);
}
+ //鍒涘缓寮曞闃熷垪
+ if (!GuidePriorityQueue.cameraQueueMap.containsKey(camera.getId())) {
+ Comparator<GuideTask> comparator = GuidePriorityQueue.getComparator();
+ PriorityBlockingQueue<GuideTask> priorityQueue = new PriorityBlockingQueue<>(1000, comparator);
+ GuidePriorityQueue.cameraQueueMap.put(camera.getId(), priorityQueue);
+ }
+ ardCamerasService.updateArdCameras(camera);
+
} catch (Exception ex) {
log.error("娉ㄥ唽璁惧寮傚父", ex);
@@ -502,19 +503,21 @@
*/
@Override
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);
Map<String, Object> map = new HashMap<>();
- NET_DVR_COMPRESSIONCFG_V30 compressioncfg = new NET_DVR_COMPRESSIONCFG_V30();
- compressioncfg.write();
- Pointer pioint = compressioncfg.getPointer();
- IntByReference ibrBytesReturned = new IntByReference(0);
try {
+ String cameraId = cmd.getCameraId();
+ Integer chanNo = cmd.getChanNo();
+ if (!GlobalVariable.loginMap.containsKey(cameraId)) {
+ return null;
+ }
+ Integer userId = (Integer) GlobalVariable.loginMap.get(cameraId);
+
+ NET_DVR_COMPRESSIONCFG_V30 compressioncfg = new NET_DVR_COMPRESSIONCFG_V30();
+ compressioncfg.write();
+ Pointer pioint = compressioncfg.getPointer();
+ IntByReference ibrBytesReturned = new IntByReference(0);
+
boolean bool = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_COMPRESSCFG_V30, chanNo, pioint, compressioncfg.size(), ibrBytesReturned);
if (bool) {
compressioncfg.read();
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java
index 1b00910..20da998 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectRecordServiceImpl.java
@@ -2,10 +2,13 @@
import java.util.HashMap;
import java.util.List;
+
+import com.ruoyi.common.utils.uuid.IdUtils;
import org.springframework.stereotype.Service;
import com.ruoyi.inspect.mapper.ArdVideoInspectRecordMapper;
import com.ruoyi.inspect.domain.ArdVideoInspectRecord;
import com.ruoyi.inspect.service.IArdVideoInspectRecordService;
+
import javax.annotation.Resource;
/**
@@ -42,12 +45,13 @@
}
@Override
- public List<HashMap> selectArdVideoInspectRecordListByStartTime(ArdVideoInspectRecord ardVideoInspectRecord) {
+ public List<HashMap> selectArdVideoInspectRecordListByStartTime(ArdVideoInspectRecord ardVideoInspectRecord) {
return ardVideoInspectRecordMapper.selectArdVideoInspectRecordListByStartTime(ardVideoInspectRecord);
}
/**
* 鎸夋湀浠借幏鍙栨瘡鏃ヨ褰曟枃浠舵暟閲�
+ *
* @param startMonth
* @return
*/
@@ -63,8 +67,9 @@
*/
@Override
public int insertArdVideoInspectRecord(ArdVideoInspectRecord ardVideoInspectRecord) {
- // ardVideoInspectRecord.setUserId(SecurityUtils.getUserId());
- return ardVideoInspectRecordMapper.insertArdVideoInspectRecord(ardVideoInspectRecord);
+ // ardVideoInspectRecord.setUserId(SecurityUtils.getUserId());
+ ardVideoInspectRecord.setId(IdUtils.simpleUUID());
+ return ardVideoInspectRecordMapper.insertArdVideoInspectRecord(ardVideoInspectRecord);
}
/**
diff --git a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
index 49757d6..d008af9 100644
--- a/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/inspect/service/impl/ArdVideoInspectTaskServiceImpl.java
@@ -557,6 +557,7 @@
String url = cameraSdkService.recordStopToMinio(cmd);
/*鎻掑叆宸℃璁板綍*/
ArdVideoInspectRecord ardVideoInspectRecord = new ArdVideoInspectRecord();
+ ardVideoInspectRecord.setId(IdUtils.simpleUUID());
ardVideoInspectRecord.setStepId(step.getId());
ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellById(step.getWellId());
if (StringUtils.isNotNull(ardAlarmpointsWell)) {
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
index 81be80e..b7242fd 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/MediaServiceImpl.java
@@ -1,8 +1,10 @@
package com.ruoyi.media.service.impl;
import com.alibaba.fastjson2.JSONObject;
+import com.dtflys.forest.Forest;
import com.dtflys.forest.exceptions.ForestNetworkException;
import com.dtflys.forest.exceptions.ForestRuntimeException;
+import com.dtflys.forest.http.ForestRequest;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.media.domain.*;
import com.ruoyi.media.service.IMediaService;
@@ -10,10 +12,14 @@
import com.ruoyi.utils.tools.ArdTool;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
+import javax.annotation.PostConstruct;
import javax.annotation.Resource;
+import javax.xml.soap.SOAPEnvelope;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -28,13 +34,22 @@
@Service
@Slf4j(topic = "vtdu")
@Order(2)
-public class MediaServiceImpl implements IMediaService {
-
+public class MediaServiceImpl implements IMediaService, ApplicationRunner {
+ private static List<String> mediaNameList = new ArrayList<>();
@Resource
MediaClient mediaClient;
@Value("${mediamtx.host}")
String mediamtxHost;
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ mediaNameList = getNameList();
+ if(mediaNameList.size()>0)
+ {
+ removePath(mediaNameList.toArray(new String[0]));
+ mediaNameList.clear();
+ }
+ }
/**
* 娣诲姞娴佸獟浣�
@@ -55,13 +70,13 @@
String webrtcUrl = "http://" + mediamtxHost + ":8889/" + name;
Conf conf = new Conf();
- String rootPath = System.getProperty("user.dir").replaceAll("\\\\", "/") + "/lib/mediamtx/";
+ String rootPath = System.getProperty("user.dir").replaceAll("\\\\", "/") + "/server/mediamtx/";
if (isCode.equals("1")) {
conf.setSource("publisher");
//榛樿杞В鐮�
String cmd = "ffmpeg -rtsp_transport tcp -i " + sourceUrl + " -vcodec libx264 -preset:v ultrafast -r 25 -keyint_min 25 -g 60 -sc_threshold 0 -threads 6 -b:v 2048k -acodec opus -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
if (mode.equals("0")) {//纭В鐮�
- cmd = "ffmpeg -hwaccel cuvid -c:v hevc_cuvid -rtsp_transport tcp -i " + sourceUrl + " -c:v h264_nvenc -r 25 -g 60 -sc_threshold 0 -threads 6 -b:v 2048k -bf 0 -acodec opus -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
+ cmd = rootPath+"ffmpeg -hwaccel cuvid -c:v hevc_cuvid -rtsp_transport tcp -i " + sourceUrl + " -c:v h264_nvenc -r 25 -g 60 -sc_threshold 0 -threads 6 -b:v 2048k -bf 0 -acodec opus -strict -2 -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH";
}
conf.setRunOnDemand(cmd);
conf.setRunOnDemandRestart(true);
@@ -74,14 +89,16 @@
conf.setSourceProtocol("tcp");
if (!checkNameExist(name)) {
- mediaClient.addPath(name, conf);
+ mediaClient.addPath(name, conf);
}
map.put("rtspUrl", rtspUrl);
map.put("rtmpUrl", rtmpUrl);
map.put("webrtcUrl", webrtcUrl);
+ } catch (ForestNetworkException ex) {
+ log.error("娣诲姞娴佸獟浣撳紓甯革細" + ex.getMessage());
} catch (ForestRuntimeException ex) {
- log.error("娣诲姞娴佸獟浣撳紓甯革細"+ex.getMessage());
+ log.error("娣诲姞娴佸獟浣撳紓甯革細" + ex.getMessage());
}
return map;
}
@@ -124,7 +141,7 @@
map.put("rtmpUrl", rtmpUrl);
map.put("webrtcUrl", webrtcUrl);
} catch (ForestRuntimeException ex) {
- log.error("淇敼娴佸獟浣撳紓甯革細"+ex.getMessage());
+ log.error("淇敼娴佸獟浣撳紓甯革細" + ex.getMessage());
}
return map;
}
@@ -157,6 +174,7 @@
for (String name : names) {
if (checkNameExist(name)) {
mediaClient.removePath(name);
+ log.info("鍒犻櫎鎴愬姛");
}
}
}
@@ -168,7 +186,7 @@
mediaClient.removePath(name);
}
} catch (ForestRuntimeException ex) {
- log.error("绉婚櫎娴佸獟浣撳紓甯革細"+ex.getMessage());
+ log.error("绉婚櫎娴佸獟浣撳紓甯革細" + ex.getMessage());
}
}
@@ -463,11 +481,10 @@
for (Items item : items) {
nameList.add(item.getName());
}
- }catch (ForestNetworkException ex) {
- log.error("鑾峰彇娴佸獟浣搉ame鍒楄〃寮傚父锛�"+ex.getMessage());
- }
- catch (ForestRuntimeException ex) {
- log.error("鑾峰彇娴佸獟浣搉ame鍒楄〃寮傚父锛�"+ex.getMessage());
+ } catch (ForestNetworkException ex) {
+ log.error("鑾峰彇娴佸獟浣搉ame鍒楄〃寮傚父锛�" + ex.getMessage());
+ } catch (ForestRuntimeException ex) {
+ log.error("鑾峰彇娴佸獟浣搉ame鍒楄〃寮傚父锛�" + ex.getMessage());
}
return nameList;
}
@@ -480,8 +497,7 @@
@Override
public boolean checkNameExist(String name) {
boolean result = false;
- List<String> nameList = getNameList();
- if (nameList.contains(name)) {
+ if (mediaNameList.contains(name)) {
result = true;
}
return result;
@@ -494,4 +510,6 @@
public String setConfig(Config config) {
return mediaClient.setConfig(config);
}
+
+
}
diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java
index 7028ce7..c08fb1d 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.media.service.impl;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -11,6 +12,7 @@
import com.ruoyi.media.domain.Vtdu;
import com.ruoyi.media.service.IVtduService;
+import javax.annotation.PostConstruct;
import javax.annotation.Resource;
/**
diff --git a/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java b/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
index b5266a7..a187f3e 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/forest/MediaClient.java
@@ -17,13 +17,13 @@
/**
* 澧炲姞璺緞
*/
- @Post(url = "/config/paths/add/{name}",async = true)
+ @Post("/config/paths/add/{name}")
public String addPath(@Var("name") String name, @JSONBody Conf body);
/**
* 淇敼璺緞
*/
- @Patch(url = "/config/paths/patch/{name}")
+ @Patch("/config/paths/patch/{name}")
public String editPath(@Var("name") String name, @JSONBody Conf body);
/**
@@ -35,7 +35,7 @@
/**
* 鑾峰彇璺緞璇︽儏
*/
- @Get("/config/paths/get/{name}")
+ @Get(url ="/config/paths/get/{name}")
public Conf getPathInfo(@Var("name") String name);
/**
diff --git a/server/mediamtx/mediamtx.yml b/server/mediamtx/mediamtx.yml
index 1c79833..0d0358e 100644
--- a/server/mediamtx/mediamtx.yml
+++ b/server/mediamtx/mediamtx.yml
@@ -44,17 +44,17 @@
# Enable the HTTP API.
api: yes
# Address of the API listener.
-apiAddress: 127.0.0.1:9997
+apiAddress: 192.168.1.227:9997
# Enable Prometheus-compatible metrics.
metrics: no
# Address of the metrics listener.
-metricsAddress: 127.0.0.1:9998
+metricsAddress: 192.168.1.227:9998
# Enable pprof-compatible endpoint to monitor performances.
pprof: no
# Address of the pprof listener.
-pprofAddress: 127.0.0.1:9999
+pprofAddress: 192.168.1.227:9999
# Command to run when a client connects to the server.
# This is terminated with SIGINT when a client disconnects from the server.
@@ -215,17 +215,17 @@
# needed when server and clients are on different LANs.
# TURN/TURNS servers are needed when a direct connection between server and
# clients is not possible. All traffic is routed through them.
-- url: stun:127.0.0.1:3478
+- url: stun:stun.l.google.com:19302
# if user is "AUTH_SECRET", then authentication is secret based.
# the secret must be inserted into the password field.
- username: 'admin'
- password: '123456'
+ username: ''
+ password: ''
# List of interfaces that will be used to gather IPs to send
# to the counterpart to establish a connection.
webrtcICEInterfaces: []
# List of public IP addresses that are to be used as a host.
# This is used typically for servers that are behind 1:1 D-NAT.
-webrtcICEHostNAT1To1IPs: [127.0.0.1]
+webrtcICEHostNAT1To1IPs: [192.168.1.227]
# Address of a ICE UDP listener in format host:port.
# If filled, ICE traffic will pass through a single UDP port,
# allowing the deployment of the server inside a container or behind a NAT.
@@ -235,7 +235,7 @@
# allowing the deployment of the server inside a container or behind a NAT.
# Using this setting forces usage of the TCP protocol, which is not
# optimal for WebRTC.
-webrtcICETCPMuxAddress: 127.0.0.1:1234
+webrtcICETCPMuxAddress: 192.168.1.227:1234
###############################################
# Global settings -> SRT
--
Gitblit v1.9.3