How to Use FFmpeg bs2b Filter for Bauer Spatial Processing
This guide explains how to use the bs2b (Bauer
stereophonic-to-binaural) audio filter in FFmpeg to apply Bauer spatial
processing. You will learn how the filter works, how to check if your
FFmpeg installation supports it, and the exact command-line syntax and
parameters required to apply crossfeed to your audio files for an
improved headphone listening experience.
What is Bauer Spatial Processing (bs2b)?
Bauer spatial processing is a crossfeed DSP (Digital Signal Processing) effect designed for headphone listening. Standard stereo tracks are mixed for playback on loudspeakers, where both ears hear sound from both speakers. When listening through headphones, the extreme channel separation can cause acoustic unnaturalness and listener fatigue.
The bs2b filter blends the left and right channels with
a slight delay and frequency attenuation, mimicking how human ears
naturally perceive sound from physical speakers.
Verifying FFmpeg Support
To use the bs2b filter, your FFmpeg build must be
compiled with the --enable-libbs2b flag. You can check if
your version supports the filter by running the following command in
your terminal:
ffmpeg -filters | grep bs2bIf the output lists bs2b, the filter is available for
use.
Basic Command Syntax
To apply the default Bauer spatial processing to an audio file, use
the -af (audio filter) flag followed by
bs2b:
ffmpeg -i input.mp3 -af bs2b output.mp3Advanced Configuration and Presets
The bs2b filter allows you to customize the crossfeed
behavior using specific parameters: profile,
fcut, and feed.
1. Using Built-in Profiles
Instead of manually configuring frequencies, you can use pre-defined profiles designed to mimic popular hardware crossfeed circuits:
- default: The standard Bauer default settings (700 Hz cut-off, 6.0 dB feed).
- cmoy: Chu Moy’s popular pocket amplifier circuit settings (700 Hz cut-off, 4.5 dB feed).
- jmeier: Jan Meier’s corda amplifier circuit settings (650 Hz cut-off, 9.5 dB feed).
To apply a specific profile, use the profile
parameter:
ffmpeg -i input.wav -af bs2b=profile=jmeier output.wav2. Custom Parameters
If you want to fine-tune the spatial effect, you can manually set the cut-off frequency and feed level:
- fcut: Sets the cut-off frequency in Hz. The allowed
range is
260to2000(default is700). - feed: Sets the feed level in tenths of a decibel
(dB). The allowed range is
10to150(default is60, which equals 6.0 dB).
To apply a custom setup (for example, a cut-off of 750 Hz and a feed level of 5.5 dB):
ffmpeg -i input.flac -af bs2b=fcut=750:feed=55 output.flac