Skip to content

Commit cc2d5de

Browse files
nathanmdanBreakthrough
authored andcommitted
fix: update progress bar accuracy for VFR
1 parent fdd077a commit cc2d5de

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

scenedetect/scene_manager.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,7 @@ def detect_scenes(
571571
)
572572
decode_thread.start()
573573
frame_im = None
574+
prev_position = None
574575

575576
logger.info("Detecting scenes...")
576577
try:
@@ -581,13 +582,22 @@ def detect_scenes(
581582
if next_frame is not None:
582583
frame_im = next_frame
583584
assert frame_im is not None
585+
if prev_position is None:
586+
prev_position = self._start_pos
587+
assert prev_position is not None
584588
new_cuts = self._process_frame(position, frame_im, callback)
585589
if progress_bar is not None:
586590
if new_cuts:
587591
progress_bar.set_description(
588592
PROGRESS_BAR_DESCRIPTION % len(self._cutting_list), refresh=False
589593
)
590-
progress_bar.update(1 + frame_skip)
594+
# Increment progress bar by delta of position.frame_num instead of 1
595+
# to handle VFR video where frame count is an approximation.
596+
# First frame increments by 1 as base case.
597+
delta_pos = position.frame_num - prev_position.frame_num
598+
is_first_frame = position.frame_num == 0
599+
progress_bar.update((1 if is_first_frame else delta_pos) + frame_skip)
600+
prev_position = position
591601
finally:
592602
if progress_bar is not None:
593603
progress_bar.set_description(

0 commit comments

Comments
 (0)