Files
TalkEdit/FFmpeg_COMPLIANCE.md

3.5 KiB

FFmpeg Compliance Checklist

Purpose: quick, practical checklist to ensure your TalkEdit distribution complies with FFmpeg licensing and packaging requirements.

  1. Choose the FFmpeg build strategy
  • Prefer an LGPL-only build (no GPL-only encoders) for minimal obligations.
  • If you require GPL encoders (x264/x265/fdk-aac), document the decision and prepare to comply with GPL obligations.
  1. Linking vs external binary
  • Prefer spawning an external ffmpeg binary from Rust (invoke process) rather than statically linking FFmpeg into your app.
  • If you link or bundle as a library, treat it as a third-party component and follow license terms strictly.
  1. Bundling binary in installers
  • If bundling ffmpeg binaries in installers, include the appropriate license files (COPYING.LGPL, COPYING.GPL) in the installer and app About/Legal.
  • Include a plain-language notice in the installer/readme that explains which codecs/encoders are present and any implications.
  1. Source & build-info disclosure
  • For GPL components, you must provide access to the corresponding source or provide a written offer. Record the exact FFmpeg commit/configure flags used.
  • Add a third_party/ffmpeg/BUILD_INFO.txt in the repo (or in release artifacts) containing:
    • FFmpeg git commit or version
    • configure flags used
    • date and builder identity (automated CI username)
    • link to the exact source tarball or repo snapshot
  1. Make GPL components opt-in
  • Default distribution: ship LGPL-only binary or no binary and invoke system ffmpeg when available.
  • Offer an optional "codec pack" download or advanced installer that includes GPL encoders; make users explicitly accept terms before download.
  1. Patent/licensing notice for codecs
  • Add a short note in the README/installer explaining that certain codecs (H.264/AAC) may be patent-encumbered and that distributors may require separate licensing.
  1. Platform-specific recommendations
  • Linux: Prefer calling system FFmpeg (packaged by distro) or instruct users to install via package manager. If bundling, consider AppImage guidance.
  • macOS: Prefer Homebrew/optional download; if bundling, include license files and sign/ notarize appropriately.
  • Windows: If shipping ffmpeg.exe, include license files and a link to the source/build info; include checksums for shipped binaries.
  1. Build automation & compliance artifacts
  • Add a CI step that builds or fetches the FFmpeg binary, captures ffmpeg -buildconf, and writes BUILD_INFO.txt into the release artifacts.
  • Produce a LICENSES folder in each installer containing FFmpeg license text and any third-party license texts used by your chosen build.
  1. User-visible legal UI
  • Add an About > Legal pane listing third-party components and linked license files.
  • If downloading binaries on first run, show an explicit notice with a link to license and source information and require an OK from the user.
  1. Pre-release legal checklist
  • Verify whether chosen build enables GPL libraries; if yes, prepare source or written offer before publishing.
  • Ensure installer contains license files and links to source/build-info.
  • Add a short FAQ entry about codec patents and user options.

Notes & Next Steps

  • This checklist is practical guidance, not legal advice. For final release compliance, consult legal counsel experienced in open-source licensing.
  • I can add a small CI script snippet that records ffmpeg -buildconf and uploads BUILD_INFO.txt to release assets — tell me which CI you use and I'll draft it.