Video recording presets for Spectacle

Apr 8, 2026 min read

I want the ability to configure the encoding preferences for video recordings in Spectacle. This is useful for users who want to optimize for file size, quality, or speed. I also want to be able to benchmark the different encoding preferences to actually see the difference in file size and quality.

Spectacle Settings UI

Users can now explicitly set a Max frame rate (defaulting to 30 fps) and choose an Encoding preference (Balanced, Highest Quality, Fast, or Smallest Size).

KPipeWire Backend

I refactored the backend to ensure that these preferences are actually respected by all encoders

Benchmarks

To allow benchmarking I added cli options to Spectacle for running headless recordings with varying encoders, frame rates and presets.

The results of my testing across 48 combinations show the impact of these presets (10-second recordings):

FormatPreset10 FPS60 FPS120 FPS
vp9balanced125.9 KiB460.4 KiB473.3 KiB
vp9quality169.8 KiB491.9 KiB495.7 KiB
vp9speed195.2 KiB568.5 KiB573.3 KiB
vp9size159.8 KiB312.8 KiB444.9 KiB
h264balanced110.7 KiB408.1 KiB415.6 KiB
h264quality118.7 KiB433.1 KiB438.5 KiB
h264speed119.8 KiB446.2 KiB437.7 KiB
h264size210.7 KiB460.9 KiB468.6 KiB
webpbalanced8.69 MiB29.37 MiB29.86 MiB
webpquality8.35 MiB30.19 MiB31.32 MiB
webpspeed15.94 MiB42.60 MiB41.22 MiB
webpsize8.40 MiB31.67 MiB32.90 MiB
gifbalanced425.6 KiB635.7 KiB616.3 KiB
gifquality14.44 MiB48.22 MiB51.51 MiB
gifspeed356.1 KiB499.5 KiB433.4 KiB
gifsize392.8 KiB537.2 KiB496.3 KiB