FFmpeg darken video: why Sume refuses dim amount 0
A dim amount of 0 is refused: the range is above 0 up to 1, and 0 or above 1 returns video_filter_amount_out_of_range. Check the program free before you encode.

Sending amount: 0 to a Video filter dim op fails with video_filter_amount_out_of_range, because the valid range is above 0 and up to 1. If you came from ffmpeg expecting 0 to mean black, pick a small positive value instead, and note that dim only multiplies; it never brightens, so values above 1 are refused too.
Rules are from the video filter docs, read 2026-10-01. Topaz Labs' September 2026 page, read the same day, lists image workflows such as Relight Image; dim is a plain whole-clip luma multiply, not a relighting model.
What does each kind of input return?
Besides the amount, the docs give stable codes for the other mistakes ffmpeg habits tend to produce.
| Input | Result |
|---|---|
amount: 0 or above 1 | video_filter_amount_out_of_range |
vf, filter, ffmpeg, cmd, codec, crf or -i in the body | ffmpeg_fields_rejected |
| An extra key on the dim op | unsupported_filter_op_field |
An op other than dim or crop | unsupported_filter_op |
No ops[] and no filtergraph | video_filter_ops_empty |
Can I get black with dim?
Not with 0. A positive amount near 0 gets very dark, and the docs say black stays black and chroma does not shift. For a timed fade to black, that is a different job from a whole-clip multiply; see dip to black.
How do I test the value without an encode?
POST /v1/video-filter/check takes the same body as the encode and answers with diagnostics where the encode would answer 400. Nothing is queued or reserved, and no Idempotency-Key is needed. Read valid and next_action in the reply. Passing the check does not promise the encode will succeed on the worker; a runtime failure comes back as a structured job error.
Where do I read more?
The dim amount post covers the request shape, and ops run before filtergraph covers ordering.
Sources
Related posts
More in Developers
- ffmpeg filtergraph too long: video-filter's 2048 and 32 limits
A Sume video-filter filtergraph is capped at 2048 characters and 32 named filters. Past either, or with an unknown filter, you get invalid_filtergraph.
- ffmpeg filter_complex [0:v] in video-filter: refused, labels fine
Sume video-filter refuses stream specifiers like [0:v] in a filtergraph because the server wraps the input and output. Internal labels such as [a] are allowed.
- video_filter_too_many_ops: more than 8 ops, use filtergraph
Sume video-filter accepts at most 8 ops. A ninth returns video_filter_too_many_ops; move extra pixel work into the filtergraph, which has its own caps.
- unsupported_filter_op: video-filter ops are dim and crop only
In Sume video-filter, ops[].op must be dim or crop. Another name returns unsupported_filter_op; an extra key on a valid op returns unsupported_filter_op_field.
Written by Sume