Add Unlicense and ship ffmpeg's GPL license in release archives
The project is now public domain under the Unlicense (LICENSE, README). The packaged archives bundle GPL ffmpeg/ffprobe builds but did not include their license. fetch_ffmpeg.py now extracts the build's LICENSE.txt into ffmpeg/LICENSE.txt, and build.py --ffmpeg-dir copies it into the archive as ffmpeg-LICENSE.txt, failing before the PyInstaller run if it can't find one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
24
README.md
24
README.md
@@ -46,8 +46,9 @@ The app looks for `ffmpeg` and `ffprobe` in this order:
|
||||
3. Your `PATH`
|
||||
|
||||
The release archives (`FFmpegWrapper-<version>-windows-x64.zip` / `-linux-x64.tar.gz`) already
|
||||
include ffmpeg and ffprobe next to the executable. If you use the bare executable, install ffmpeg
|
||||
(`sudo apt install ffmpeg`, `winget install ffmpeg`, ...) or point the app at it.
|
||||
include ffmpeg and ffprobe next to the executable, with ffmpeg's license as `ffmpeg-LICENSE.txt`.
|
||||
If you use the bare executable, install ffmpeg (`sudo apt install ffmpeg`, `winget install ffmpeg`,
|
||||
...) or point the app at it.
|
||||
|
||||
## Running from source
|
||||
|
||||
@@ -68,7 +69,7 @@ PyInstaller does not cross-compile. Build the Windows `.exe` on Windows and the
|
||||
```bash
|
||||
pip install -r requirements-dev.txt
|
||||
python build.py # -> dist/FFmpegWrapper or dist/FFmpegWrapper.exe
|
||||
python build.py --ffmpeg-dir ffmpeg/bin # also bundles ffmpeg + ffprobe into a .zip / .tar.gz
|
||||
python build.py --ffmpeg-dir ffmpeg/bin # also bundles ffmpeg + ffprobe + their license into a .zip / .tar.gz
|
||||
python scripts/smoke_test.py dist/FFmpegWrapper # optional: headless start-up check
|
||||
```
|
||||
|
||||
@@ -87,9 +88,11 @@ Forgejo Actions can run it too, but they need a Windows runner registered.
|
||||
- **PySide6 is pinned below 6.12.** PySide6 6.12.0 mis-counts references to Python's `None`
|
||||
(in `QComboBox.clear()`/`currentData()`), which crashes the app on Python 3.11. Python 3.12+ is
|
||||
not affected, but keep the pin until a fixed PySide6 ships.
|
||||
- **Licensing:** the bundled ffmpeg builds come from
|
||||
[BtbN/FFmpeg-Builds](https://github.com/BtbN/FFmpeg-Builds) and are GPL. Keep that in mind if you
|
||||
redistribute the archives.
|
||||
- **ffmpeg licensing:** the bundled ffmpeg builds come from
|
||||
[BtbN/FFmpeg-Builds](https://github.com/BtbN/FFmpeg-Builds) and are GPLv3, so their license has to
|
||||
ship with them. `scripts/fetch_ffmpeg.py` saves it as `ffmpeg/LICENSE.txt`, and
|
||||
`build.py --ffmpeg-dir` copies it into the archive as `ffmpeg-LICENSE.txt`. It looks in the ffmpeg
|
||||
folder and the folder above it, and stops with an error if the license isn't in either.
|
||||
- Settings (last options, window size, ffmpeg location) are saved per user through Qt's QSettings:
|
||||
the registry on Windows, `~/.config/ffwrap/FFmpegWrapper.conf` on Linux.
|
||||
|
||||
@@ -106,3 +109,12 @@ build.py PyInstaller build + packaging
|
||||
scripts/ fetch_ffmpeg.py, smoke_test.py, make_icon.py
|
||||
tests/ unit tests + real-ffmpeg integration tests
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
FFmpeg Wrapper is public domain, released under [the Unlicense](LICENSE). Kopimi: copy it, change
|
||||
it, share it, sell it. No permission needed.
|
||||
|
||||
That covers this project's own code. The ffmpeg and ffprobe binaries in the release archives are
|
||||
GPLv3 (license in `ffmpeg-LICENSE.txt`, source at <https://ffmpeg.org/download.html>), and the Qt
|
||||
libraries built into the executable are LGPLv3.
|
||||
|
||||
Reference in New Issue
Block a user