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 bs2b

If 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.mp3

Advanced 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:

To apply a specific profile, use the profile parameter:

ffmpeg -i input.wav -af bs2b=profile=jmeier output.wav

2. Custom Parameters

If you want to fine-tune the spatial effect, you can manually set the cut-off frequency and feed level:

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