diff --git a/frontend/src/features/optimize/video.ts b/frontend/src/features/optimize/video.ts index d1587f5..558a57f 100644 --- a/frontend/src/features/optimize/video.ts +++ b/frontend/src/features/optimize/video.ts @@ -156,7 +156,13 @@ export async function optimizeVideo( const outputWidth = even( Math.round(sourceWidth * (outputHeight / sourceHeight)), ); - const quality = new Quality(options.qualityLevel); + // Prefer bitrate-based encoding: hardware encoders often ignore the + // per-frame quantizer that qualitative presets would otherwise use, which + // made results inconsistent (and sometimes tiny). + const quality = new Quality({ + quality: options.qualityLevel, + preferBitrate: true, + }); const candidates: VideoCodec[] = options.codec === "auto" ? CODEC_CANDIDATES[container] : [options.codec]; const preferences: ("prefer-hardware" | "no-preference")[] =