FFmpeg:License
lastmod 2018-10-31created 2016-02-052 edits
Legal issues are a constant source of questions and confusion. This is an attempt to clarify the most important issues. The usual disclaimers apply, this is not legal advice.
FFmpeg License
FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later. However, FFmpeg incorporates several optional parts and optimizations that are covered by the GNU General Public License (GPL) version 2 or later. If those parts get used the GPL applies to all of FFmpeg.
Read the license texts to learn how this affects programs built on top of FFmpeg or reusing FFmpeg. You may also wish to have a look at the GPL FAQ.
Note that FFmpeg is not available under any other licensing terms, especially not proprietary/commercial ones, not even in exchange for payment.
License Compliance Checklist
The following is a checklist for LGPL compliance when linking against the FFmpeg libraries. It is not the only way to comply with the license, but we think it is the easiest. There are also a few items that are not really related to LGPL compliance but are good ideas anyway.
- Compile FFmpeg without "--enable-gpl" and without "--enable-nonfree".
- Use dynamic linking (on windows, this means linking to dlls) for linking with FFmpeg libraries.
- Distribute the source code of FFmpeg, no matter if you modified it or not.
- Make sure the source code corresponds exactly to the library binaries you are distributing.
- Run the command "git diff > changes.diff" in the root directory of the FFmpeg source code to create a file with only the changes.
- Explain how you compiled FFmpeg, for example the configure line, in a text file added to the root directory of the source code.
- Use tarball or a zip file for distributing the source code.
- Host the FFmpeg source code on the same webserver as the binary you are distributing.
- Add "This software uses code of <a href=http://ffmpeg.org>FFmpeg</a> licensed under the <a href=http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>LGPLv2.1</a> and its source can be downloaded <a href=link_to_your_sources>here</a>" to every page in your website where there is a download link to your application.
- Mention "This software uses libraries from the FFmpeg project under the LGPLv2.1" in your program "about box".
- Mention in your EULA that your program uses FFmpeg under the LGPLv2.1.
- If your EULA claims ownership over the code, you have to explicitly mention that you do not own FFmpeg, and where the relevant owners can be found.
- Remove any prohibition of reverse engineering from your EULA.
- Apply the same changes to all translations of your EULA.
- Do not misspell FFmpeg (two capitals F and lowercase "mpeg").
- Do not rename FFmpeg dlls to some obfuscated name, but adding a suffix or prefix is fine (renaming "avcodec.dll" to "MyProgDec.dll" is not fine, but to "avcodec-MyProg.dll" is).
- Go through all the items again for any LGPL external library you compiled into FFmpeg (for example LAME).
- Make sure your program is not using any GPL libraries (notably libx264).
Korean translation
The following is an LGPL compliance checklist for linking with the FFmpeg libraries. It is not the only way to comply with the license, but we think it is the easiest.
Some items are not related to LGPL compliance but are good ideas (for following the guide).
- Do not include the
--enable-gpland--enable-nonfreeflags when compiling FFmpeg. - Use dynamic linking to link with the FFmpeg libraries. (
.dllon Windows,.soon Linux) - Distribute the FFmpeg source code whether or not you modified it.
- Make sure the source code exactly matches the library binaries you are distributing.
- Run the
git diff > changes.diffcommand in the root directory of the FFmpeg source code to create a diff file. - Explain how you compiled FFmpeg in a text file added to the root directory of the source code. (For example, the configure command-line flags)
- Use a tarball or zip file to distribute the source code.
- Host the FFmpeg source code on the same web server as the binary you distribute.
- Add the following to every page of your website that has a download link for the source code and application. <syntaxhighlight lang="html>
This software uses code of <a href=http://ffmpeg.org>FFmpeg</a> licensed under the <a href=http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>LGPLv2.1</a> and its source can be downloaded <a href=link_to_your_sources>here</a>
</syntaxhighlight>- Add the following to your program's About Box.
"This software uses libraries from the FFmpeg project under the LGPLv2.1" - State in your EULA that your program uses FFmpeg under the LGPLv2.1.
- If your EULA claims ownership over the code, it must state that you do not own FFmpeg and explicitly make it possible to find the relevant owners.
- If your EULA contains a prohibition of reverse engineering, remove it.
- Apply the same changes to all translations of your EULA.
- Do not mistype FFmpeg (two capital F's and lowercase "mpeg").
- Do not rename the FFmpeg libraries (DLLs) to obfuscated names; adding a suffix or prefix is fine. (For example, do not rename "avcodec.dll" to "MyProgDec.dll"; change it to "avcodec-MyProg.dll" instead)
- Review all items again for every LGPL external library compiled into FFmpeg (e.g. LAME).
- Make sure your program is not using any GPL libraries (notably libx264).