跳转至

PyAV 15.1.0 二进制许可证审计

检查日期为 2026-10-03,对照仓库的 uv.lock。本记录记载的是二进制证据,而非商业许可,也不是完整的发布声明/源代码包。

结果

所有七个锁定的 CPython 3.11 wheel 均已从其锁定的 PyPI URL 下载,并与它们的 SHA-256 哈希匹配。我们在不执行外来平台二进制文件的情况下检查了其中嵌入的七个 FFmpeg 库。审计覆盖 macOS arm64/x86_64、Windows amd64 以及 Linux glibc/musl arm64/x86_64。

每个 wheel 还捆绑了 x264 和 x265 共享库。每个被检查的 FFmpeg 库都包含 LGPL 版本 3 或更高版本的许可证字符串,以及启用了 libx264、libx265、共享库和版本 3 的构建选项。缺少 --enable-gpl 并不证明捆绑的编解码器已获准用于专有再分发。

PyAV v15.1.0 wheel 工作流选择供应商清单 scripts/ffmpeg-7.1.json,该清单指向 pyav-ffmpeg 发布版 7.1.1-6。该供应商树的 FFmpeg 补丁将 libx264 和 libx265 从 EXTERNAL_LIBRARY_GPL_LIST 中移除,并将其放入通用外部库列表。这解释了为何仅凭配置标志和运行时许可证标签本身并不能确定所链接编解码器的条款。供应商标签解析为 f665a9654da201e8d5c9ec2b7597ae90fbdedba5。

wheel 通知清单在每个 wheel 中只找到一个名为许可证的文件:PyAV 自己的 dist-info/licenses/LICENSE.txt。这并不能确定完整的 FFmpeg 和传递性编解码器通知或相应源代码的可用性。仅凭文件名扫描也无法确定二进制文件中不存在其他署名文本。

来源与保留证据

随附的 JSON 记录了每个 wheel 的 URL/哈希、每个被检查库的成员路径/哈希、构建配置、报告的许可证字符串以及通知文件清单。检查脚本 可以根据 uv.lock 重新生成这些证据:

python3.11 scripts/audit_pyav_wheels.py --cache-dir /tmp/pyav-audit-wheels --output /tmp/pyav-audit.json

该命令在空缓存上会下载七个锁定的 wheel(约 230 MB);它不会安装或执行这些文件。PyAV 版本或 wheel 哈希发生变化时需要重新审计。

剩余工作

在将这些 wheel 用于 Pro 之前,需先解决所链接的具体 x264/x265 构件的再分发条款。可供评估的实现路径包括构建不含这些编解码器的已审计 wheel,或记录适用的许可途径及其完整条款。本次审计未获得也没有假定任何商业例外。

对于任何已发布的构建,请保留完整的已解析依赖/源代码/构建输入,生成所需的通知,并验证生成的安装程序。本次审计不涵盖从源代码构建的 PyAV、其他 Python ABI wheel、系统 FFmpeg、imageio-ffmpeg、单独下载的 ffmpeg_bins 可执行文件或 Docker 分发包。它也不验证二进制可重现性,也不能替代针对特定发布版本的来源追踪。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 om/VoiceStudio