Back
Question
FFmpeg license: can we legally sell closed-source apps that use it?
I wonder if anyone has published commercial apps with ffmpeg in them. Any caveats? Does FFmpeg allow it?
We're a group of makers shipping together. We help each other stay accountable and reach our goals.
Apply for accessGo to Homepage | g h |
Go to Done Todos | g d |
Go to Questions | g q |
Compose a New Todo | n |
Go to Search | / |
Show this dialog | ? |
đź‘‹ Join WIP to participate
I've sold such a product, but I didn't bundle ffmpeg with it. I just put it in the prereqs with the version number the app needed. Have the app have a binary path config setting.
If you need to compile its sources or link statically to it, that can also be done - but there are gotchas. More details on that here: www.ffmpeg.org/legal.html
It.. sorry.. depends:
In FFmpeg, different components are covered by different licenses, primarily the LGPL (Lesser General Public License) and GPL (General Public License). Understanding which parts fall under which license is key for compliance. Here’s a more straightforward explanation:
LGPL Parts:
• Core FFmpeg Libraries: Most of FFmpeg’s core libraries, such as libavformat, libavcodec, and libavutil, are licensed under the LGPL. This means you can use these libraries in your closed-source application if you dynamically link them and follow LGPL requirements (e.g., providing attribution).
• Basic Codecs and Filters: Many standard audio and video codecs, as well as basic processing filters, fall under the LGPL. This allows you to use these components in commercial, closed-source applications with the right linking.
GPL Parts:
• Specific Codecs and Features: Some codecs, filters, or additional features in FFmpeg are licensed under the GPL. Using these parts means your entire application must be open-sourced under the GPL. Notable examples include certain high-quality encoders or advanced filters that aren’t under LGPL.
• GPL-Only Features: Features such as libx264 (for H.264 video encoding) and libx265 (for H.265/HEVC encoding) are under the GPL. If you include these in your build, your software is subject to GPL terms.
Plain Explanation:
Think of FFmpeg like a toolbox:
• The basic tools (core libraries, common codecs) are licensed under the LGPL. You can use them in your closed-source project as long as you follow the LGPL rules, like dynamic linking and attribution.
• Specialized, advanced tools (certain encoders, filters) are licensed under the GPL. If you decide to use any of these advanced tools, you must open-source your entire application under the GPL.
How to Check:
• Configuration Flags: When building FFmpeg, you can specify --enable-gpl or --disable-gpl to control whether GPL parts are included.
• Official Documentation: The FFmpeg documentation and source code headers clearly indicate which parts are under GPL or LGPL. You can find this by checking the specific codec or filter in the source code to see its license header.
Summary:
• LGPL parts: Core libraries and many basic components.
• GPL parts: Advanced codecs and filters (e.g., libx264, libx265).
My advice: either compile with setting / check what parts you use. If LGPL you can add, else keep out of your project and use it like Martijn said