PyAV
PyAV copied to clipboard
Clarification about PyAV license?
Overview
License file of PyAV is advertised as BSD3; however, as in conda-forge it is packaged directly with (non-free) version of FFMPEG, shouldn't the binaries should be advertised as GPL license as well?
Expected behavior
Whilst the codebase is and can be BSD3 licensed, it should be noted for the user that installation of the binaries makes the entire package GPL-licensed.
For example, conda-forge FFMPEG is clearly marked as being GPL as a binary in their feedstock. OpenCV on another hand has a note in their license file that user takes responsibility for non-free FFMPEG as it's redistributed with it's packages.
Actual behavior
Licensing is at the moment mentioned in the license file linked above, in the docs, and conda-forge/pypi feedstocks respectively. There is no mentioning of a usage of non-free FFMPEG, or GPL license.
When submitting bug report, I found the mention in the collection script (see output bellow), but I think it should be clearly marked in the repo/feedstocks as well.
PyAV v8.0.3
git origin: [email protected]:PyAV-Org/PyAV
git commit: unknown-commit
[ ... ]
library license: GPL version 2 or later
libavcodec 58. 54.100
[ ... ]
Investigation
FFMPEG the is mostly, LGPL (thus allowing dynamic linking without license change), but FFMPEG built in conda-forge (and the one that is installed by default when one installs pyav from the conda-forge), is built with --enable-gpl flag set, making it GPL license (see here for details) that does not allow dynamic linking.
As PyAV links to the GPL version of FFMPEG, unless I misunderstand the way PyAV links to FFMPEG, that the binaries should be advertised as such, either in the repository directly (see opencv example above as an option) or in the pypi/conda-forge directly.
I have done the following:
- [x] Checked the PyAV documentation
- [x] Searched on Google
- [x] Searched on Stack Overflow
- [x] Looked through old GitHub issues
I also like what opencv does in its PyPI README (https://pypi.org/project/opencv-python/):
## Licensing
Opencv-python package (scripts in this repository) is available under MIT license.
OpenCV itself is available under Apache 2 license.
Third party package licenses are at LICENSE-3RD-PARTY.txt.
All wheels ship with FFmpeg licensed under the LGPLv2.1.
Non-headless Linux and MacOS wheels ship with Qt 5 licensed under the LGPLv3.
The packages include also other binaries. Full list of licenses can be found from LICENSE-3RD-PARTY.txt.
Unpacking a PyAV wheel shows that lots of third-party libraries are included, but there's no license info for them in the wheel or in the README:
% unzip av-8.0.3-cp39-cp39-manylinux2010_i686.whl
Archive: av-8.0.3-cp39-cp39-manylinux2010_i686.whl
inflating: av/__main__.py
inflating: av/stream.cpython-39-i386-linux-gnu.so
inflating: av/descriptor.cpython-39-i386-linux-gnu.so
inflating: av/packet.cpython-39-i386-linux-gnu.so
inflating: av/dictionary.cpython-39-i386-linux-gnu.so
inflating: av/error.cpython-39-i386-linux-gnu.so
inflating: av/plane.cpython-39-i386-linux-gnu.so
inflating: av/option.cpython-39-i386-linux-gnu.so
inflating: av/frame.cpython-39-i386-linux-gnu.so
inflating: av/format.cpython-39-i386-linux-gnu.so
inflating: av/_core.cpython-39-i386-linux-gnu.so
inflating: av/buffer.cpython-39-i386-linux-gnu.so
inflating: av/utils.cpython-39-i386-linux-gnu.so
inflating: av/deprecation.py
inflating: av/logging.cpython-39-i386-linux-gnu.so
inflating: av/bytesource.cpython-39-i386-linux-gnu.so
inflating: av/__init__.py
inflating: av/enum.cpython-39-i386-linux-gnu.so
inflating: av/datasets.py
inflating: av/subtitles/stream.cpython-39-i386-linux-gnu.so
inflating: av/subtitles/subtitle.cpython-39-i386-linux-gnu.so
inflating: av/subtitles/codeccontext.cpython-39-i386-linux-gnu.so
inflating: av/subtitles/__init__.py
inflating: av/data/stream.cpython-39-i386-linux-gnu.so
inflating: av/data/__init__.py
inflating: av/filter/context.cpython-39-i386-linux-gnu.so
inflating: av/filter/pad.cpython-39-i386-linux-gnu.so
inflating: av/filter/filter.cpython-39-i386-linux-gnu.so
inflating: av/filter/graph.cpython-39-i386-linux-gnu.so
inflating: av/filter/link.cpython-39-i386-linux-gnu.so
inflating: av/filter/__init__.py
inflating: av/sidedata/motionvectors.cpython-39-i386-linux-gnu.so
inflating: av/sidedata/sidedata.cpython-39-i386-linux-gnu.so
inflating: av/sidedata/__init__.py
inflating: av/codec/codec.cpython-39-i386-linux-gnu.so
inflating: av/codec/context.cpython-39-i386-linux-gnu.so
inflating: av/codec/__init__.py
inflating: av/video/reformatter.cpython-39-i386-linux-gnu.so
inflating: av/video/stream.cpython-39-i386-linux-gnu.so
inflating: av/video/plane.cpython-39-i386-linux-gnu.so
inflating: av/video/frame.cpython-39-i386-linux-gnu.so
inflating: av/video/format.cpython-39-i386-linux-gnu.so
inflating: av/video/codeccontext.cpython-39-i386-linux-gnu.so
inflating: av/video/__init__.py
inflating: av/audio/stream.cpython-39-i386-linux-gnu.so
inflating: av/audio/plane.cpython-39-i386-linux-gnu.so
inflating: av/audio/frame.cpython-39-i386-linux-gnu.so
inflating: av/audio/fifo.cpython-39-i386-linux-gnu.so
inflating: av/audio/format.cpython-39-i386-linux-gnu.so
inflating: av/audio/layout.cpython-39-i386-linux-gnu.so
inflating: av/audio/codeccontext.cpython-39-i386-linux-gnu.so
inflating: av/audio/resampler.cpython-39-i386-linux-gnu.so
inflating: av/audio/__init__.py
inflating: av/container/streams.cpython-39-i386-linux-gnu.so
inflating: av/container/core.cpython-39-i386-linux-gnu.so
inflating: av/container/output.cpython-39-i386-linux-gnu.so
inflating: av/container/pyio.cpython-39-i386-linux-gnu.so
inflating: av/container/__init__.py
inflating: av/container/input.cpython-39-i386-linux-gnu.so
inflating: av-8.0.3.dist-info/AUTHORS.rst
inflating: av-8.0.3.dist-info/AUTHORS.py
inflating: av-8.0.3.dist-info/WHEEL
inflating: av-8.0.3.dist-info/METADATA
inflating: av-8.0.3.dist-info/top_level.txt
inflating: av-8.0.3.dist-info/entry_points.txt
inflating: av-8.0.3.dist-info/RECORD
inflating: av-8.0.3.dist-info/LICENSE.txt
inflating: av.libs/libopus-87ffc4ed.so.0.8.0
inflating: av.libs/libavcodec-f806ffdf.so.58.91.100
inflating: av.libs/libavdevice-e87569b9.so.58.10.100
inflating: av.libs/libnettle-e4fc5f31.so.8.0
inflating: av.libs/libvorbis-92f01e97.so.0.4.8
inflating: av.libs/libmp3lame-233526a7.so.0.0.0
inflating: av.libs/libxcb-1d343cf2.so.1.1.0
inflating: av.libs/libfontconfig-42f938cb.so.1.12.0
inflating: av.libs/libwavpack-500ac1a5.so.1.2.2
inflating: av.libs/libavutil-c7a17312.so.56.51.100
inflating: av.libs/libtwolame-8efe7d43.so.0.0.0
inflating: av.libs/libpng16-4dd41ebc.so.16.37.0
inflating: av.libs/libbluray-2055902f.so.2.1.2
inflating: av.libs/libuuid-cb567fd4.so.1.3.0
inflating: av.libs/libopencore-amrnb-fcdb16d4.so.0.0.3
inflating: av.libs/libfreetype-7926def1.so.6.17.1
inflating: av.libs/libxml2-306772f1.so.2.9.10
inflating: av.libs/libz-8589071d.so.1.2.11
inflating: av.libs/libXau-ddba53a6.so.6.0.0
inflating: av.libs/libopenjp2-a6ae8f36.so.2.3.1
inflating: av.libs/liblzma-ea420d9f.so.5.2.5
inflating: av.libs/libgnutls-02936458.so.30.27.0
inflating: av.libs/libass-404a6c3a.so.9.0.2
inflating: av.libs/libxcb-xfixes-6e1b3b9c.so.0.0.0
inflating: av.libs/libogg-d5fe6797.so.0.8.4
inflating: av.libs/libxcb-shm-7d8441d4.so.0.0.0
inflating: av.libs/libhogweed-172f4210.so.6.0
inflating: av.libs/libpostproc-39bb583e.so.55.7.100
inflating: av.libs/libopencore-amrwb-556bb03f.so.0.0.3
inflating: av.libs/libswscale-bb3551d5.so.5.7.100
inflating: av.libs/libvorbisenc-c5e741ca.so.2.0.11
inflating: av.libs/libxcb-shape-53904167.so.0.0.0
inflating: av.libs/libavfilter-c4304e6c.so.7.85.100
inflating: av.libs/libdav1d-bfb07d4d.so.5.0.0
inflating: av.libs/libtheoraenc-c230ffa5.so.1.1.2
inflating: av.libs/libx264-f186cfe9.so.161
inflating: av.libs/libunistring-8f6e4b23.so.2.1.0
inflating: av.libs/libaom-cc3bbb84.so.1.0.0
inflating: av.libs/libspeex-b3692605.so.1.5.1
inflating: av.libs/libxvidcore-c069e549.so.4.3
inflating: av.libs/libswresample-b6e24c9a.so.3.7.100
inflating: av.libs/libgmp-7f11e5b1.so.10.4.0
inflating: av.libs/libx265-4feea3a3.so.179
inflating: av.libs/libavformat-6ffdc7ea.so.58.45.100
inflating: av.libs/libtheoradec-6f380291.so.1.1.4
inflating: av.libs/libfribidi-8ebafbbb.so.0.4.0
A pull request is welcome.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
there's an open PR for this, so the bot is a bit too eager (this comment will keep it from closing)
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.