How can I measure and match colour and brightness between separately generated shots using FFmpeg (signalstats, colorbalance/colorcorrect/colortemperature, normalize, colormap)?
Problem. Generated shots of the 'same' scene differ in exposure, white balance and saturation, and there is no colour chart in frame. Conditions. Two or more SDR clips decoded to the same colour space and range; a reference frame you accept as the look. Method. (1) Measure each clip. signalstats exports per-frame metadata keys such as lavfi.signalstats.YMIN and reports for Y, U, V: min, 10th-percentile (LOW), average, 90th-percentile (HIGH), max; SATMIN..SATMAX; HUEMED and HUEAVG; and YDIF/UDIF/VDIF (difference to the previous frame). Use YLOW/YAVG/YHIGH for black point, mid and white point, and SATAVG and HUEAVG for colour (values are in the file's coded range 0-255 as the doc states). The doc describes the filter as aimed at problems of digitised analog video, so use its numbers as relative comparisons only. (2) Correct. colortemperature (1000 to 40000 K, default 6500, mix, pl preserve lightness); colorcorrect (red/blue shift for shadows rl/bl and highlights rh/bh, saturation -3 t...
Structured fields
{
"citations": [
{
"url": "https://ffmpeg.org/ffmpeg-filters.html",
"note": "11.237 signalstats; 11.237 signalstats example; 11.237 signalstats; 11.30 colorcorrect; 11.30 colorcorrect; 11.183 normalize; 11.183 normalize; 11.37 colormap; 11.37 colormap; 11.40 colortemperature"
}
]
}Evidence claims
- [sourced_fact] Problem. Generated shots of the 'same' scene differ in exposure, white balance and saturation, and there is no colour chart in frame. Conditions. Two or more SDR clips decoded to the same colour space and range; a reference frame you accept as the look. Method. (1) Measure each clip. signalstats exports per-frame metadata keys such as lavfi.signalstats.YMIN and reports for Y, U, V: min, 10th-percentile (LOW), average, 90th-percentile (HIGH), max; SATMIN..SATMAX; HUEMED and HUEAVG; and YDIF/UDIF/VDIF (difference to the previous frame). Use YLOW/YAVG/YHIGH for black point, mid and white point, and SATAVG and HUEAVG for colour (values are in the file's coded range 0-255 as the doc states). The doc describes the filter as aimed at problems of digitised analog video, so use its numbers as relative comparisons only. (2) Correct. colortemperature (1000 to 40000 K, default 6500, mix, pl preserve lightness); colorcorrect (red/blue shift for shadows rl/bl and highlights rh/bh, saturation -3 to 3, operates in YUV; analyze average, minmax or median derives parameters per frame); colorbalance, curves, eq for finer control. (3) normalize stretches each RGB channel to an output range; independence 0.0 keeps hue (linked) and 1.0 shifts colour per channel (removes casts); smoothing averages the range over previous frames to reduce flicker caused by bright or dark objects entering. (4) colormap maps source patches to target patches using three input streams and at most 64 patches, which suits a chart; with no chart, patches could be cropped from reference and target frames of the same scene area [inference, not in the doc]. (5) Re-measure after correction and compare to the reference, then review by eye on a calibrated display. Failure modes. [inference] matching average values across different content (a face close-up versus a wide sky) biases the result, so compare like regions; per-frame analysis modes (colorcorrect analyze, normalize without smoothing) can pump brightness over a clip; matching two clips that sit on different gamma tags gives wrong numbers (C3-B586-05/06). Limitations. I ran none of this; the method sequence is my inference built from the option lists. Version/date. FFmpeg docs 2026-10-23. · locator: 11.237 signalstats; 11.237 signalstats example; 11.237 signalstats; 11.30 colorcorrect; 11.30 colorcorrect; 11.183 normalize; 11.183 normalize; 11.37 colormap; 11.37 colormap; 11.40 colortemperature source
Rights
| component | license | hosting | redistribution | modification | training | Evidence and notes |
|---|---|---|---|---|---|---|
| documentation | unknown | permitted | permitted | unknown | unknown | Applies to this original summary only, not to the cited sources. |