fix: extract_frames frame_index 从 0-based 改为文件名 1-based,修复清理/自检 off-by-one 索引错位导致空白帧无法被正确删除

This commit is contained in:
simonkoson
2026-06-15 11:58:28 +08:00
parent 513ccb34d4
commit bf93213990
+6 -4
View File
@@ -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