From 21f5773cd9ae3e18feaec40bd23e4383968cd06a Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期二, 30 七月 2024 16:55:13 +0800
Subject: [PATCH] 修改:取消ffmpeg绝对路径配置
---
ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java | 87 +++++++++++++++++++++++++++++++++----------
1 files changed, 66 insertions(+), 21 deletions(-)
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 36a8628..4d345d4 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
@@ -6,9 +6,15 @@
import java.util.stream.Collectors;
import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.device.camera.domain.ArdCameras;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.factory.CameraSDK;
+import com.ruoyi.device.camera.factory.CameraSDKFactory;
import com.ruoyi.device.channel.domain.ArdChannel;
+import com.ruoyi.media.domain.StreamInfo;
import com.ruoyi.media.service.IMediaService;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.ruoyi.media.mapper.VtduMapper;
import com.ruoyi.media.domain.Vtdu;
@@ -30,6 +36,10 @@
private VtduMapper vtduMapper;
@Resource
private IMediaService mediaService;
+ @Resource
+ private CameraSDKFactory cameraSDKFactory;
+ @Value("${mediamtx.host}")
+ String mediamtxHost;
/**
* 鏌ヨ娴佸獟浣撶鐞�
@@ -39,7 +49,6 @@
*/
@Override
public Vtdu selectVtduByName(String name) {
-
return vtduMapper.selectVtduByName(name);
}
@@ -62,17 +71,6 @@
*/
@Override
public int insertVtdu(Vtdu vtdu) {
- log.debug("娴佸獟浣撱��" + vtdu.getName() + "銆戦�氶亾娣诲姞");
- Map<String, String> map = mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
- vtdu.setRtspUrl(map.get("rtspUrl"));
- vtdu.setRtmpUrl(map.get("rtmpUrl"));
- vtdu.setWebrtcUrl(map.get("webrtcUrl"));
-
- vtdu.setName(vtdu.getName());
- vtdu.setRtspSource(vtdu.getRtspSource());
- vtdu.setIsCode(vtdu.getIsCode());
- vtdu.setMode(vtdu.getMode());
- vtdu.setCreateTime(DateUtils.getNowDate());
return vtduMapper.insertVtdu(vtdu);
}
@@ -84,7 +82,6 @@
*/
@Override
public int updateVtdu(Vtdu vtdu) {
- log.debug("娴佸獟浣撱��" + vtdu.getName() + "銆戦�氶亾鏇存柊");
Map<String, String> map = mediaService.editPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
vtdu.setName(vtdu.getName());
vtdu.setRtspSource(vtdu.getRtspSource());
@@ -171,12 +168,10 @@
.collect(Collectors.toList());
return nameList;
} else {
-
List<String> nameList = names.stream().filter(item -> !vtdus.stream().map(Vtdu::getName).collect(Collectors.toList()).contains(item))
.collect(Collectors.toList());
return nameList;
}
-
}
//闇�瑕佹柊澧炵殑锛堟祦濯掍綋涓皯鐨勶級
@@ -186,18 +181,23 @@
}
/**
- * @Author 鍒樿嫃涔�
- * @Description 鍚屾鏈湴vtdu搴撳拰娴佸獟浣撲腑鐨勬暟鎹�
- * @Date 2024/7/10 15:26
- * @Param vtdus vtdu搴撶殑闆嗗悎
- * @Param names 娴佸獟浣撶殑name闆嗗悎
* @return
+ * @Author 鍒樿嫃涔�
+ * @Description 鍚屾鏈湴vtdu搴撳拰娴佸獟浣撲腑鐨勬暟鎹�
+ * @Date 2024/7/10 15:26
+ * @Param vtdus vtdu搴撶殑闆嗗悎
+ * @Param names 娴佸獟浣撶殑name闆嗗悎
*/
@Override
public void asyncVtdu(List<Vtdu> vtdus, List<String> names) {
//闇�瑕佹洿鏂扮殑鏁版嵁,鍙傛暟椤哄簭娉ㄦ剰
sameList(vtdus, names).stream().forEach(vtdu -> {
- mediaService.editPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
+ StreamInfo streamInfo = mediaService.getPathInfo(vtdu.getName());
+ if (streamInfo != null) {
+ if (streamInfo.getRtspSource() != null && !streamInfo.getRtspSource().equals(vtdu.getRtspSource())) {
+ mediaService.editPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
+ }
+ }
});
//闇�瑕佸垹闄ょ殑鏁版嵁
diffListToDel(vtdus, names).stream().forEach(name -> {
@@ -208,4 +208,49 @@
mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
});
}
+
+ @Override
+ public void addChanToVtdu(ArdCameras camera, ArdChannel channel) {
+ String name = camera.getId() + "_" + channel.getChanNo();
+ String rtspSource = "";
+ switch (camera.getFactory()) {
+ case "1":
+ rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream";
+ break;
+ case "2":
+ rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + channel.getChanNo() + "&subtype=0";
+ break;
+ }
+
+ //鍒犻櫎娴佸獟浣�
+ if (selectVtduByName(name) != null) {
+ deleteVtduByName(name);
+ }
+ //娣诲姞鍒版祦濯掍綋
+ CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo());
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(camera.getFactory());
+ Map<String, Object> videoCompressionCfg = cameraSDK.getVideoCompressionCfg(cmd);
+ Vtdu vtdu = new Vtdu();
+ if (videoCompressionCfg.get("videoEncType") != null) {
+ if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) {
+ vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
+ } else {
+ vtdu.setIsCode("1");//榛樿杞爜
+ }
+ } else {
+ vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
+ }
+ vtdu.setRtspSource(rtspSource);
+ vtdu.setName(name);
+ vtdu.setMode("1");//榛樿CPU杞В鐮�
+ vtdu.setCameraId(camera.getId());
+ String rtspUrl = "rtsp://" + mediamtxHost + ":8554/" + name;
+ String rtmpUrl = "rtmp://" + mediamtxHost + ":1935/" + name;
+ String webrtcUrl = "http://" + mediamtxHost + ":8889/" + name;
+ vtdu.setRtmpUrl(rtmpUrl);
+ vtdu.setWebrtcUrl(webrtcUrl);
+ vtdu.setRtspUrl(rtspUrl);
+ insertVtdu(vtdu);
+ }
+
}
--
Gitblit v1.9.3