From b2a9ea7d52c7aedb61e36d769018b346e5d23e70 Mon Sep 17 00:00:00 2001 From: JR <3573153686@qq.com> Date: Fri, 8 Aug 2025 16:04:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E5=85=B3=E9=97=AD=E6=91=84=E5=83=8F=E5=A4=B4=E6=8B=89?= =?UTF-8?q?=E6=B5=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 /stream/close/{cameraId} 接口,用于手动关闭摄像头拉流 - 修改了 FLV播放地址的生成逻辑,增加了 .live 后缀 -优化了摄像头配置的错误处理- 增加了与 ZLMediaKit 交互的异常处理 --- .../WmsCameraManagementController.java | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsCameraManagementController.java b/klp-wms/src/main/java/com/klp/controller/WmsCameraManagementController.java index f2060f8f..0db6c959 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsCameraManagementController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsCameraManagementController.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Arrays; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.klp.common.utils.StringUtils; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; @@ -84,7 +85,7 @@ public class WmsCameraManagementController extends BaseController { } // 2. 生成FLV播放地址 - String flvUrl = String.format("%s/live/%s.flv", + String flvUrl = String.format("%s/live/%s.live.flv", cameraConfig.getMediaServerHost(), camera.getCameraCode()); @@ -108,6 +109,39 @@ public class WmsCameraManagementController extends BaseController { } } + /** + * 手动关闭拉流代理 + */ + @GetMapping("/stream/close/{cameraId}") + public R closeCameraStream(@PathVariable Long cameraId) { + // 1. 查询摄像头信息,拿流名(cameraCode) + WmsCameraManagementVo camera = iWmsCameraManagementService.queryById(cameraId); + if (camera == null || StringUtils.isBlank(camera.getCameraCode())) { + return R.fail("摄像头配置错误或不存在"); + } + + // 2. 构造关闭拉流API地址 + String apiUrl = String.format("%s/index/api/delStreamProxy?app=live&stream=%s&secret=%s", + cameraConfig.getMediaServerHost(), + camera.getCameraCode(), + cameraConfig.getApiSecret()); + System.out.println("关闭拉流API地址: " + apiUrl); + + // 3. 调用ZLMediaKit关闭拉流 + try { + String result = new RestTemplate().getForObject(apiUrl, String.class); + JSONObject json = JSON.parseObject(result); + if (json.getInteger("code").equals(0)) { + return R.ok("关闭成功"); + } else { + return R.fail("关闭失败: " + json.getString("msg")); + } + } catch (Exception e) { + return R.fail("API调用异常: " + e.getMessage()); + } + } + + /** * 新增摄像头管理 */