可选是否要文件头
This commit is contained in:
parent
0e586a75bb
commit
8a7c1e7edd
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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){
|
||||
|
Loading…
Reference in New Issue
Block a user