crossfeed

Watch on youtube.com
doc

https://ffmpeg.org/ffmpeg-filters.html#crossfeed

This filter is not available on ffmpeg 3.x.

The description in the official documentation:

Apply headphone crossfeed filter.

Crossfeed is the process of blending the left and right channels of stereo audio recording. It is mainly used to reduce extreme stereo separation of low frequencies.

The intent is to produce more speaker like sound to the listener.

The filter accepts the following options:

  • strength

    Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1. This sets gain of low shelf filter for side part of stereo image. Default is -6dB. Max allowed is -30db when strength is set to 1.

  • range

    Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1. This sets cut off frequency of low shelf filter. Default is cut off near 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.

  • level_in

    Set input gain. Default is 0.9.

  • level_out

    Set output gain. Default is 1.

see also

bs2b, stereowiden, extrastereo

To arbitrarily create targets that show significant differences due to “crossfeed”, I think it is easy to use acrossover and pan. See changing the mixing amount for each frequency band.

Each segment of the uploaded video was created with the following script:

#! /bin/sh
#
# crossfeed and acrossover can be used in ffmpeg 4.1+.
ffmpeg411="/c/Program Files/ffmpeg-4.1.1-win64-shared/bin/ffmpeg"

#
"${ffmpeg411}" -y -filter_complex "
amovie='input.mp4'
,acrossover=split='110|220|880|1500'[ab0_0][ab1_0][ab2_0][ab3_0][ab4_0];
[ab0_0]aformat=channel_layouts=stereo[ab0];
[ab1_0]aformat=channel_layouts=stereo[ab1];
[ab2_0]aformat=channel_layouts=stereo[ab2];
[ab3_0]aformat=channel_layouts=stereo[ab3];
[ab4_0]aformat=channel_layouts=stereo[ab4];
[ab0][ab1][ab2][ab3][ab4]amerge=5[sm];
[sm]pan='stereo|
c0 < 0.0 * c0 + 2.2 * c2 + 0.0 * c4 + 1.4 * c6 + 1.0 * c8
|
c1 < 2.2 * c1 + 0.0 * c3 + 1.4 * c5 + 0.0 * c7 + 1.0 * c9'
,volume=3
,crossfeed=strength=0.2:range=0.5
,asplit=2[out1],channelsplit[a1][a2];
[a1]showcqt=s=1600x360,crop=1280:360:0,setsar=1[v1];
[a2]showcqt=s=1600x360,crop=1280:360:0,setsar=1,vflip[v2];
[v1][v2]vstack
[out0]
" -map '[out0]' -map '[out1]' output.mp4