FFmpeg Execution + Progress

Run ffmpeg subprocess commands with a progress bar and optional callback.

run_ffmpeg_with_progress


def run_ffmpeg_with_progress(
    cmd:List, # The ffmpeg command and arguments
    total_duration:Optional=None, # Total duration in seconds for a determinate bar, else indeterminate
    description:str='Processing', # Description text for the progress bar
    verbose:bool=False, # If True, prints detailed ffmpeg output
    progress_callback:Optional=None, # Optional callback receiving current progress in seconds
)->None: # Raises FileNotFoundError or subprocess.CalledProcessError on failure

Run an ffmpeg command with a progress bar.


parse_progress_line


def parse_progress_line(
    line:str, # A line of stderr output from ffmpeg
)->Optional: # Current time in seconds, or None if the line has no progress info

Parse a progress line from ffmpeg stderr output.

assert parse_progress_line("out_time_ms=1000000") == 1.0
assert parse_progress_line("time=00:00:02.50") == 2.5
assert parse_progress_line("frame=10") is None
assert parse_progress_line("garbage") is None
print("progress parsing OK")