Skip to content

Question about FFmpeg --enable-nonfree in the regular MPVKit artifacts #77

Description

@yamayu-dev

Hi, first of all, thank you for maintaining MPVKit.

MPVKit has been very helpful for my macOS app. I especially appreciate that it provides a practical LGPL/non-GPL variant of libmpv for Apple platforms.

While preparing my app's license/compliance materials, I noticed something I wanted to ask about. This may simply be my misunderstanding, so please correct me if I am reading the FFmpeg requirements incorrectly.

Question

The regular MPVKit variant is documented as the LGPL/non-GPL variant, while MPVKit-GPL is the GPL variant.

When checking the FFmpeg build configuration for the regular MPVKit artifacts, I found that the FFmpeg binaries appear to include:

--enable-nonfree

and the generated config appears to contain:

CONFIG_NONFREE 1

For example:

strings Libavcodec.xcframework/macos-arm64_x86_64/Libavcodec.framework/Versions/A/Libavcodec | grep -- '--enable-nonfree'

The binaries also contain the FFmpeg license string libavcodec license: nonfree and unredistributable, which appears to be what the library would report via avcodec_license() — even though no nonfree component (such as libfdk_aac) appears to be enabled.

The build script also appears to include this flag here:

Sources/BuildScripts/XCFrameworkBuild/main.swift

Why I am asking

FFmpeg's own license/compliance documentation seems to say that redistributable LGPL/GPL builds should not use --enable-nonfree:

My current understanding is:

  • --enable-version3 is fine if the resulting FFmpeg build is intended to be LGPLv3-or-later.
  • --enable-gpl should not be used for the regular non-GPL MPVKit variant.
  • --enable-nonfree may make the resulting FFmpeg binaries non-redistributable, even if no nonfree components (e.g. libfdk_aac) are enabled.

If that understanding is correct, would it make sense to remove --enable-nonfree from the regular MPVKit FFmpeg build?

I am happy to open a small PR that removes the flag from the build script, if that would be useful. I would avoid touching release artifacts/checksums, since rebuilding and publishing those should probably stay with the maintainers.

Again, thank you for the project. I am asking carefully because MPVKit is useful and I want to make sure I am handling the licensing side correctly, not because I want to make a hostile report.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions