Commit cf8a1261b5a27b0e3270da2bd57fbe936b4e809b

Authored by 648540858
1 parent 85f20df9

支持合并录像使用https

src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
... ... @@ -2,7 +2,9 @@ package com.genersoft.iot.vmp.media.zlm;
2 2  
3 3 import com.alibaba.fastjson2.JSON;
4 4 import com.alibaba.fastjson2.JSONObject;
  5 +import com.genersoft.iot.vmp.conf.exception.ControllerException;
5 6 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
  7 +import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
6 8 import okhttp3.*;
7 9 import okhttp3.logging.HttpLoggingInterceptor;
8 10 import org.jetbrains.annotations.NotNull;
... ... @@ -13,7 +15,9 @@ import org.springframework.util.ObjectUtils;
13 15  
14 16 import java.io.IOException;
15 17 import java.net.ConnectException;
  18 +import java.net.MalformedURLException;
16 19 import java.net.SocketTimeoutException;
  20 +import java.net.URL;
17 21 import java.util.HashMap;
18 22 import java.util.List;
19 23 import java.util.Map;
... ... @@ -148,13 +152,14 @@ public class AssistRESTfulUtils {
148 152 return responseJSON;
149 153 }
150 154  
151   - public JSONObject sendPost(MediaServerItem mediaServerItem, String api, JSONObject param, ZLMRESTfulUtils.RequestCallback callback, Integer readTimeOut) {
  155 + public JSONObject sendPost(MediaServerItem mediaServerItem, String url,
  156 + JSONObject param, ZLMRESTfulUtils.RequestCallback callback,
  157 + Integer readTimeOut) {
152 158 OkHttpClient client = getClient(readTimeOut);
153 159  
154 160 if (mediaServerItem == null) {
155 161 return null;
156 162 }
157   - String url = String.format("http://%s:%s/%s", mediaServerItem.getIp(), mediaServerItem.getRecordAssistPort(), api);
158 163 JSONObject responseJSON = new JSONObject();
159 164 //-2自定义流媒体 调用错误码
160 165 responseJSON.put("code",-2);
... ... @@ -253,8 +258,8 @@ public class AssistRESTfulUtils {
253 258 if (!ObjectUtils.isEmpty(remoteHost)) {
254 259 videoTaskInfoJSON.put("remoteHost", remoteHost);
255 260 }
256   -
257   - return sendPost(mediaServerItem, "api/record/file/download/task/add", videoTaskInfoJSON, null, 30);
  261 + String urlStr = String.format("%s/api/record/file/download/task/add", remoteHost);;
  262 + return sendPost(mediaServerItem, urlStr, videoTaskInfoJSON, null, 30);
258 263 }
259 264  
260 265 public JSONObject queryTaskList(MediaServerItem mediaServerItem, String app, String stream, String callId, String taskId, Boolean isEnd) {
... ...
src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java
... ... @@ -32,7 +32,7 @@ public interface ICloudRecordService {
32 32 /**
33 33 * 添加合并任务
34 34 */
35   - String addTask(String app, String stream, String mediaServerId, String startTime, String endTime, String callId, String remoteHost);
  35 + String addTask(String app, String stream, MediaServerItem mediaServerItem, String startTime, String endTime, String callId, String remoteHost);
36 36  
37 37  
38 38 /**
... ...
src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
... ... @@ -107,23 +107,10 @@ public class CloudRecordServiceImpl implements ICloudRecordService {
107 107 }
108 108  
109 109 @Override
110   - public String addTask(String app, String stream, String mediaServerId, String startTime, String endTime, String callId, String remoteHost) {
  110 + public String addTask(String app, String stream, MediaServerItem mediaServerItem, String startTime, String endTime, String callId, String remoteHost) {
111 111 // 参数校验
112 112 assert app != null;
113 113 assert stream != null;
114   - MediaServerItem mediaServerItem = null;
115   - if (mediaServerId == null) {
116   - mediaServerItem = mediaServerService.getDefaultMediaServer();
117   - }else {
118   - mediaServerItem = mediaServerService.getOne(mediaServerId);
119   - }
120   - if (mediaServerItem == null) {
121   - throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到可用的流媒体");
122   - }else {
123   - if (remoteHost == null) {
124   - remoteHost = "http://" + mediaServerItem.getStreamIp() + ":" + mediaServerItem.getRecordAssistPort();
125   - }
126   - }
127 114 if (mediaServerItem.getRecordAssistPort() == 0) {
128 115 throw new ControllerException(ErrorCode.ERROR100.getCode(), "为配置Assist服务");
129 116 }
... ... @@ -163,7 +150,7 @@ public class CloudRecordServiceImpl implements ICloudRecordService {
163 150 }
164 151 JSONObject result = assistRESTfulUtils.queryTaskList(mediaServerItem, app, stream, callId, taskId, isEnd);
165 152 if (result == null || result.getInteger("code") != 0) {
166   - throw new ControllerException(ErrorCode.ERROR100.getCode(), result.getString("msg"));
  153 + throw new ControllerException(ErrorCode.ERROR100.getCode(), result == null ? "查询任务列表失败" : result.getString("msg"));
167 154 }
168 155 return result.getJSONArray("data");
169 156 }
... ...
src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java
... ... @@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
22 22 import org.springframework.data.redis.core.RedisTemplate;
23 23 import org.springframework.web.bind.annotation.*;
24 24  
  25 +import javax.servlet.http.HttpServletRequest;
25 26 import java.util.ArrayList;
26 27 import java.util.Calendar;
27 28 import java.util.List;
... ... @@ -154,6 +155,7 @@ public class CloudRecordController {
154 155 @Parameter(name = "callId", description = "鉴权ID", required = false)
155 156 @Parameter(name = "remoteHost", description = "返回地址时的远程地址", required = false)
156 157 public String addTask(
  158 + HttpServletRequest request,
157 159 @RequestParam(required = false) String app,
158 160 @RequestParam(required = false) String stream,
159 161 @RequestParam(required = false) String mediaServerId,
... ... @@ -162,7 +164,24 @@ public class CloudRecordController {
162 164 @RequestParam(required = false) String callId,
163 165 @RequestParam(required = false) String remoteHost
164 166 ){
165   - return cloudRecordService.addTask(app, stream, mediaServerId, startTime, endTime, callId, remoteHost);
  167 + System.out.println(request.getScheme());
  168 + System.out.println(request.getLocalAddr());
  169 + System.out.println(request.getRemoteAddr());
  170 + System.out.println(request.getRequestURI());
  171 + MediaServerItem mediaServerItem;
  172 + if (mediaServerId == null) {
  173 + mediaServerItem = mediaServerService.getDefaultMediaServer();
  174 + }else {
  175 + mediaServerItem = mediaServerService.getOne(mediaServerId);
  176 + }
  177 + if (mediaServerItem == null) {
  178 + throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到可用的流媒体");
  179 + }else {
  180 + if (remoteHost == null) {
  181 + remoteHost = request.getScheme() + "://" + request.getLocalAddr() + ":" + mediaServerItem.getRecordAssistPort();
  182 + }
  183 + }
  184 + return cloudRecordService.addTask(app, stream, mediaServerItem, startTime, endTime, callId, remoteHost);
166 185 }
167 186  
168 187 @ResponseBody
... ...