How to Configure FFmpeg acrossover Frequencies

This article explains how to use and configure the acrossover audio filter in FFmpeg to split an audio stream into multiple frequency bands. You will learn the syntax for setting crossover frequencies, how the filter maps audio outputs, and practical command-line examples to implement 2-way and 3-way crossovers.

The acrossover filter in FFmpeg splits a single audio input into multiple frequency-limited output streams. This is commonly used for bi-amping, creating subwoofer channels, or processing specific frequency bands (like bass, mids, or treble) independently.

Basic Syntax

To configure the crossover frequencies, you use the split parameter. The basic syntax is:

acrossover=split='freq_1 freq_2 ... freq_n'

2-Way Crossover Example

To split an audio file into two bands—low frequencies (below 500 Hz) and high frequencies (above 500 Hz)—use the following command:

ffmpeg -i input.mp3 -filter_complex "acrossover=split=500[low][high]" -map "[low]" low.wav -map "[high]" high.wav

In this command, split=500 creates two output pads named [low] and [high]. Each output retains the original channel layout (for example, stereo remains stereo).

3-Way Crossover Example

To split audio into three bands—lows (below 500 Hz), mids (500 Hz to 3000 Hz), and highs (above 3000 Hz)—enclose the space-separated frequencies in single quotes:

ffmpeg -i input.mp3 -filter_complex "acrossover=split='500 3000'[low][mid][high]" -map "[low]" low.wav -map "[mid]" mid.wav -map "[high]" high.wav

Configuring Filter Order (Steepness)

You can control the steepness of the crossover roll-off using the order parameter.

The order parameter accepts index values that correspond to the filter’s steepness: * 0: 1st order (6 dB/octave) * 1: 2nd order (12 dB/octave) * 2: 3rd order (18 dB/octave) * 3: 4th order (24 dB/octave, default) * 9: 10th order (60 dB/octave)

To apply a 2nd-order (12 dB/octave) crossover at 1000 Hz, use:

ffmpeg -i input.mp3 -filter_complex "acrossover=split=1000:order=1[low][high]" -map "[low]" low.wav -map "[high]" high.wav