File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 (
You can’t perform that action at this time.
0 commit comments