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