How to Use FFmpeg Monochrome Filter for Custom B&W

This guide explains how to use FFmpeg's dedicated monochrome video filter to transform standard color footage into customized black and white imagery. By manipulating key filter options—specifically color balance offsets, effect intensity, and highlight retention—you can simulate traditional optical lens filters, craft cinematic film styles, and establish distinct visual presets directly from the command line.

Understanding the monochrome Filter

The FFmpeg monochrome filter converts video frames to grayscale based on chrominance and luminance interactions rather than merely desaturating the image. The filter accepts four primary parameters:

  • cb: Sets the blue-difference color balance offset. Accepts floating-point values from -1.0 to 1.0 (default is 0.0). Negative values darken blue spectrums, while positive values lighten them.
  • cr: Sets the red-difference color balance offset. Accepts floating-point values from -1.0 to 1.0 (default is 0.0). Adjusting this shifts the tonal response of red and skin tones.
  • size: Controls the effect area and transition steepness. Accepts values from 0.1 to 10.0 (default is 1.0).
  • high: Sets highlight preservation and threshold blending. Accepts values from 0.0 to 1.0 (default is 0.0). Higher values prevent bright areas from blowing out or clipping prematurely.

Basic Command Syntax

The standard implementation applies the filter via the -vf (video filter) flag:

ffmpeg -i input.mp4 -vf "monochrome=cb=0.0:cr=0.0:size=1.0:high=0.0" -c:a copy output.mp4

Custom Black and White Profiles

By combining different values for cb, cr, size, and high, you can create specific photographic profiles.

1. Dramatic Landscape (Red Filter Simulation)

In traditional black and white photography, a red filter darkens blue skies and foliage while making clouds and warm highlights pop. To achieve this look, increase cr and lower cb:

ffmpeg -i input.mp4 -vf "monochrome=cr=0.5:cb=-0.4:size=1.2:high=0.2" -c:a copy landscape_bw.mp4

2. Smooth Portrait (Yellow/Orange Filter Simulation)

To smooth skin tones, reduce blemishes, and keep mid-tone transitions soft without harsh contrasts, boost red slightly and preserve highlights:

ffmpeg -i input.mp4 -vf "monochrome=cr=0.25:cb=-0.1:size=0.8:high=0.4" -c:a copy portrait_bw.mp4

3. Deep Foliage and Contrast (Green Filter Simulation)

A green-biased look darkens skin tones and brightens vegetation, creating an earthy, vintage tone. This is simulated by driving both red and blue downward:

ffmpeg -i input.mp4 -vf "monochrome=cr=-0.3:cb=-0.3:size=1.0:high=0.1" -c:a copy green_tone_bw.mp4

4. High-Key / Soft Monochrome

For scenes requiring bright, dreamy visuals with minimal deep shadows, reduce the effect size and maximize highlight retention:

ffmpeg -i input.mp4 -vf "monochrome=cr=0.0:cb=0.0:size=0.5:high=0.8" -c:a copy high_key_bw.mp4

5. High-Contrast Noir

To create aggressive, dark shadows with stark white highlights suitable for a classic film noir look, expand the size parameter while setting high to zero:

ffmpeg -i input.mp4 -vf "monochrome=cr=0.2:cb=-0.3:size=2.5:high=0.0" -c:a copy noir_bw.mp4

Chaining with Exposure Controls

To refine a custom profile further, chain the monochrome filter with the eq filter to fine-tune final brightness, contrast, or gamma:

ffmpeg -i input.mp4 -vf "monochrome=cr=0.4:cb=-0.2:size=1.5:high=0.1,eq=contrast=1.15:brightness=-0.02" -c:v libx264 -crf 18 -c:a copy custom_profile.mp4

Testing small increments of 0.1 on cb and cr allows you to dial in the precise tonal separation required for your source material.