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 | 93 +++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 82 insertions(+), 11 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 450c54a..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,17 @@
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;
import io.swagger.annotations.ApiImplicitParams;
@@ -13,6 +21,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
@Api(tags = "濯掍綋娴佺浉鍏�")
@@ -24,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;
/**
@@ -43,15 +52,77 @@
@ApiImplicitParams({
@ApiImplicitParam(name = "app", value = "搴旂敤鍚�", dataTypeClass = String.class),
@ApiImplicitParam(name = "stream", value = "娴乮d", dataTypeClass = String.class),
- @ApiImplicitParam(name = "mediaServerId", value = "濯掍綋鏈嶅姟鍣╥d", dataTypeClass = String.class),
+ @ApiImplicitParam(name = "mediaServerId", value = "濯掍綋鏈嶅姟鍣╥d", dataTypeClass = String.class, required = false),
})
@GetMapping(value = "/stream_info_by_app_and_stream")
@ResponseBody
- public StreamInfo getStreamInfoByAppAndStream(@RequestParam String app, @RequestParam String stream, @RequestParam String 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;
+ }
+ }
- return mediaService.getStreamInfoByAppAndStreamWithCheck(app, stream,mediaServerId);
+ 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 (streamInfo != null){
+ result.setCode(0);
+ result.setMsg("scccess");
+ result.setData(streamInfo);
+ }else {
+ //鑾峰彇娴佸け璐ワ紝閲嶅惎鎷夋祦鍚庨噸璇曚竴娆�
+ 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