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 a163655..bee8606 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 @@ -11,11 +11,11 @@ import org.bytedeco.ffmpeg.global.avcodec; import org.bytedeco.ffmpeg.global.avutil; import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.FFmpegFrameRecorder; -import org.bytedeco.javacv.FFmpegLogCallback; import org.bytedeco.javacv.FrameGrabber; import org.springframework.stereotype.Service; import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.io.OutputStream; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -48,19 +48,15 @@ public class RecordService { @SneakyThrows public void record(ServletResponse response, String url, long time) { - // response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); -// Path tmp = Path.of(System.getProperty("java.io.tmpdir"), IdUtil.getSnowflakeNextIdStr()).toAbsolutePath(); -// File file = new File(tmp + ".mp4"); -// log.info("创建文件 {}, {}", file, file.createNewFile()); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); OutputStream outputStream = response.getOutputStream(); log.info("url {}", url); - FFmpegLogCallback.set(); + // FFmpeg 调试日志 +// FFmpegLogCallback.set(); FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(url); grabber.start(); + FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(stream, grabber.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels()); -// log.info("{}", file); recorder.setInterleaved(true); recorder.setVideoOption("preset", "ultrafast"); recorder.setVideoOption("tune", "zerolatency"); @@ -104,7 +100,7 @@ public class RecordService { recorder.close(); } catch (FFmpegFrameRecorder.Exception | FrameGrabber.Exception e) { throw new RuntimeException(e); - } + } catch (IOException ignore){} log.info("结束录制"); outputStream.close();