From 28692d10a5d6312bc7f486c2313c6a1c54ccb0bb Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Sat, 28 Feb 2026 18:22:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=85=8D=E7=BD=AE=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E6=97=B6=E5=A2=9E=E5=BC=BA=20rtsp=5Furl=20=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=92=8C=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当摄像头没有有效的 RTSP 地址时: 1. 添加详细的警告日志,说明可能的原因(stream_proxy 表或媒体服务器配置) 2. 添加 rtsp_url_valid 标志位,方便 Edge 端调试 这有助于排查为什么推送配置后 Edge 无法连接视频流。 Co-Authored-By: Claude Opus 4.6 --- .../impl/AiRedisConfigServiceImpl.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/service/impl/AiRedisConfigServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/aiot/service/impl/AiRedisConfigServiceImpl.java index f6048a321..51d89b2d5 100644 --- a/src/main/java/com/genersoft/iot/vmp/aiot/service/impl/AiRedisConfigServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/aiot/service/impl/AiRedisConfigServiceImpl.java @@ -527,24 +527,39 @@ public class AiRedisConfigServiceImpl implements IAiRedisConfigService { // cameraId格式为 {app}/{stream},ZLM的RTSP路径直接使用该格式 try { MediaServer mediaServer = mediaServerService.getDefaultMediaServer(); - if (mediaServer != null && mediaServer.getRtspPort() != 0) { + if (mediaServer == null) { + log.warn("[AiRedis] 无法获取媒体服务器配置,请检查 ZLM 媒体服务器是否已配置"); + } else if (mediaServer.getRtspPort() != 0) { rtspUrl = String.format("rtsp://%s:%s/%s", mediaServer.getStreamIp() != null ? mediaServer.getStreamIp() : mediaServer.getIp(), mediaServer.getRtspPort(), cameraId); - } else if (mediaServer != null) { + log.debug("[AiRedis] 使用媒体服务器构建RTSP: {}", rtspUrl); + } else if (mediaServer.getHttpPort() != 0) { rtspUrl = String.format("http://%s:%s/%s.live.flv", mediaServer.getStreamIp() != null ? mediaServer.getStreamIp() : mediaServer.getIp(), mediaServer.getHttpPort(), cameraId); + log.debug("[AiRedis] 使用媒体服务器构建HTTP: {}", rtspUrl); + } else { + log.warn("[AiRedis] 媒体服务器 {} 未配置 RTSP/HTTP 端口", mediaServer.getIp()); } } catch (Exception e) { log.warn("[AiRedis] 获取媒体服务器信息失败: {}", e.getMessage()); } } - cameraMap.put("rtsp_url", rtspUrl); cameraMap.put("camera_name", cameraName); cameraMap.put("enabled", true); cameraMap.put("location", ""); + + // 如果没有有效的 RTSP URL,记录警告但仍然添加摄像头(让 Edge 知道它的存在) + if (rtspUrl == null || rtspUrl.isEmpty()) { + log.warn("[AiRedis] 摄像头 {} 没有有效的 RTSP 地址(请检查 stream_proxy 表或媒体服务器配置)", cameraId); + cameraMap.put("rtsp_url", ""); + cameraMap.put("rtsp_url_valid", false); + } else { + cameraMap.put("rtsp_url", rtspUrl); + cameraMap.put("rtsp_url_valid", true); + } cameras.add(cameraMap); // 该摄像头下的 ROI 和绑定