diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java index e7a2e48..ff76ae2 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/gb28181/Gb28181DownloadService.java @@ -222,7 +222,7 @@ public class Gb28181DownloadService { }); } - download(deviceCode, startTime, endTime, useDownload).whenComplete((videoInfo, e) -> { + download(deviceCode, startTime, endTime, useDownload).whenCompleteAsync((videoInfo, e) -> { writeFileHeader(response, deviceCode, startTime, endTime, fileHeader); log.info("videoInfo {}", videoInfo); if (e != null) { @@ -230,6 +230,7 @@ public class Gb28181DownloadService { } else if (videoInfo == null) { writeErrorToResponse(asyncResponse, JsonResponse.error("下载失败")); } else if (wvpProxyConfig.getUseFfmpeg()) { + log.info("开始 ffmpeg 录制, deviceCode {}, startTime {}, endTime {}", deviceCode, DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime)); executor.execute(()-> { videoService.ffmpegRecord(asyncResponse, videoInfo.getUrl(), DateUtil.between(startTime, endTime, DateUnit.SECOND), videoInfo.getDevice(), videoInfo.getCallId()); @@ -240,7 +241,7 @@ public class Gb28181DownloadService { } else { videoService.javaCVrecord(asyncResponse, videoInfo.getUrl(), DateUtil.between(startTime, endTime, DateUnit.SECOND) + 15); } - }); + }, executor); } catch(Exception e) { writeErrorToResponse(asyncResponse, JsonResponse.error(e.getMessage())); } finally { @@ -370,13 +371,14 @@ public class Gb28181DownloadService { DateTime start = DateUtil.date(); HttpServletResponse asyncResponse = (HttpServletResponse)asyncContext.getResponse(); try{ - download(deviceCode, startTime,endTime).whenComplete((videoInfo, e)->{ + download(deviceCode, startTime,endTime).whenCompleteAsync((videoInfo, e)->{ streamHeader(asyncResponse); if(e != null){ writeErrorToResponse(asyncResponse, JsonResponse.error(e.getMessage())); } else if(videoInfo == null){ writeErrorToResponse(asyncResponse, JsonResponse.error("下载失败")); } else if(wvpProxyConfig.getUseFfmpeg()){ + log.info("开始 ffmpeg 录制, deviceCode {}, startTime {}, endTime {}", deviceCode, DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime)); executor.execute(()->{ videoService.ffmpegRecord(asyncResponse, videoInfo.getUrl(), DateUtil.between(startTime,endTime,DateUnit.SECOND),videoInfo.getDevice(),videoInfo.getCallId()); @@ -387,7 +389,7 @@ public class Gb28181DownloadService { } else { videoService.javaCVrecord(asyncResponse, videoInfo.getUrl(), DateUtil.between(startTime,endTime,DateUnit.SECOND) + 15); } - }); + }, executor); } catch(Exception e) { writeErrorToResponse(asyncResponse, JsonResponse.error(e.getMessage()));