From bf93213990bf545975b7336d1f07ff932acb903e Mon Sep 17 00:00:00 2001 From: simonkoson <28867558@qq.com> Date: Mon, 15 Jun 2026 11:58:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20extract=5Fframes=20frame=5Findex=20?= =?UTF-8?q?=E4=BB=8E=200-based=20=E6=94=B9=E4=B8=BA=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D=201-based,=E4=BF=AE=E5=A4=8D=E6=B8=85=E7=90=86/?= =?UTF-8?q?=E8=87=AA=E6=A3=80=20off-by-one=20=E7=B4=A2=E5=BC=95=E9=94=99?= =?UTF-8?q?=E4=BD=8D=E5=AF=BC=E8=87=B4=E7=A9=BA=E7=99=BD=E5=B8=A7=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E8=A2=AB=E6=AD=A3=E7=A1=AE=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doco/src/doco/video_split.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/doco/src/doco/video_split.py b/doco/src/doco/video_split.py index 68fc4ed..0411d11 100644 --- a/doco/src/doco/video_split.py +++ b/doco/src/doco/video_split.py @@ -132,11 +132,13 @@ def extract_frames( raise RuntimeError(f"ffmpeg 抽帧失败: {result.stderr}") # 收集抽出的帧 + # frame_index 直接从文件名提取(1-based),与 ffmpeg %04d 编号一致 + # 避免 enumerate 从 0 计数导致下游清理/自检的 off-by-one 索引错位 frames = [] - for i, f in enumerate(sorted(frames_dir.glob("frame_*.png"))): - # 时间戳:第 i 帧就是 i 秒 - timestamp_ms = i * 1000 - frames.append((i, timestamp_ms, f)) + for f in sorted(frames_dir.glob("frame_*.png")): + frame_index = int(f.stem.split("_")[1]) # 1-based,与文件名编号一致 + timestamp_ms = (frame_index - 1) * 1000 # frame_0001 → 0ms, frame_0002 → 1000ms + frames.append((frame_index, timestamp_ms, f)) return frames