From 557a270271372d458d5adb944473a485d47e3079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Fri, 3 Jul 2026 13:39:02 -0700 Subject: [PATCH] perf(engine): write PNG frames at compression_level 1 (#1898) Extracted video frames are render-scoped temp files read once during capture, so zlib effort above level 1 buys nothing. Measured 3.3x faster on 60s of 1080p H.264 to PNG (11.4s to 3.5s) and 5.4x on a 20s vp9-alpha webm (4.3s to 0.79s), for ~14% larger temp files. --- packages/engine/src/services/videoFrameExtractor.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/engine/src/services/videoFrameExtractor.ts b/packages/engine/src/services/videoFrameExtractor.ts index e6c4bf2ca..aa6ec9fcd 100644 --- a/packages/engine/src/services/videoFrameExtractor.ts +++ b/packages/engine/src/services/videoFrameExtractor.ts @@ -271,7 +271,8 @@ export async function extractVideoFramesRange( args.push("-vf", vfFilters.join(",")); args.push("-q:v", format === "jpg" ? String(Math.ceil((100 - quality) / 3)) : "0"); - if (format === "png") args.push("-compression_level", "6"); + // Render-scoped temp frames are read once; level 1 measured 3-5x faster for ~14% larger files. + if (format === "png") args.push("-compression_level", "1"); args.push("-y", outputPattern); return new Promise((resolve, reject) => {