From 95ed66293532268a26970d3c06795641999e0712 Mon Sep 17 00:00:00 2001 From: 64850858 <648540858@qq.com> Date: 星期一, 26 七月 2021 17:22:40 +0800 Subject: [PATCH] 修复stream-none-reader-delay-ms为-1时不自动关闭流 --- src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java | 30 ++++++++++++++++-------------- 1 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java index aae9cce..a5a94a9 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java @@ -2,13 +2,12 @@ import com.alibaba.fastjson.JSONArray; import com.genersoft.iot.vmp.common.StreamInfo; +import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction; import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager; -import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; -import com.genersoft.iot.vmp.media.zlm.dto.IMediaServerItem; import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; @@ -37,7 +36,7 @@ import com.genersoft.iot.vmp.storager.IVideoManagerStorager; import org.springframework.web.context.request.async.DeferredResult; -import java.util.Enumeration; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -89,7 +88,7 @@ // 鑾峰彇鍙敤鐨剒lm Device device = storager.queryVideoDevice(deviceId); - IMediaServerItem newMediaServerItem = playService.getNewMediaServerItem(device); + MediaServerItem newMediaServerItem = playService.getNewMediaServerItem(device); PlayResult playResult = playService.play(newMediaServerItem, deviceId, channelId, null, null); return playResult.getResult(); @@ -169,12 +168,15 @@ }) @PostMapping("/convert/{streamId}") public ResponseEntity<String> playConvert(@PathVariable String streamId) { - StreamInfo streamInfo = streamId.startsWith("gb_play_") ? redisCatchStorage.queryPlayByStreamId(streamId) : redisCatchStorage.queryPlaybackByStreamId(streamId); + StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId); + if (streamInfo == null) { + streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId); + } if (streamInfo == null) { logger.warn("瑙嗛杞爜API璋冪敤澶辫触锛�, 瑙嗛娴佸凡缁忓仠姝�!"); return new ResponseEntity<String>("鏈壘鍒拌棰戞祦淇℃伅, 瑙嗛娴佸彲鑳藉凡缁忓仠姝�", HttpStatus.OK); } - IMediaServerItem mediaInfo = mediaServerService.getOne(streamInfo.getMediaServerId()); + MediaServerItem mediaInfo = mediaServerService.getOne(streamInfo.getMediaServerId()); JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaInfo, streamId); if (!rtpInfo.getBoolean("exist")) { logger.warn("瑙嗛杞爜API璋冪敤澶辫触锛�, 瑙嗛娴佸凡鍋滄鎺ㄦ祦!"); @@ -219,7 +221,7 @@ result.put("msg", "mediaServerId is null"); return new ResponseEntity<String>( result.toJSONString(), HttpStatus.BAD_REQUEST); } - IMediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId); + MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId); if (mediaInfo == null) { result.put("code", 0); result.put("msg", "浣跨敤鐨勬祦濯掍綋宸茬粡鍋滄杩愯"); @@ -307,16 +309,16 @@ logger.debug("鑾峰彇鎵�鏈夌殑ssrc"); } JSONArray objects = new JSONArray(); - for(Map.Entry<String, String> entry: streamSession.getSsrcMap().entrySet()) { - System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); + List<SsrcTransaction> allSsrc = streamSession.getAllSsrc(); + for (SsrcTransaction transaction : allSsrc) { JSONObject jsonObject = new JSONObject(); - String[] keyArray = entry.getKey().split("_"); - jsonObject.put("deviceId", keyArray[0]); - jsonObject.put("channelId", keyArray[1]); - jsonObject.put("ssrc", entry.getValue()); - jsonObject.put("streamId", streamSession.getStreamIdMap().get(entry.getKey())); + jsonObject.put("deviceId", transaction.getDeviceId()); + jsonObject.put("channelId", transaction.getChannelId()); + jsonObject.put("ssrc", transaction.getSsrc()); + jsonObject.put("streamId", transaction.getStreamId()); objects.add(jsonObject); } + WVPResult<JSONObject> result = new WVPResult<>(); result.setCode(0); result.setMsg("success"); -- Gitblit v1.8.0