From 2591997dfc8995a788b07dd41f42aac77c6fc4fb Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 12 八月 2022 10:00:18 +0800
Subject: [PATCH] 修复文档错误
---
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java | 89 +++++++++++++++++++++++++++++++++++++-------
1 files changed, 75 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
index d5caab2..48973f9 100644
--- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
+++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/media/MediaController.java
@@ -1,9 +1,16 @@
package com.genersoft.iot.vmp.vmanager.gb28181.media;
import com.genersoft.iot.vmp.common.StreamInfo;
+import com.genersoft.iot.vmp.conf.security.SecurityUtils;
+import com.genersoft.iot.vmp.conf.security.dto.LoginUser;
+import com.genersoft.iot.vmp.media.zlm.dto.OnPublishHookParam;
+import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
+import com.genersoft.iot.vmp.service.IMediaServerService;
+import com.genersoft.iot.vmp.service.IStreamProxyService;
import com.genersoft.iot.vmp.service.IStreamPushService;
import com.genersoft.iot.vmp.service.IMediaService;
-import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
+import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -15,6 +22,8 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletRequest;
+
@Api(tags = "濯掍綋娴佺浉鍏�")
@Controller
@@ -25,13 +34,12 @@
private final static Logger logger = LoggerFactory.getLogger(MediaController.class);
@Autowired
- private IVideoManagerStorager storager;
-
- @Autowired
- private IStreamPushService streamPushService;
+ private IRedisCatchStorage redisCatchStorage;
@Autowired
private IMediaService mediaService;
+ @Autowired
+ private IStreamProxyService streamProxyService;
/**
@@ -48,20 +56,73 @@
})
@GetMapping(value = "/stream_info_by_app_and_stream")
@ResponseBody
- public WVPResult<StreamInfo> getStreamInfoByAppAndStream(@RequestParam String app, @RequestParam String stream, @RequestParam(required = false) String mediaServerId){
- StreamInfo streamInfoByAppAndStreamWithCheck = mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId);
+ public WVPResult<StreamInfo> getStreamInfoByAppAndStream(HttpServletRequest request, @RequestParam String app,
+ @RequestParam String stream,
+ @RequestParam(required = false) String mediaServerId,
+ @RequestParam(required = false) String callId,
+ @RequestParam(required = false) Boolean useSourceIpAsStreamIp){
+ boolean authority = false;
+ if (callId != null) {
+ // 鏉冮檺鏍¢獙
+ StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
+ if (streamAuthorityInfo.getCallId().equals(callId)) {
+ authority = true;
+ }else {
+ WVPResult<StreamInfo> result = new WVPResult<>();
+ result.setCode(401);
+ result.setMsg("fail");
+ return result;
+ }
+ }else {
+ // 鏄惁鐧婚檰鐢ㄦ埛, 鐧婚檰鐢ㄦ埛杩斿洖瀹屾暣淇℃伅
+ LoginUser userInfo = SecurityUtils.getUserInfo();
+ if (userInfo!= null) {
+ authority = true;
+ }
+ }
+
+ StreamInfo streamInfo;
+
+ if (useSourceIpAsStreamIp != null && useSourceIpAsStreamIp) {
+ String host = request.getHeader("Host");
+ String localAddr = host.split(":")[0];
+ logger.info("浣跨敤{}浣滀负杩斿洖娴佺殑ip", localAddr);
+ streamInfo = mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId, localAddr, authority);
+ }else {
+ streamInfo = mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId, authority);
+ }
+
WVPResult<StreamInfo> result = new WVPResult<>();
- if (streamInfoByAppAndStreamWithCheck != null){
+ if (streamInfo != null){
result.setCode(0);
result.setMsg("scccess");
- result.setData(streamInfoByAppAndStreamWithCheck);
+ result.setData(streamInfo);
}else {
- result.setCode(-1);
- result.setMsg("fail");
+ //鑾峰彇娴佸け璐ワ紝閲嶅惎鎷夋祦鍚庨噸璇曚竴娆�
+ streamProxyService.stop(app,stream);
+ boolean start = streamProxyService.start(app, stream);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if (useSourceIpAsStreamIp != null && useSourceIpAsStreamIp) {
+ String host = request.getHeader("Host");
+ String localAddr = host.split(":")[0];
+ logger.info("浣跨敤{}浣滀负杩斿洖娴佺殑ip", localAddr);
+ streamInfo = mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId, localAddr, authority);
+ }else {
+ streamInfo = mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream, mediaServerId, authority);
+ }
+ if (streamInfo != null){
+ result.setCode(0);
+ result.setMsg("scccess");
+ result.setData(streamInfo);
+ }else {
+ result.setCode(-1);
+ result.setMsg("fail");
+ }
}
return result;
}
-
-
-
}
--
Gitblit v1.8.0