648540858
2022-03-15 ea08969bfcff38b8195282c77495eb1f8bd8eb07
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
@@ -88,7 +88,7 @@
      // 获取可用的zlm
      Device device = storager.queryVideoDevice(deviceId);
      MediaServerItem newMediaServerItem = playService.getNewMediaServerItem(device);
      PlayResult playResult = playService.play(newMediaServerItem, deviceId, channelId, null, null);
      PlayResult playResult = playService.play(newMediaServerItem, deviceId, channelId, null, null, null);
      return playResult.getResult();
   }
@@ -109,27 +109,24 @@
      // 录像查询以channelId作为deviceId查询
      String key = DeferredResultHolder.CALLBACK_CMD_STOP + deviceId + channelId;
      resultHolder.put(key, uuid, result);
      Device device = storager.queryVideoDevice(deviceId);
      cmder.streamByeCmd(deviceId, channelId, (event) -> {
         StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId);
         if (streamInfo == null) {
            RequestMessage msg = new RequestMessage();
            msg.setId(uuid);
            msg.setKey(key);
            msg.setData("点播未找到");
            resultHolder.invokeAllResult(msg);
            storager.stopPlay(deviceId, channelId);
         }else {
            redisCatchStorage.stopPlay(streamInfo);
            storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
            RequestMessage msg = new RequestMessage();
            msg.setId(uuid);
            msg.setKey(key);
            //Response response = event.getResponse();
            msg.setData(String.format("success"));
            resultHolder.invokeAllResult(msg);
         }
         mediaServerService.closeRTPServer(device, channelId);
      StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId);
      if (streamInfo == null) {
         RequestMessage msg = new RequestMessage();
         msg.setId(uuid);
         msg.setKey(key);
         msg.setData("点播未找到");
         resultHolder.invokeAllResult(msg);
         storager.stopPlay(deviceId, channelId);
         return result;
      }
      cmder.streamByeCmd(deviceId, channelId, streamInfo.getStream(), null, eventResult -> {
         redisCatchStorage.stopPlay(streamInfo);
         storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
         RequestMessage msgForSuccess = new RequestMessage();
         msgForSuccess.setId(uuid);
         msgForSuccess.setKey(key);
         msgForSuccess.setData(String.format("success"));
         resultHolder.invokeAllResult(msgForSuccess);
      });
      if (deviceId != null || channelId != null) {
@@ -175,7 +172,7 @@
   public ResponseEntity<String> playConvert(@PathVariable String streamId) {
      StreamInfo streamInfo = redisCatchStorage.queryPlayByStreamId(streamId);
      if (streamInfo == null) {
         streamInfo = redisCatchStorage.queryPlaybackByStreamId(streamId);
         streamInfo = redisCatchStorage.queryPlayback(null, null, streamId, null);
      }
      if (streamInfo == null) {
         logger.warn("视频转码API调用失败!, 视频流已经停止!");
@@ -329,7 +326,7 @@
         jsonObject.put("deviceId", transaction.getDeviceId());
         jsonObject.put("channelId", transaction.getChannelId());
         jsonObject.put("ssrc", transaction.getSsrc());
         jsonObject.put("streamId", transaction.getStreamId());
         jsonObject.put("streamId", transaction.getStream());
         objects.add(jsonObject);
      }