Some of our products make use of LGPL builds of FFmpeg — primarily for splitting, wrapping, decoding and encoding of various compression standards, file formats and network streams. This post explains in detail how to comply with LGPL if you are using these features in your commercial software.
THIS SUMMARY IS PROVIDED AS A CONVENIENCE TO OUR CUSTOMERS. IT DOES NOT CONSTITUTE A LEGAL OPINION OR LEGAL ADVICE, AND YOU SHOULD NOT RELY ON IT AS SUCH. WE ADVISE YOU TO CONSULT YOUR OWN LEGAL COUNSEL.
THE COMMENTS IN THIS POST ARE MADE BASED SOLELY ON LGPL VERSION 2.1
. IN PREPARING THIS SUMMARY, WE USED FFMPEG'S OWN COMPLIANCE CHECKLIST
AS A STARTING POINT. What is LGPL?
LGPL, as the text of the license states it clearly in the Preamble, was specifically designed to allow the use of LGPL-licensed libraries in non-free applications: "Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library." How exactly is FFmpeg used in our software?
1. We do not modify the libraries of FFmpeg. Since our products are merely designed to be dynamically linked with the libraries of FFmpeg, we believe that all of our products fall under the definition of a "work that uses the library"
, rather than a "work based on the library"
2. Not all of FFmpeg is licensed under LGPL. We create our own LGPL builds of FFmpeg (which is why our builds do not include the x264 codec). Making your application LGPL-compliant
In order for your product to be compliant with the requirements of LGPL, we suggest that you do all of the following:
1. With regards to redistribution of FFmpeg:
- If you redistribute FFmpeg unmodified, you must accompany it with the appropriate copyright notice and disclaimer of warranty; you must retain all notices; and you must distribute a copy of the LGPL along with the file.
- If you distribute a version of FFmpeg modified by you, you must comply with all steps provided for in the previous paragraph. In addition, you must ensure that your modified file is also a library, you must include a detailed change-log, and you must not charge a royalty for the modified file.
- In either case, you must include with your distribution all of the source code for the LGPL-licensed files. If you distribute the LGPL-licensed files by electronic download, then you may offer to download the source codes from the same place where your application is distributed. It is a requirement of LGPL v.2.1 that source code is hosted on the same server. Alternatively, you may provide a written offer (which must be valid for at least three years from the date of distribution) to provide the complete source code. You must not charge any money for providing source code, except your reasonable costs (for example, mailing costs) of providing the source code.
- For your convenience, the folder found in our product's setup folder includes: a) FFmpeg's source code (in the form used to compile the DLLs in our product); b) the text of the LGPL license version 2.1; and c) compilation details (in the archive with the source codes).
2. Add the following text to every page in your website where there is a download link to your application: This software uses code of FFmpeg licensed under the LGPL version 2.1 and its source can be downloaded here.
See our own web page
as an example.
3. Mention "This software uses libraries from the FFmpeg project under the LGPL version 2.1." in the "about box" of your software.
4. Mention in your EULA that your program uses FFmpeg under the LGPL version 2.1.
5. 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.
6. Remove any prohibition of reverse engineering from your EULA.
Other important notes:
- Do not misspell FFmpeg (caps for "FF" and lowercase for "mpeg").
- Do not rename FFmpeg's DLLs.
Please also note that, although we do test whether our products work with newer versions of FFmpeg from time to time (this requirement is an important part of the LGPL license), we don't recommend replacing our own builds with newer ones simply because our own builds are being tested more thoroughly.