feat(wms): 添加手动关闭摄像头拉流功能
- 新增 /stream/close/{cameraId} 接口,用于手动关闭摄像头拉流
- 修改了 FLV播放地址的生成逻辑,增加了 .live 后缀
-优化了摄像头配置的错误处理- 增加了与 ZLMediaKit 交互的异常处理
This commit is contained in:
@@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.klp.common.utils.StringUtils;
|
import com.klp.common.utils.StringUtils;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
@@ -84,7 +85,7 @@ public class WmsCameraManagementController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. 生成FLV播放地址
|
// 2. 生成FLV播放地址
|
||||||
String flvUrl = String.format("%s/live/%s.flv",
|
String flvUrl = String.format("%s/live/%s.live.flv",
|
||||||
cameraConfig.getMediaServerHost(),
|
cameraConfig.getMediaServerHost(),
|
||||||
camera.getCameraCode());
|
camera.getCameraCode());
|
||||||
|
|
||||||
@@ -108,6 +109,39 @@ public class WmsCameraManagementController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手动关闭拉流代理
|
||||||
|
*/
|
||||||
|
@GetMapping("/stream/close/{cameraId}")
|
||||||
|
public R<String> 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增摄像头管理
|
* 新增摄像头管理
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user