diff --git a/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/RecordController.java b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/RecordController.java index 210d359..ddaea82 100644 --- a/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/RecordController.java +++ b/gb28181-wvp-proxy-api/src/main/java/cn/skcks/docking/gb28181/wvp/api/video/RecordController.java @@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.*; public class RecordController { private final RecordService recordService; - @Operation(summary = "返回文件下载 http 头信息",description = "禁止多线程下载, 默认文件名为 record.flv") + @Operation(summary = "返回文件下载 http 头信息",description = "禁止多线程下载, 默认文件名为 record.mp4") @RequestMapping(method = {RequestMethod.HEAD,RequestMethod.OPTIONS}) public void record(HttpServletResponse response){ recordService.header(response); diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/video/RecordService.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/video/RecordService.java index 382af32..269e7ce 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/video/RecordService.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/video/RecordService.java @@ -30,10 +30,10 @@ public class RecordService { * @param response HttpServletResponse 响应 */ public void header(HttpServletResponse response) { - response.setContentType("video/x-flv"); + response.setContentType("video/mp4"); response.setHeader("Accept-Ranges", "none"); response.setHeader("Connection", "close"); - response.setHeader("Content-Disposition","attachment; filename=\"record.flv\""); + response.setHeader("Content-Disposition","attachment; filename=\"record.mp4\""); } /** @@ -82,6 +82,7 @@ public class RecordService { recorder.setFrameRate(grabber.getFrameRate()); recorder.setSampleRate(grabber.getSampleRate()); recorder.setOption("flvflags", "no_duration_filesize"); + recorder.setOption("movflags","frag_keyframe+empty_moov"); if (grabber.getAudioChannels() > 0) { recorder.setAudioChannels(grabber.getAudioChannels()); recorder.setAudioBitrate(grabber.getAudioBitrate()); @@ -92,7 +93,7 @@ public class RecordService { recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P); // 视频源数据yuv recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC); // 设置音频压缩方式 - recorder.setFormat("flv"); + recorder.setFormat("mp4"); recorder.setVideoOption("threads", String.valueOf(Runtime.getRuntime().availableProcessors())); // 解码线程数 recorder.start(grabber.getFormatContext()); log.info("开始录制 {}", url);