/device/video.mp4 添加偏移量配置
This commit is contained in:
parent
6d1dfc6445
commit
a9eab491d5
@ -1,9 +1,11 @@
|
||||
package cn.skcks.docking.gb28181.wvp.api.video;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
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.Gb28181DeviceVideoApiConfig;
|
||||
import cn.skcks.docking.gb28181.wvp.config.SwaggerConfig;
|
||||
import cn.skcks.docking.gb28181.wvp.config.WvpProxyConfig;
|
||||
import cn.skcks.docking.gb28181.wvp.service.gb28181.Gb28181DownloadService;
|
||||
@ -24,6 +26,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Date;
|
||||
|
||||
@Slf4j
|
||||
@ -40,6 +43,8 @@ public class VideoController {
|
||||
|
||||
private final Gb28181DownloadService gb28181DownloadService;
|
||||
|
||||
private final Gb28181DeviceVideoApiConfig gb28181DeviceVideoApiConfig;
|
||||
|
||||
@Bean
|
||||
public GroupedOpenApi videoApi() {
|
||||
return SwaggerConfig.api("VideoApi", "/video");
|
||||
@ -60,8 +65,14 @@ public class VideoController {
|
||||
@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());
|
||||
long forward = gb28181DeviceVideoApiConfig.getOffset().getForward().get(ChronoUnit.MILLIS);
|
||||
long back = gb28181DeviceVideoApiConfig.getOffset().getBack().get(ChronoUnit.MILLIS);
|
||||
DateTime reqStartTime = DateUtil.date(req.getStartTime());
|
||||
DateTime reqEndTime = DateUtil.date(req.getEndTime());
|
||||
Date startTime = DateUtil.offsetMillisecond(reqStartTime, (int) -forward);
|
||||
Date endTime = DateUtil.offsetMillisecond(reqEndTime, (int) back);
|
||||
log.info("请求的时间范围 {} ~ {}", reqStartTime, reqEndTime);
|
||||
log.info("偏移后的时间范围 {} ~ {}", startTime, endTime);
|
||||
gb28181DownloadService.video(request,response,req.getDeviceCode(), startTime, endTime, req.getFileHeader());
|
||||
}
|
||||
}
|
||||
|
@ -13,11 +13,11 @@ public class VideoMp4Req {
|
||||
@Schema(description = "设备编码")
|
||||
private String deviceCode;
|
||||
|
||||
@Schema(description = "开始时间 (毫秒)",example = "1695593100207")
|
||||
@Schema(description = "开始时间 (毫秒) (proxy.gb28181.device-api.offset 可额外设置偏移量)",example = "1695593100207")
|
||||
@NotBlank(message = "开始时间 不能为空")
|
||||
private Long startTime;
|
||||
|
||||
@Schema(description = "结束时间 (毫秒)",example = "1695593190207")
|
||||
@Schema(description = "结束时间 (毫秒) (proxy.gb28181.device-api.offset 可额外设置偏移量)",example = "1695593190207")
|
||||
@NotBlank(message = "结束时间 不能为空")
|
||||
private Long endTime;
|
||||
|
||||
|
@ -0,0 +1,27 @@
|
||||
package cn.skcks.docking.gb28181.wvp.config;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "proxy.gb28181.device-api", ignoreInvalidFields = true)
|
||||
@Order(0)
|
||||
@Data
|
||||
public class Gb28181DeviceVideoApiConfig {
|
||||
private Offset offset = new Offset();
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class Offset {
|
||||
private Duration forward = Duration.of(30, ChronoUnit.SECONDS);
|
||||
private Duration back= Duration.of(0, ChronoUnit.SECONDS);
|
||||
}
|
||||
}
|
@ -66,6 +66,10 @@ proxy:
|
||||
# - 192.168.1.241
|
||||
stream-mode: tcp_passive
|
||||
use-playback-to-download: true
|
||||
device-api:
|
||||
offset:
|
||||
forward: 30s
|
||||
back: 0s
|
||||
|
||||
ffmpeg-support:
|
||||
ffmpeg: /usr/bin/ffmpeg/ffmpeg
|
||||
|
Loading…
Reference in New Issue
Block a user