I'm developing a proprietary app that will mainly use a dynamically linked execute a GPL-licensed FFmpeg binary.

I'm wondering if I can design the app in a way that it downloads the binary dependency from a public server either automatically or by clicking on a button, instead of making the users download it by themselves off the internet?

Would this infringe the GPL license?

  • I'm slightly confused by your question. You mention a binary, but linking is normally a thing for libraries. Does your proprietary program link to a GPLed library, or execute a GPLed binary?
    – MadHatter
    Commented Jan 7, 2022 at 20:58
  • Sorry about the confusion. The app will execute a GPLed binary in a shell-like manner.
    – Darkstep
    Commented Jan 7, 2022 at 21:16
  • I've seen the exact same idea with FFmpeg already done in practice quite a few times, it should be ok.
    – Alejandro
    Commented Jan 10, 2022 at 12:12

3 Answers 3


You could, but I wouldn't bother. Your application invokes a GPLed binary via fork-and-exec, and as we have written many times here (example), that means it's likely a separate work for GPL purposes. So shipping a copy of ffmpeg with your binary won't oblige you to release your binary under GPL, and it will ensure you can control the version that people get, and where it gets installed (so your binary can find it).

It's true that you will have GPL obligations in respect of the binary you're shipping, but they're not terribly onerous, and to my mind much outweigh the support liabilities of pointing people off to a separate website to install the GPL binary, with all the many slips that can come between that cup and the user's lip.

  • 10
    +1 Either you have a derivative work or you don't. If you don't, you don't need to bother with this. If you do, this won't help you. Commented Jan 9, 2022 at 1:36
  • 2
    @DavidSchwartz: If one had a program which downloaded a GPL application and then linked itself into the binary, the only way the program as distributed could be regarded as a "derivative work" would be if it included copyrightable content from the GPL application. The recipient of the application might produce a derivative work, but GPL places no restriction upon the formation of derivative works that are not distributed.
    – supercat
    Commented Jan 9, 2022 at 17:32
  • 3
    @supercat Just because you download part of your program separately doesn't mean it isn't a derivative work. Nor does it necessarily mean it is. Commented Jan 9, 2022 at 18:29
  • 4
    @Deduplicator: That's irrelevant. What matters is whether the portion that you distribute is a derivative work, not the program as a whole. The GPL only restricts distribution rights.
    – Kevin
    Commented Jan 9, 2022 at 19:04
  • 3
    I think a number of interesting points are being made here, but I submit that this comments field is not the place for them. If anyone thinks they have a specific, substantive question to ask, I beg them to ask it as a new question in its own right, and to have the debate there. (Terse translation: if you try to continue this thread here, I will delete your comments.)
    – MadHatter
    Commented Jan 9, 2022 at 19:54

You can easily create an installer which first downloads and installs the GPL-licensed binary and then installs your own proprietary app.

Your question is similar to the one answered here: Best way to include GPL-licensed code in an MIT-licensed library and the answer seems to apply to your problem.

  • Your first sentence sounds a bit like you are saying the order of the downloads matters (GPL app first, then proprietary). Is that indeed what you mean?
    – marcelm
    Commented Jan 9, 2022 at 10:36
  • @marcelm There is no legal reason for that, just a practical one (the proprietary app will know at the time when it is installed if and where the GPL app is installed). Commented Jan 9, 2022 at 11:29
  • Ok, fair enough!
    – marcelm
    Commented Jan 9, 2022 at 11:37

You probably need to ask a lawyer.

I recommend having some documented way to be able, in your application, to change the binary path (or the download URL) of that FFmpeg binary.

Consider contacting the FSF and/or the FFmpeg authors.

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.