From the FFmpeg's Encode/AAC page:

The licenses of libaacplus, libfaac, and libfdk_aac are not compatible with the GPL, so the GPL does not permit distribution of binaries containing code licensed under these licenses when GPL-licensed code is also included. Therefore these encoders have been designated as "non-free", and you cannot download a pre-built ffmpeg that supports them. This can be resolved by compiling ffmpeg yourself.

I can see that the downloaded binary (for windows at least) is compiled with --enable-gpl and includes libx264, which is an example of piece licensed by the GPL (though it seems that x264's license is GPLv2 and ffmpeg is GPLv3 - not sure about the implications). This leads me to think that no software can be distributed in the binary form if it uses both x264 AND the all-powerful Fraunhofer FDK AAC Encoder, for example.

However, that does not seem to be the case. Handbrake binary contains both (in a static build), and FFmpeg HI does as well.

What am I missing?

An update (2016-03-06):

Unfortunately due to circumstances beyond our control we can no longer include binary distributions of HandBrake which include the FDK-AAC encoder. Please also be aware that if you are distributing any previous 0.10.x you must cease doing so now due to licensing issues. Handbrake: News, from Feb 11, 2016

1 Answer 1


This is a messy situation created by software patents.

GPLv3 has anti-patent clauses; it explicitly forbids the licensor from using software patents to sue or limit the freedoms of licensees. This is an important difference between GPLv3 and GPLv2, the latter which does not mention patents.

Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.


However, libfdk_aac is under a license that does not grant a patent license. Users are required to obtain a patent license separately, if they haven't done so already.


NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE. Fraunhofer provides no warranty of patent non-infringement with respect to this software.

You may use this FDK AAC Codec software or modifications thereto only for purposes that are authorized by appropriate patent licenses.


This is why the two licenses are incompatible. Media formats are often patent-encumbered, which is a problem that affects projects like FFmpeg, a big collection of incompatible codecs. This is why FFmpeg themselves generally refrain from distributing binaries at all, and give you options to compile a legal subset of their software for your own use (e.g. --enable-gpl).

How can Handbrake/FFmpeg HI distribute binaries?

Good question. While some projects like FFmpeg HI probably operate in a legal grey area, there are situations where software patents are not an issue, which probably describes what Handbrake is doing1:

  • The applicability of software patents globally is very uneven. Unlike copyright which is virtually consistent across the whole world, software patents either aren't recognised or are very limited in many places, such as the EU. Handbrake is hosted in France, so if you are also located somewhere that doesn't recognise software patents and download Handbrake, neither you nor Handbrake are affected by them.
  • You probably already have a patent license for those codecs, because they are subsidised by your OS and/or hardware vendor, like Microsoft, Apple or Google (Android). Part of the money you paid for your devices went to patent holders. This also explains why many free software projects have historically suffered from poor codec choice; because these projects (e.g. FFmpeg, Linux, Firefox) are freely distributed, they cannot guarantee that their users have the required patent licenses, whereas someone distributing, say, OS X software can assume their users have licenses for the HE-AAC format via Apple's CoreAudio.

1: Actually, Handbrake were unaware of the licensing incompatibility, and have removed libfdk_aac. Thanks for the update.

  • 1
    wikipedia: "The US patents on LC-AAC have expired." ffmpeg: "When compatibility with hardware players does matter then use libmp3lame or ac3 in a MP4/MKV container when libfdk_aac isn't available." Fraunhofer FDK AAC in FFmpeg: "The most commonly desired add-on to FFmpeg is the GPLed x264 library"
    – milahu
    Nov 15, 2023 at 13:23
  • i was wondering "why is there no libfdk_aac runtime plugin for ffmpeg?" - [FFmpeg-devel] Load FDK AAC at run-time: "dynamic loading in a way that works across operating systems without opening security holes is very tricky to do from a library. For example, Windows by default loads libraries from the current working directory, which is a security concern."
    – milahu
    Nov 16, 2023 at 7:23
  • a "libfdk_aac runtime plugin for ffmpeg" is possible with an external standalone fdk_aac executable, similar to Piping Sox and FFMPEG together. with this, i can avoid building ffmpeg from source, which takes about 1 hour on my old laptop. both binaries (ffmpeg and fdkaac) can be installed separately, and combined on runtime, and the GPL license can go crying : )
    – milahu
    Nov 16, 2023 at 8:42
  • example for a ffmpeg | fdkaac pipe: ffmpeg -hide_banner -i src.ac3 -ar 48K -f wav - | fdkaac -b 128k - -o dst.aac
    – milahu
    Nov 19, 2023 at 17:46

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.