First, sorry if this is a silly question. I have little experience with regards to licencing.

I have an app (commercial) in which I need to convert MP4 to MJpeg .avi so that I can use grab the frames of the video in an efficient manner (on mobile). For this I use this library: https://github.com/tanersener/mobile-ffmpeg

To execute this command: FFMPEG -i path1.mp4 -vcodec mjpeg path2.avi

And that is ALL I do with it. I do not modify the source code or anything like that. I also use the minimum version of the mobile-ffmpeg so that there are no extra external libraries (so com.arthenica:mobile-ffmpeg-min:4.4.LTS).

I am totally unsure if this is allowed, since there is just SO much going on. So far, what I can gather is:

  1. I need to attribute FFmpeg in my about dialog and on my apps store entry.
  2. I need to atrribute the FFmpeg-mobile library linked above.

I'm not sure if there is anything else that should be done, or if I'm even allowed to use this in a commercial app. (The app will be free to download, but you need to be a client of the company to use it - so it requires login details).


MobileFFMpeg is licensed under the LGPLv3 license. When using a library under that license, the requirements you have to fulfill are

  • You must inform users of your software that this library is being used and under what license it is. This would be covered by your attribution, if you also refer to the LGPL license there.

  • You must allow users of your software to replace the LGPL parts with a different version. This means you can't forbid all reverse engineering in your license.

  • You must give users of your software the means to replace the LGPL parts with a different version. Depending on how the library gets linked into the mobile app, this can mean that you have to make the object files (or even the source files) available to the users of your app.

    Even if you end up providing source code to satisfy this point, you can do so under a license that forbids everything except rebuilding the app out of it combined with the LGPL code of their choice.

| improve this answer | |
  • Thank you SO much for your feedback! I am still a bit confused about the last 2 points tough. The only way I use the library is by linking it in my build.gradle file (for android), so I dont make any changes, etc. I really do just use it to execute that one command, and this all happens in the backend of the app. The user will be unaware of it. Does that mean I have to build a UI whereby the user can change the library used to do the conversion? The app is supposed to be very simple, and most of my users will be more confused about this than anything else. – Zee Aug 5 at 12:45
  • 1
    @Zee, you don't need to support that third point from within your application. Users who want to make use of that possibility are expected to be software engineers capable of downloading the app bundle (.apk for android), unpacking the bundle, replacing the binary files that contain LGPL content and recreating an app bundle out of it. If MobileFFMpeg is stored as a separate binary within that app bundle, then there is nothing more you need to provide. Otherwise you need to provide whatever files are needed to rebuild the binary file that also contains the MobileFFMpeg code. – Bart van Ingen Schenau Aug 5 at 13:06
  • 1
    thank you again for your answers. I think then it should be ok to use, since the build.gradle file contains all you need to use the library? On the other hand, after reading your answer, I have found this xebia.com/blog/the-lgpl-on-android this guy is super convinced that its not a viable option. I'll do a bit more research on how to properly attribute the library and make sure that it complies with the points you have provided. I'm just so nervous I mess it up and then get in trouble somehow. – Zee Aug 5 at 13:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.