- ffmpeg -progress pipe:1 streams out_time_ms lines; we parse them in the reading loop so % = out_time_s / duration_s (actual encode position) - find_video_files() skips *.converting.mp4 temp files so they are never listed, uploaded, or shown in the UI Co-authored-by: Copilot <[email protected]>