Adjust Crossfeed Level and Cutoff in FFmpeg
The FFmpeg crossfeed audio filter reduces channel
separation on headphone listening by feeding low frequencies from one
channel to the other, creating a more natural speaker-like soundstage.
This article covers how to configure the crossfeed amount and frequency
range using the native crossfeed filter parameters, as well
as using the alternative bs2b filter when explicit
frequency values in Hertz are required.
Understanding the
crossfeed Parameters
FFmpeg's built-in crossfeed filter controls crossfeed
intensity and frequency filtering using two primary floating-point
options that range from 0.0 to 1.0:
strength(ors): Controls the crossfeed mixing level. Setting this to0.0disables crossfeed, while1.0produces maximum blending across channels. The default value is0.5.range(orr): Adjusts the frequency cutoff and soundstage range. Lower values allow higher frequencies to bleed through to the opposite channel, whereas higher values restrict the crossfeed strictly to lower bass frequencies. The default value is0.5.
Additional optional parameters include level_in (input
gain, default 0.9) and level_out (output gain,
default 1.0) to help prevent clipping caused by channel
summing.
Basic Command Syntax
To apply the crossfeed filter with specific values, use
the -af (audio filter) flag:
ffmpeg -i input.wav -af "crossfeed=strength=0.6:range=0.4" output.wavYou can also use positional arguments instead of naming the parameters:
ffmpeg -i input.wav -af "crossfeed=0.6:0.4" output.wavIn this example, the crossfeed strength is set to 0.6
and the frequency cutoff range is set to 0.4.
Using
Specific Cutoff Frequencies with the bs2b Filter
The native crossfeed filter abstracts frequency values
into the range scale (0.0 to
1.0). If your workflow requires setting a specific cutoff
frequency in Hertz (Hz) alongside a defined decibel feed level, use
FFmpeg's bs2b (Bauer stereophonic-to-binaural) filter
instead:
fcut: Cutoff frequency in Hz (typically between 300 and 2000 Hz; default is 700 Hz).feed: Feed level in tenths of a decibel (dB) (typically between 10 and 150; default is 45, which equals 4.5 dB).
Example using exact frequency and feed values:
ffmpeg -i input.wav -af "bs2b=fcut=650:feed=60" output.wavThis sets the low-pass cutoff directly at 650 Hz with a 6.0 dB crossfeed level.