From 8a7c1e7edd8b5d5cf31bef075d0409805a4ee7e0 Mon Sep 17 00:00:00 2001 From: shikong <919411476@qq.com> Date: Thu, 21 Sep 2023 14:31:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AF=E9=80=89=E6=98=AF=E5=90=A6=E8=A6=81?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wvp/api/video/VideoController.java | 5 +++-- .../gb28181/Gb28181DownloadService.java | 20 +++++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/VideoController.java b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/VideoController.java index d3e0584..c9a8790 100644 --- a/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/VideoController.java +++ b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/VideoController.java @@ -20,6 +20,7 @@ import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @Slf4j @@ -44,11 +45,11 @@ public class VideoController { @Operation(summary = "获取视频 (目前仅供测试)") @GetMapping(produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) @ResponseBody - public void video(HttpServletRequest request, HttpServletResponse response, @ParameterObject VideoReq req) { + public void video(HttpServletRequest request, HttpServletResponse response, @ParameterObject VideoReq req, @RequestParam("fileHeader") Boolean fileHeader) { if(proxyConfig.getEnable()){ wvpService.video(request,response,req.getDeviceCode(), req.getStartTime(), req.getEndTime()); } else { - gb28181DownloadService.video(request,response,req.getDeviceCode(), req.getStartTime(), req.getEndTime()); + gb28181DownloadService.video(request,response,req.getDeviceCode(), req.getStartTime(), req.getEndTime(),fileHeader); } } } 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 afffc15..78c1da0 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 @@ -75,10 +75,14 @@ public class Gb28181DownloadService { private final WvpProxyConfig wvpProxyConfig; private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); - public void header(HttpServletResponse response, String fileName) { + public void header(HttpServletResponse response) { response.setContentType("video/mp4"); response.setHeader("Accept-Ranges", "none"); response.setHeader("Connection", "close"); + } + + public void header(HttpServletResponse response, String fileName) { + header(response); response.setHeader("Content-Disposition", MessageFormat.format("attachment; filename=\"{0}.mp4\"",fileName)); } @@ -116,15 +120,19 @@ public class Gb28181DownloadService { } @SneakyThrows - public void video(HttpServletRequest request, HttpServletResponse response, String deviceCode, Date startTime, Date endTime) { + public void video(HttpServletRequest request, HttpServletResponse response, String deviceCode, Date startTime, Date endTime, Boolean fileHeader) { AsyncContext asyncContext = request.startAsync(); asyncContext.start(()->{ HttpServletResponse asyncResponse = (HttpServletResponse)asyncContext.getResponse(); try{ - header(response, StringUtils.joinWith("_", - deviceCode, - DateUtil.format(startTime, DatePattern.PURE_DATETIME_FORMAT), - DateUtil.format(endTime, DatePattern.PURE_DATETIME_FORMAT))); + if(fileHeader){ + header(response, StringUtils.joinWith("_", + deviceCode, + DateUtil.format(startTime, DatePattern.PURE_DATETIME_FORMAT), + DateUtil.format(endTime, DatePattern.PURE_DATETIME_FORMAT))); + } else { + header(response); + } download(deviceCode, startTime,endTime).whenComplete((url, e)->{ if(e != null){