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 b55b25c..3016498 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 @@ -69,11 +69,15 @@ public class RecordService { scheduledExecutorService.schedule(() -> { log.info("到达超时时间, 结束录制"); record.set(false); - }, timeout, TimeUnit.SECONDS); - + }, timeout * 2, TimeUnit.SECONDS); + long maxTime = TimeUnit.SECONDS.toMicros(timeout); try { Frame frame; - while (record.get() && (frame = grabber.grab()) != null) { + while (!recorder.isCloseOutputStream() && record.get() && (frame = grabber.grab()) != null) { + long micros = TimeUnit.MICROSECONDS.toMicros(recorder.getTimestamp()); + if(micros >= maxTime){ + break; + } recorder.record(frame); } grabber.close();