I want FFmpeg to aggressively low-pass at 3 kHz. I want it to have a steep roll-off like the asupercut filter has, but that filter's lower limit is 20 kHz. I am currently using lowpass=f=3000 but its roll-off is only 6dB per pole per octave.

I tried adjusting this SO answer to make the aiir work for my needs (Elliptic low-pass filter, 4th order, 44100 sample rate, 3000 cutoff, -20 SB-Ripple), but it seems that it cut off 100% of audio:

ffplay -f lavfi -i "anoisesrc=c=white:r=44100,aiir=k=10.53638136565713:z=0.9999999999999998 -2.8782637298317333 3.9742891127529063 -2.8782637298317333 1:p=0.5212735585286095 -2.3160136067193133 4.005745544194825 -3.190098679980193 1:f=tf:r=d,showspectrum"

How do I use FFmpeg to aggressively low-pass 3 kHz?

1 Answer 1


Look at 'sinc' filter documentation to generate IR stream and 'afir' filter documentation to apply it on input stream audio. Within 'sinc' filter parameters attenuation can be changed from default 120 dB to lower or higher, and also it can be made min-phase filter instead of default linear one. Note that you also need to disable default IR normalization in 'afir' filter.

For 'aiir' filter you need to put correct numbers in correct order within option arguments, also do not mix 'z' and 'p' options.

Example with sinc & afir:

ffplay -f lavfi -i "anoisesrc=c=white:r=44100[a];sinc=lp=3000:r=44100:att=150[ir];[a][ir]afir=irnorm=-1,showspectrum"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.