fix: extract_frames frame_index 从 0-based 改为文件名 1-based,修复清理/自检 off-by-one 索引错位导致空白帧无法被正确删除
This commit is contained in:
@@ -132,11 +132,13 @@ def extract_frames(
|
|||||||
raise RuntimeError(f"ffmpeg 抽帧失败: {result.stderr}")
|
raise RuntimeError(f"ffmpeg 抽帧失败: {result.stderr}")
|
||||||
|
|
||||||
# 收集抽出的帧
|
# 收集抽出的帧
|
||||||
|
# frame_index 直接从文件名提取(1-based),与 ffmpeg %04d 编号一致
|
||||||
|
# 避免 enumerate 从 0 计数导致下游清理/自检的 off-by-one 索引错位
|
||||||
frames = []
|
frames = []
|
||||||
for i, f in enumerate(sorted(frames_dir.glob("frame_*.png"))):
|
for f in sorted(frames_dir.glob("frame_*.png")):
|
||||||
# 时间戳:第 i 帧就是 i 秒
|
frame_index = int(f.stem.split("_")[1]) # 1-based,与文件名编号一致
|
||||||
timestamp_ms = i * 1000
|
timestamp_ms = (frame_index - 1) * 1000 # frame_0001 → 0ms, frame_0002 → 1000ms
|
||||||
frames.append((i, timestamp_ms, f))
|
frames.append((frame_index, timestamp_ms, f))
|
||||||
|
|
||||||
return frames
|
return frames
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user