0

I am currently building a video streaming platform for my school. Because I want to serve videos in different resolutions, I use ffmpeg-static and fluent-ffmpeg. I recently checked the licenses and found that ffmpeg-static is licensed under the GPL 3.0 license, which allows commercial use but requires that I provide my source code. In the near future I might want to distribute my software that includes ffmpeg binaries. Now my question: May I use and distribute FFmpeg? and What do you mean by making the source code available? I don't want to publish my source code as that would give anyone the opportunity to copy my work. Do I have to publish all the source code or is it ok if I only publish the files where I use ffmpeg? If that were the case, it would make a lot of things easier.

Green_Lab
  • 3
  • 1

2 Answers2

2

In this case you probably do not need to publish your code if you use ffmpeg binaries.

The ffmpeg binary code is under GPL but as you are using a staticly built binary of it does not affect the licensing of your code.

You do however need to look at the licences of ffmpeg-fluent and ffmpeg-static. These are MIT and a unique License. So use of ffmpeg-fluent is no problem but the license on ffmpeg-static is not clear. The license file on github does not name a known FLOSS license and does not make sense as it refers to binary and it does not provide binaries (The comment notes it is like BSD 3 clause), however the licence given on https://www.npmjs.com/package/ffmpeg-static is GPL. As the licence is unclear I don't think anyone can use it but having the GPL possibility - if you include ffmpeg-static then you need to release all your code.

I would look for an alternative to fffmpeg-static. Which as it just downloads ffmpeg should be possible.

mmmmmm
  • 251
  • 1
  • 8
  • ffmpeg-static seems to be a downloader tool, so it makes sense that it doesn't directly contain the binaries. I don't see any indication that ffmpeg-static would have an unusual license, could you clarify? I see a BSD-3-clause in the repository, and a GPL-3.0-or-later declared in the package.json metadata, both of which are OSI- and FSF-approved. – amon Apr 03 '22 at 20:21
  • @amon Thanks for that - so it is possible GPL - or BSD - I think that makes ffmpeg-static totally unusable – mmmmmm Apr 04 '22 at 09:02
  • Interesting, do you have any proof or something like that, because I need to make sure I that I really may use the static binaries of FFmpeg if I don't use ffmpeg-static – Green_Lab Apr 05 '22 at 19:39
  • @Green_Lab The only proof is read the license of the ffmpeg binaries - it might also help to look at the Open Source StackExchange and see re GPL and binaries and also ffmpeg – mmmmmm Apr 05 '22 at 21:23
  • @mmmmmm Ok, but doesn't it clearly say FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later? – Green_Lab Apr 05 '22 at 22:31
  • If it is like that, would it be possible to use something like https://www.npmjs.com/package/ffbinaries which is licensed under ISC? – Green_Lab Apr 05 '22 at 22:33
  • You need to look at all the licences - yes ffmpeg is under LGPL unless you include bits under GPL - but as binary only I think that is not an issue) Yes ISC would allow you to do what you want. – mmmmmm Apr 06 '22 at 08:03
  • Ok, I removed the ffmpeg-static package. Now I'm using ffbinaries to download ffmpeg and ffprobe at runtime, and execute them using fluent-ffmpeg. That complies with the licenses, right? – Green_Lab Apr 08 '22 at 19:17
1

If you don't want to publish your source code, that's absolutely fine. Just don't use any GPL licensed software as part of your code.

It's very simple: Publishing software that contains GPL licensed code is copyright infringement unless you either provide the complete source code of your software to anyone asking for it for the next three years, or if you accompany every single copy of your software that you distribute with the complete source code. In both cases the source code must also be licensed under the same GPL license.

gnasher729
  • 34,028
  • 2
  • 46
  • 88