TransWikia.com

Is FDK-AAC still better than FFmpeg's native AAC encoder?

Super User Asked on December 18, 2020

I wrote this about a year ago while working through my own way trying to compile a FFmpeg for Windows, based on the premise in the FFmpeg wiki that:

The Fraunhofer FDK AAC codec library. This is currently the highest-quality AAC encoder available with ffmpeg. Requires ffmpeg to be configured with –enable-libfdk-aac (and additionally –enable-nonfree if you’re also using –enable-gpl).

and…

The native FFmpeg AAC encoder. This is currently the second highest-quality AAC encoder available in FFmpeg and does not require an external library like the other AAC encoders described here. This is the default AAC encoder.

However, recently attempting to build FFmpeg with the media-autobuild_suite showed the following when presented with the FDK-AAC build option:

Build FDK-AAC library and binary? [AAC-LC/HE/HEv2 codec]
1 = Yes
2 = No

Note: FFmpeg's aac encoder is no longer experimental and considered equal or
better in quality from 96kbps and above. It still doesn't support AAC-HE/HEv2
so if you need that or want better quality at lower bitrates than 96kbps,
use FDK-AAC.

However, this third-party tool is the only reference I can find to the claim that FFmpeg’s default AAC encoder is now superior to FDK-AAC, and the relevant FFmpeg wiki page itself remains unchanged. Is this true, and if so, what was the source for this information?

One Answer

FDK is better, and the original claim was dubious

There have not been many improvements to the native FFmpeg AAC encoder since the flurry of activity in 2015-2016. The biggest change since then is use the fast coder as the default in early 2018.

Blind test results

The best way find out which is better is by personally performing a rigorous, blind test. Some recent examples:

AAC ABX test
Source: Personal Listening Test of AAC-LC and xHE-AAC at 96kbps and 128kbps by Kamedo2 (2020-09-12)

Another AAC ABX test
Source: Personal Blind Listening Test of AAC at 128 kbps (six encoders & 105 samples) by guruboolez (2020-10-17)

As you can see both listeners on average rated FDK better than FFmpeg AAC. However, keep in mind that:

  • these guys are audiophiles and are very familiar with the source content.
  • the average listener may not be able to tell a difference.
  • the graphs may look like there could be a huge difference but the difference may actually be subtle (but I didn't try it myself).
  • quality is subjective: you'll have to compare them yourself to decide.

When to use FDK-AAC

  • If AAC quality is the most important factor.
  • If you need AAC-HE/HEv2 as FFmpeg AAC is only AAC-LC.
  • You don't mind compiling ffmpeg (For those not aware libfdk_aac is considered non-free and not compatible with the GPL, so you won't find many pre-built ffmpeg with libfdk_aac support. So that is why you must compile.)

FFmpeg AAC: Probably Good Enough

Personally, for MP4 video files I often just use the native FFmpeg AAC encoder because it's good enough to me for most consumer content; most of which is being watched on phones anyway (horizontal video in portrait mode of course) with the viewer half occupied by texting, Instagram, and cat photos.

Just give a somewhat higher bitrate compared to libfdk_aac.

The source of this claim

The source was originally on the FFmpeg Codecs Documentation for the AAC encoder. If I recall correctly is was made by one of the developers who greatly improved the encoder. It was probably a result of enthusiasm and unintentional bias mixed with a small testing sample size (I'm sympathetic as I've made similar mistakes not related to this topic).

The claim was removed in 2020-05.

Correct answer by llogan on December 18, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP