From 32ece84209bd474ff25bca856dc10ed2c90579cc Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 26 Feb 2026 10:26:52 -0500 Subject: [PATCH] Fix high framerate preview playback --- src/video/ffmpeg.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/video/ffmpeg.rs b/src/video/ffmpeg.rs index a1b24c8..90aeb7d 100644 --- a/src/video/ffmpeg.rs +++ b/src/video/ffmpeg.rs @@ -273,7 +273,7 @@ pub async fn generate_preview_clip(input_file: &str, output_file: &str) -> Resul let interval = duration / segment_count as f64; let vf = format!( - "select='lt(mod(t,{:.4}),1)',setpts=N/FRAME_RATE/TB,scale=-2:480", + "select='lt(mod(t,{:.4}),1)',setpts=N/30/TB,scale=-2:480", interval ); let af = format!( @@ -285,6 +285,10 @@ pub async fn generate_preview_clip(input_file: &str, output_file: &str) -> Resul cmd.args(["-af", &af]); } + // Force 30fps output so high-framerate sources (60fps) don't play back + // at double speed due to select/setpts timestamp mismatches. + cmd.args(["-r", "30"]); + // Use NVENC for encoding when available, otherwise fall back to libx264 if use_nvenc { cmd.args(["-c:v", "h264_nvenc", "-preset", "p4", "-cq:v", "28"]);