Thanks to visit codestin.com
Credit goes to github.com

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions