From aeeb61d141c0245232e9e1e4cc71e4f309e9d096 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期四, 23 五月 2024 17:47:43 +0800 Subject: [PATCH] 合并271分支 --- src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java | 23 ++++--- src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java | 82 +++++++++++++------------- src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java | 16 +---- src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java | 7 -- src/main/java/com/genersoft/iot/vmp/service/bean/CloudRecordItem.java | 3 src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java | 6 -- src/main/java/com/genersoft/iot/vmp/media/bean/RecordInfo.java | 10 +++ 7 files changed, 70 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/media/bean/RecordInfo.java b/src/main/java/com/genersoft/iot/vmp/media/bean/RecordInfo.java index aafc5db..3996457 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/bean/RecordInfo.java +++ b/src/main/java/com/genersoft/iot/vmp/media/bean/RecordInfo.java @@ -10,6 +10,7 @@ private String url; private long startTime; private double timeLen; + private String params; public static RecordInfo getInstance(OnRecordMp4HookParam hookParam) { RecordInfo recordInfo = new RecordInfo(); @@ -79,6 +80,14 @@ this.timeLen = timeLen; } + public String getParams() { + return params; + } + + public void setParams(String params) { + this.params = params; + } + @Override public String toString() { return "RecordInfo{" + @@ -87,6 +96,7 @@ ", 鏂囦欢澶у皬=" + fileSize + ", 寮�濮嬫椂闂�=" + startTime + ", 鏃堕暱=" + timeLen + + ", params=" + params + '}'; } } diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java index 8b8389e..738d3f8 100755 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java @@ -24,12 +24,7 @@ import com.genersoft.iot.vmp.service.redisMsg.IRedisRpcService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorage; -import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.MediaServerUtils; -import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; -import com.genersoft.iot.vmp.vmanager.bean.OtherPsSendInfo; -import com.genersoft.iot.vmp.vmanager.bean.OtherRtpSendInfo; -import com.genersoft.iot.vmp.vmanager.bean.StreamContent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -41,11 +36,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; -import javax.sip.InvalidArgumentException; -import javax.sip.SipException; -import java.text.ParseException; -import java.util.List; import java.util.Map; /** @@ -159,7 +149,7 @@ @PostMapping(value = "/on_play", produces = "application/json;charset=UTF-8") public HookResult onPlay(@RequestBody OnPlayHookParam param) { - Map<String, String> paramMap = urlParamToMap(param.getParams()); + Map<String, String> paramMap = MediaServerUtils.urlParamToMap(param.getParams()); // 瀵逛簬鎾斁娴佽繘琛岄壌鏉� boolean authenticateResult = mediaService.authenticatePlay(param.getApp(), param.getStream(), paramMap.get("callId")); if (!authenticateResult) { @@ -215,7 +205,7 @@ if (!ObjectUtils.isEmpty(mediaServer.getTranscodeSuffix()) && !"null".equalsIgnoreCase(mediaServer.getTranscodeSuffix()) && param.getStream().endsWith(mediaServer.getTranscodeSuffix()) ) { - return; + return HookResult.SUCCESS(); } if (param.getSchema().equalsIgnoreCase("rtsp")) { if (param.isRegist()) { @@ -242,7 +232,7 @@ logger.info("[ZLM HOOK]娴佹棤浜鸿鐪嬶細{}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream()); - MediaServerItem mediaInfo = mediaServerService.getOne(param.getMediaServerId()); + MediaServer mediaInfo = mediaServerService.getOne(param.getMediaServerId()); if (mediaInfo == null) { JSONObject ret = new JSONObject(); ret.put("code", 0); diff --git a/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java b/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java index df7024f..25261db 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/ICloudRecordService.java @@ -20,11 +20,6 @@ PageInfo<CloudRecordItem> getList(int page, int count, String query, String app, String stream, String startTime, String endTime, List<MediaServer> mediaServerItems, String callId); /** - * 鏍规嵁hook娑堟伅澧炲姞涓�鏉¤褰� - */ - void addRecord(OnRecordMp4HookParam param); - - /** * 鑾峰彇鎵�鏈夌殑鏃ユ湡 */ List<String> getDateList(String app, String stream, int year, int month, List<MediaServer> mediaServerItems); @@ -56,5 +51,5 @@ */ DownloadFileInfo getPlayUrlPath(Integer recordId); - List<CloudRecordItem> getAllList(String query, String app, String stream, String startTime, String endTime, List<MediaServerItem> mediaServerItems, String callId, List<Integer> ids); + List<CloudRecordItem> getAllList(String query, String app, String stream, String startTime, String endTime, List<MediaServer> mediaServerItems, String callId, List<Integer> ids); } diff --git a/src/main/java/com/genersoft/iot/vmp/service/bean/CloudRecordItem.java b/src/main/java/com/genersoft/iot/vmp/service/bean/CloudRecordItem.java index 4a6c2c3..3716d73 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/bean/CloudRecordItem.java +++ b/src/main/java/com/genersoft/iot/vmp/service/bean/CloudRecordItem.java @@ -1,7 +1,6 @@ package com.genersoft.iot.vmp.service.bean; import com.genersoft.iot.vmp.media.event.media.MediaRecordMp4Event; -import com.genersoft.iot.vmp.media.zlm.dto.hook.OnRecordMp4HookParam; import com.genersoft.iot.vmp.utils.MediaServerUtils; import java.util.Map; @@ -92,7 +91,7 @@ cloudRecordItem.setMediaServerId(param.getMediaServer().getId()); cloudRecordItem.setTimeLen((long) param.getRecordInfo().getTimeLen() * 1000); cloudRecordItem.setEndTime((param.getRecordInfo().getStartTime() + (long)param.getRecordInfo().getTimeLen()) * 1000); - Map<String, String> paramsMap = MediaServerUtils.urlParamToMap(param.getParams()); + Map<String, String> paramsMap = MediaServerUtils.urlParamToMap(param.getRecordInfo().getParams()); if (paramsMap.get("callId") != null) { cloudRecordItem.setCallId(paramsMap.get("callId")); } diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java index 9299429..a7b582d 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java @@ -5,14 +5,12 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; -import com.genersoft.iot.vmp.media.event.media.MediaRecordMp4Event; -import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils; import com.genersoft.iot.vmp.media.bean.MediaServer; -import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo; -import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; -import com.genersoft.iot.vmp.media.zlm.dto.hook.OnRecordMp4HookParam; -import com.genersoft.iot.vmp.service.ICloudRecordService; +import com.genersoft.iot.vmp.media.event.media.MediaRecordMp4Event; import com.genersoft.iot.vmp.media.service.IMediaServerService; +import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils; +import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo; +import com.genersoft.iot.vmp.service.ICloudRecordService; import com.genersoft.iot.vmp.service.bean.CloudRecordItem; import com.genersoft.iot.vmp.service.bean.DownloadFileInfo; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; @@ -41,6 +39,7 @@ @DS("share") public class CloudRecordServiceImpl implements ICloudRecordService { + private final static Logger logger = LoggerFactory.getLogger(CloudRecordServiceImpl.class); @Autowired @@ -59,7 +58,7 @@ private VideoStreamSessionManager streamSession; @Override - public PageInfo<CloudRecordItem> getList(int page, int count, String query, String app, String stream, String startTime, String endTime, List<MediaServerItem> mediaServerItems, String callId) { + public PageInfo<CloudRecordItem> getList(int page, int count, String query, String app, String stream, String startTime, String endTime, List<MediaServer> mediaServerItems, String callId) { // 寮�濮嬫椂闂村拰缁撴潫鏃堕棿鍦ㄦ暟鎹簱涓兘鏄互绉掍负鍗曚綅鐨� Long startTimeStamp = null; Long endTimeStamp = null; @@ -111,7 +110,13 @@ @EventListener public void onApplicationEvent(MediaRecordMp4Event event) { CloudRecordItem cloudRecordItem = CloudRecordItem.getInstance(event); - logger.info("[娣诲姞褰曞儚璁板綍] {}/{} 鍐呭锛歿}", event.getApp(), event.getStream(), event.getRecordInfo()); + if (ObjectUtils.isEmpty(cloudRecordItem.getCallId())) { + StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(event.getApp(), event.getStream()); + if (streamAuthorityInfo != null) { + cloudRecordItem.setCallId(streamAuthorityInfo.getCallId()); + } + } + logger.info("[娣诲姞褰曞儚璁板綍] {}/{}, callId: {}, 鍐呭锛歿}", event.getApp(), event.getStream(), cloudRecordItem.getCallId(), event.getRecordInfo()); cloudRecordServiceMapper.add(cloudRecordItem); } @@ -239,7 +244,7 @@ } @Override - public List<CloudRecordItem> getAllList(String query, String app, String stream, String startTime, String endTime, List<MediaServerItem> mediaServerItems, String callId, List<Integer> ids) { + public List<CloudRecordItem> getAllList(String query, String app, String stream, String startTime, String endTime, List<MediaServer> mediaServerItems, String callId, List<Integer> ids) { // 寮�濮嬫椂闂村拰缁撴潫鏃堕棿鍦ㄦ暟鎹簱涓兘鏄互绉掍负鍗曚綅鐨� Long startTimeStamp = null; Long endTimeStamp = null; diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java index 7070632..5f96dbe 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/MediaServiceImpl.java @@ -12,12 +12,6 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.media.bean.ResultForOnPublish; -import com.alibaba.fastjson2.JSONArray; -import com.alibaba.fastjson2.JSONObject; -import com.genersoft.iot.vmp.common.StreamInfo; -import com.genersoft.iot.vmp.conf.MediaConfig; -import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; -import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo; import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; import com.genersoft.iot.vmp.service.*; diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java index e55534d..ecf3a8d 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/cloudRecord/CloudRecordController.java @@ -75,22 +75,22 @@ if (ObjectUtils.isEmpty(month)) { month = calendar.get(Calendar.MONTH) + 1; } - List<MediaServer> mediaServerItems; + List<MediaServer> mediaServers; if (!ObjectUtils.isEmpty(mediaServerId)) { - mediaServerItems = new ArrayList<>(); - MediaServer mediaServerItem = mediaServerService.getOne(mediaServerId); - if (mediaServerItem == null) { + mediaServers = new ArrayList<>(); + MediaServer mediaServer = mediaServerService.getOne(mediaServerId); + if (mediaServer == null) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒版祦濯掍綋: " + mediaServerId); } - mediaServerItems.add(mediaServerItem); + mediaServers.add(mediaServer); } else { - mediaServerItems = mediaServerService.getAllOnlineList(); + mediaServers = mediaServerService.getAllOnlineList(); } - if (mediaServerItems.isEmpty()) { + if (mediaServers.isEmpty()) { return new ArrayList<>(); } - return cloudRecordService.getDateList(app, stream, year, month, mediaServerItems); + return cloudRecordService.getDateList(app, stream, year, month, mediaServers); } @ResponseBody @@ -120,18 +120,18 @@ logger.info("[浜戠褰曞儚] 鏌ヨ app->{}, stream->{}, mediaServerId->{}, page->{}, count->{}, startTime->{}, endTime->{}, callId->{}", app, stream, mediaServerId, page, count, startTime, endTime, callId); - List<MediaServer> mediaServerItems; + List<MediaServer> mediaServers; if (!ObjectUtils.isEmpty(mediaServerId)) { - mediaServerItems = new ArrayList<>(); - MediaServer mediaServerItem = mediaServerService.getOne(mediaServerId); - if (mediaServerItem == null) { + mediaServers = new ArrayList<>(); + MediaServer mediaServer = mediaServerService.getOne(mediaServerId); + if (mediaServer == null) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒版祦濯掍綋: " + mediaServerId); } - mediaServerItems.add(mediaServerItem); + mediaServers.add(mediaServer); } else { - mediaServerItems = mediaServerService.getAllOnlineList(); + mediaServers = mediaServerService.getAllOnlineList(); } - if (mediaServerItems.isEmpty()) { + if (mediaServers.isEmpty()) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "褰撳墠鏃犳祦濯掍綋"); } if (query != null && ObjectUtils.isEmpty(query.trim())) { @@ -152,7 +152,7 @@ if (callId != null && ObjectUtils.isEmpty(callId.trim())) { callId = null; } - return cloudRecordService.getList(page, count, query, app, stream, startTime, endTime, mediaServerItems, callId); + return cloudRecordService.getList(page, count, query, app, stream, startTime, endTime, mediaServers, callId); } @ResponseBody @@ -175,20 +175,20 @@ @RequestParam(required = false) String callId, @RequestParam(required = false) String remoteHost ){ - MediaServer mediaServerItem; + MediaServer mediaServer; if (mediaServerId == null) { - mediaServerItem = mediaServerService.getDefaultMediaServer(); + mediaServer = mediaServerService.getDefaultMediaServer(); }else { - mediaServerItem = mediaServerService.getOne(mediaServerId); + mediaServer = mediaServerService.getOne(mediaServerId); } - if (mediaServerItem == null) { + if (mediaServer == null) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒板彲鐢ㄧ殑娴佸獟浣�"); }else { if (remoteHost == null) { - remoteHost = request.getScheme() + "://" + mediaServerItem.getIp() + ":" + mediaServerItem.getRecordAssistPort(); + remoteHost = request.getScheme() + "://" + mediaServer.getIp() + ":" + mediaServer.getRecordAssistPort(); } } - return cloudRecordService.addTask(app, stream, mediaServerItem, startTime, endTime, callId, remoteHost, mediaServerId != null); + return cloudRecordService.addTask(app, stream, mediaServer, startTime, endTime, callId, remoteHost, mediaServerId != null); } @ResponseBody @@ -309,18 +309,18 @@ logger.info("[涓嬭浇鎸囧畾褰曞儚鏂囦欢鐨勫帇缂╁寘] 鏌ヨ app->{}, stream->{}, mediaServerId->{}, startTime->{}, endTime->{}, callId->{}", app, stream, mediaServerId, startTime, endTime, callId); - List<MediaServerItem> mediaServerItems; + List<MediaServer> mediaServers; if (!ObjectUtils.isEmpty(mediaServerId)) { - mediaServerItems = new ArrayList<>(); - MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId); - if (mediaServerItem == null) { + mediaServers = new ArrayList<>(); + MediaServer mediaServer = mediaServerService.getOne(mediaServerId); + if (mediaServer == null) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒版祦濯掍綋: " + mediaServerId); } - mediaServerItems.add(mediaServerItem); + mediaServers.add(mediaServer); } else { - mediaServerItems = mediaServerService.getAll(); + mediaServers = mediaServerService.getAll(); } - if (mediaServerItems.isEmpty()) { + if (mediaServers.isEmpty()) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "褰撳墠鏃犳祦濯掍綋"); } if (query != null && ObjectUtils.isEmpty(query.trim())) { @@ -344,7 +344,7 @@ if (stream != null && callId != null) { response.addHeader( "Content-Disposition", "attachment;filename=" + stream + "_" + callId + ".zip" ); } - List<CloudRecordItem> cloudRecordItemList = cloudRecordService.getAllList(query, app, stream, startTime, endTime, mediaServerItems, callId, ids); + List<CloudRecordItem> cloudRecordItemList = cloudRecordService.getAllList(query, app, stream, startTime, endTime, mediaServers, callId, ids); if (ObjectUtils.isEmpty(cloudRecordItemList)) { return; } @@ -412,18 +412,18 @@ logger.info("[浜戠褰曞儚] 鏌ヨURL app->{}, stream->{}, mediaServerId->{}, page->{}, count->{}, startTime->{}, endTime->{}, callId->{}", app, stream, mediaServerId, page, count, startTime, endTime, callId); - List<MediaServerItem> mediaServerItems; + List<MediaServer> mediaServers; if (!ObjectUtils.isEmpty(mediaServerId)) { - mediaServerItems = new ArrayList<>(); - MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId); - if (mediaServerItem == null) { + mediaServers = new ArrayList<>(); + MediaServer mediaServer = mediaServerService.getOne(mediaServerId); + if (mediaServer == null) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒版祦濯掍綋: " + mediaServerId); } - mediaServerItems.add(mediaServerItem); + mediaServers.add(mediaServer); } else { - mediaServerItems = mediaServerService.getAll(); + mediaServers = mediaServerService.getAll(); } - if (mediaServerItems.isEmpty()) { + if (mediaServers.isEmpty()) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "褰撳墠鏃犳祦濯掍綋"); } if (query != null && ObjectUtils.isEmpty(query.trim())) { @@ -444,15 +444,15 @@ if (callId != null && ObjectUtils.isEmpty(callId.trim())) { callId = null; } - MediaServerItem mediaServerItem = mediaServerService.getDefaultMediaServer(); - if (mediaServerItem == null) { + MediaServer mediaServer = mediaServerService.getDefaultMediaServer(); + if (mediaServer == null) { throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒版祦濯掍綋鑺傜偣"); } if (remoteHost == null) { remoteHost = request.getScheme() + "://" + request.getLocalAddr() + ":" + - (request.getScheme().equals("https")? mediaServerItem.getHttpSSlPort() : mediaServerItem.getHttpPort()); + (request.getScheme().equals("https")? mediaServer.getHttpSSlPort() : mediaServer.getHttpPort()); } - PageInfo<CloudRecordItem> cloudRecordItemPageInfo = cloudRecordService.getList(page, count, query, app, stream, startTime, endTime, mediaServerItems, callId); + PageInfo<CloudRecordItem> cloudRecordItemPageInfo = cloudRecordService.getList(page, count, query, app, stream, startTime, endTime, mediaServers, callId); PageInfo<CloudRecordUrl> cloudRecordUrlPageInfo = new PageInfo<>(); if (!ObjectUtils.isEmpty(cloudRecordItemPageInfo)) { cloudRecordUrlPageInfo.setPageNum(cloudRecordItemPageInfo.getPageNum()); -- Gitblit v1.8.0