3

I would like to develop a ffmpeg filter to have an easier and better integration of the ffmpeg functionalities in case of complex command lines.

Imagine an ffmpeg command line in which you can configure a filter that will use to configure a 3rd party executable to fork and use named pipe to pass video through that external tools.

Technically I can write it, but the question is, is it legal from FFMPEG license point of view (FFMPEG can be GPL or LGPL depending of how it has been built). As far as I understand, if I have an executable called "my_video_transformation.exe" (no relationship with ffmpeg, it just read input pipe and write to output pipe)

It's ok for a user to run the following:

(FFMPEG GPL or LGPL).exe decoding_args | my_video_transformation.exe | (FFMPEG GPL or LGPL).exe encoding_args

But it's not ok if a user can run something similar to :

(FFMPEG GPL or LGPL).exe filter="my_video_transformation.exe" transcoding_args

from my understanding of https://www.gnu.org/licenses/gpl-faq.html#GPLPlugins

As soon as you write in a GPL or LGPL executable something that can fork and communicate with 3rd party and by the way maybe a commercial executable, it doesn't respect the license ?

Maybe not the correct place to ask, but would like to have some feedback before starting that project. FFMPEG dev community will reject my code proposal if it's not legal or even border line.

Regards

2
  • The traditional FSF interpretation of the GPL is that if you're only communicating by pipes or sockets then the GPL does not apply at all to the second project. Commented Sep 25, 2019 at 10:01
  • 1
    @curiousdannii: Almost. But, 1/ if you're communicating highly complicated structs or other internal implementation details, it might count as one program (the MPEG video stream would not be this, since it's just data the program has been asked to process), and 2/ this is just the FSF's opinion and would not necessarily carry any weight in a court of law. I'm not aware of legal precedent on this.
    – Kevin
    Commented Sep 25, 2019 at 22:27

1 Answer 1

2

As a rule of thumb you are fairly safe communicating via pipes, however GPLv2 does not speak of interfaces but rather of "derivative work" and this is highly complicated game that may have different output even in different countries. If your filter can only process streams coming out of and going into ffmpeg your work may be seen as a derivative work as it is not functionally independent.

Would it be out of question for you to license the filter under GPL as well?

2
  • My external executable can work without ffmpeg. But if my customer can use an ffmpeg version containing my filter, it will be definitively easier and more powerfull for them. They already use ffmpeg in combination with our executable using traditional pipe but the line to start that, become really long and complex. Commented Oct 29, 2019 at 8:08
  • In general, filter in FFMPEG are LGPVv2. Commented Oct 29, 2019 at 8:09

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.