Boost dull video colors by API: the vibrance filter intensity

Sume's video filter allowlists vibrance, with intensity from -2 to 2 and a default of 0. A small positive value lifts muted color; a negative one mutes it.

4 min readSume
All posts

vibrance is an allowlisted filter in Video filter that boosts or alters saturation, driven by one number, intensity, from -2 to 2 with a default of 0. A positive value lifts color; a negative one pulls it back. On a brown test pixel, intensity=0.8 made the pixel more saturated in a local ffmpeg 9.0.1 run. The result is a new MP4 and the source is untouched.

Which vibrance options are worth knowing?

Options of vibrance as listed in the FFmpeg filter documentation, read 2026-10-01.
OptionWhat it does
intensity-2 to 2, default 0. Start near 0.3 to 0.8 and compare.
rbal, gbal, bbalPer-channel balance, -10 to 10, default 1 each. Push one channel harder than the others.
alternateUse alternate colors, default false.

How do I apply it?

Check the graph, then encode. Start with a modest intensity and raise it in small steps, since a large value can oversaturate. Keep the encode to a short test range first.

curl -X POST https://api.sume.com/v1/video-filter/check \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/landscape.mp4",
    "filtergraph": "vibrance=intensity=0.6"
  }'

Should I use vibrance or the eq filter?

Either is on the allowlist. eq is the general brightness, contrast and saturation filter. vibrance is the one whose own description is "boost or alter saturation". Pick one and test it on a still before committing, rather than stacking both, since two saturation boosts compound quickly.

Can I limit the boost to one section of a long video?

Not inside one filter job; the graph has no time range. Trim the section with video trim, filter that piece, and put it back with Timeline 1.0. For a hue change rather than a saturation one, see hue shift.

What does a filter job cost and where are the limits?

The docs list $0.02 per encode job, with a source of at most 300 seconds, a filtergraph of at most 2048 characters and 32 named filters. The /v1/video-filter/check route runs the same allowlist and source checks for free and returns valid and next_action; a graph that passes can still fail on the worker (bad expression, memory, time), which comes back as a structured job error.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume