From 6d1dfc6445a0ae1a38e196d9994cc23a9c0f00ce Mon Sep 17 00:00:00 2001 From: shikong <919411476@qq.com> Date: Mon, 9 Oct 2023 16:03:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E4=B8=8B=E8=BD=BD=E6=8E=A5=E5=8F=A3=20/devic?= =?UTF-8?q?e/video.mp4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wvp/api/video/VideoController.java | 15 ++++++++++- .../wvp/api/video/dto/VideoMp4Req.java | 26 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/dto/VideoMp4Req.java 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 3e8ca39..4dfb558 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 @@ -1,6 +1,8 @@ package cn.skcks.docking.gb28181.wvp.api.video; +import cn.hutool.core.date.DateUtil; import cn.skcks.docking.gb28181.media.config.ZlmMediaConfig; +import cn.skcks.docking.gb28181.wvp.api.video.dto.VideoMp4Req; import cn.skcks.docking.gb28181.wvp.api.video.dto.VideoReq; import cn.skcks.docking.gb28181.wvp.config.SwaggerConfig; import cn.skcks.docking.gb28181.wvp.config.WvpProxyConfig; @@ -22,6 +24,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.Date; + @Slf4j @Tag(name = "视频api") @Controller @@ -41,7 +45,7 @@ public class VideoController { return SwaggerConfig.api("VideoApi", "/video"); } - @Operation(summary = "获取视频 (目前仅供测试)") + @Operation(summary = "获取视频 (返回视频流)") @GetMapping(produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) @ResponseBody public void video(HttpServletRequest request, HttpServletResponse response, @ParameterObject VideoReq req) { @@ -51,4 +55,13 @@ public class VideoController { gb28181DownloadService.video(request,response,req.getDeviceCode(), req.getStartTime(), req.getEndTime(), req.getFileHeader()); } } + + @Operation(summary = "获取视频 (返回视频流)") + @GetMapping(value = "/device/video.mp4",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) + @ResponseBody + public void video(HttpServletRequest request, HttpServletResponse response, @ParameterObject VideoMp4Req req) { + Date startTime = DateUtil.date(req.getStartTime()); + Date endTime = DateUtil.date(req.getEndTime()); + gb28181DownloadService.video(request,response,req.getDeviceCode(), startTime, endTime, req.getFileHeader()); + } } diff --git a/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/dto/VideoMp4Req.java b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/dto/VideoMp4Req.java new file mode 100644 index 0000000..416d663 --- /dev/null +++ b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/dto/VideoMp4Req.java @@ -0,0 +1,26 @@ +package cn.skcks.docking.gb28181.wvp.api.video.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@Data +public class VideoMp4Req { + + @NotBlank(message = "设备编码 不能为空") + @Schema(description = "设备编码") + private String deviceCode; + + @Schema(description = "开始时间 (毫秒)",example = "1695593100207") + @NotBlank(message = "开始时间 不能为空") + private Long startTime; + + @Schema(description = "结束时间 (毫秒)",example = "1695593190207") + @NotBlank(message = "结束时间 不能为空") + private Long endTime; + + @Schema(description = "http 头是否需要文件名 (没有文件名时浏览器会试图直接播放,会导致短时间内重复访问同一设备,导致失败)") + private Boolean fileHeader = true; +}