Run:
ffmpeg -hide_banner -h encoder=libfdk_aac
If you have an FFmpeg version that does not include libfdk_aac, you will see this:
Codec 'libfdk_aac' is not recognized by FFmpeg.
If you have a build that includes libfdk_aac you will see this:
Encoder libfdk_aac [Fraunhofer FDK AAC]:
General capabilities: delay small
Threading capabilities: none
Supported sample rates: 96000 88200 64000 48000 44100 32000 24000 22050 16000 12000 11025 8000
Supported sample formats: s16
Supported channel layouts: mono stereo 3.0 4.0 5.0 5.1 7.1(wide) 7.1
libfdk_aac AVOptions:
-afterburner <int> E...A...... Afterburner (improved quality) (from 0 to 1) (default 1)
-eld_sbr <int> E...A...... Enable SBR for ELD (for SBR in other configurations, use the -profile parameter) (from 0 to 1) (default 0)
-eld_v2 <int> E...A...... Enable ELDv2 (LD-MPS extension for ELD stereo signals) (from 0 to 1) (default 0)
-signaling <int> E...A...... SBR/PS signaling style (from -1 to 2) (default default)
default -1 E...A...... Choose signaling implicitly (explicit hierarchical by default, implicit if global header is disabled)
implicit 0 E...A...... Implicit backwards compatible signaling
explicit_sbr 1 E...A...... Explicit SBR, implicit PS signaling
explicit_hierarchical 2 E...A...... Explicit hierarchical signaling
-latm <int> E...A...... Output LATM/LOAS encapsulated data (from 0 to 1) (default 0)
-header_period <int> E...A...... StreamMuxConfig and PCE repetition period (in frames) (from 0 to 65535) (default 0)
-vbr <int> E...A...... VBR mode (1-5) (from 0 to 5) (default 0)
FFmpeg supports two AAC-LC encoders (aac and libfdk_aac) and one HE-AAC (v1/2) encoder (libfdk_aac). The license of libfdk_aac is not compatible with GPL, so the GPL does not permit distribution of binaries containing incompatible code when GPL-licensed code is also included. Therefore this encoder have been designated as "non-free", and you cannot download a pre-built ffmpeg that supports it. This can be resolved by compiling ffmpeg yourself.
I setup a clean install of Windows 10 in a VM and run https://github.com/m-ab-s/media-autobuild_suite
ffmpeg -i input.wav -ac 2 -c:a libfdk_aac -cutoff 20000 -afterburner 1 -vbr 0 output.m4a
-ac 2
Downmix to a stereo track
-c:a libfdk_aac
Use Fraunhofer FDK AAC (libfdk_aac).
-cutoff 20000
libfdk_aac defaults to a low-pass filter of around 14kHz. 20000 is the maximum available.
-afterburner 1
Afterburner is "a type of analysis by synthesis algorithm which increases the audio quality but also the required processing power." Fraunhofer recommends to always activate this feature. 1
= On and 0
= Off.
-vbr 0
- Setting VBR (variable bitrate) to 0 means libfdk_aac will try to set the maximum available CBR (constant bitrate) for the stream. This results in the best theoretical quality no matter if you choose VBR or CBR. This will increase the filesize though.
When I leave out the cutoff in the VBR@5 command above, the output is definitely worse 🤔
That's weird indeed. I compiled in March or so, so all should be relatively recent: