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()); + } + } + + /** * 新增摄像头管理 */