可选是否要文件头
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.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -44,11 +45,11 @@ public class VideoController {
|
|||||||
@Operation(summary = "获取视频 (目前仅供测试)")
|
@Operation(summary = "获取视频 (目前仅供测试)")
|
||||||
@GetMapping(produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
|
@GetMapping(produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
|
||||||
@ResponseBody
|
@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()){
|
if(proxyConfig.getEnable()){
|
||||||
wvpService.video(request,response,req.getDeviceCode(), req.getStartTime(), req.getEndTime());
|
wvpService.video(request,response,req.getDeviceCode(), req.getStartTime(), req.getEndTime());
|
||||||
} else {
|
} 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 WvpProxyConfig wvpProxyConfig;
|
||||||
private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
|
private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
|
||||||
|
|
||||||
public void header(HttpServletResponse response, String fileName) {
|
public void header(HttpServletResponse response) {
|
||||||
response.setContentType("video/mp4");
|
response.setContentType("video/mp4");
|
||||||
response.setHeader("Accept-Ranges", "none");
|
response.setHeader("Accept-Ranges", "none");
|
||||||
response.setHeader("Connection", "close");
|
response.setHeader("Connection", "close");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void header(HttpServletResponse response, String fileName) {
|
||||||
|
header(response);
|
||||||
response.setHeader("Content-Disposition",
|
response.setHeader("Content-Disposition",
|
||||||
MessageFormat.format("attachment; filename=\"{0}.mp4\"",fileName));
|
MessageFormat.format("attachment; filename=\"{0}.mp4\"",fileName));
|
||||||
}
|
}
|
||||||
@ -116,15 +120,19 @@ public class Gb28181DownloadService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
@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 asyncContext = request.startAsync();
|
||||||
asyncContext.start(()->{
|
asyncContext.start(()->{
|
||||||
HttpServletResponse asyncResponse = (HttpServletResponse)asyncContext.getResponse();
|
HttpServletResponse asyncResponse = (HttpServletResponse)asyncContext.getResponse();
|
||||||
try{
|
try{
|
||||||
|
if(fileHeader){
|
||||||
header(response, StringUtils.joinWith("_",
|
header(response, StringUtils.joinWith("_",
|
||||||
deviceCode,
|
deviceCode,
|
||||||
DateUtil.format(startTime, DatePattern.PURE_DATETIME_FORMAT),
|
DateUtil.format(startTime, DatePattern.PURE_DATETIME_FORMAT),
|
||||||
DateUtil.format(endTime, DatePattern.PURE_DATETIME_FORMAT)));
|
DateUtil.format(endTime, DatePattern.PURE_DATETIME_FORMAT)));
|
||||||
|
} else {
|
||||||
|
header(response);
|
||||||
|
}
|
||||||
|
|
||||||
download(deviceCode, startTime,endTime).whenComplete((url, e)->{
|
download(deviceCode, startTime,endTime).whenComplete((url, e)->{
|
||||||
if(e != null){
|
if(e != null){
|
||||||
|
Loading…
Reference in New Issue
Block a user