aboutsummaryrefslogtreecommitdiffstats
path: root/packaging/win/LICENSE-ffmpeg.txt
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-05 08:43:11 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-05 08:43:11 +0200
commit301c8998bfdcac80ad3302e2d2ebe853e2ea6de1 (patch)
tree36b0606919f7fb1a7e2ace92d40d8f3e5a6d9d8d /packaging/win/LICENSE-ffmpeg.txt
parent171a36984feff5247786b32958b52673e13cc8f0 (diff)
downloadmeshbay-301c8998bfdcac80ad3302e2d2ebe853e2ea6de1.tar.gz
feat(packaging): bundle ffmpeg in the Windows installer by default
winget install ffmpeg was considered and rejected as the mechanism: it needs network access and winget/App Installer present at the exact moment setup runs, and its failure mode is silent -- video just does not stream, with nothing pointing back at ffmpeg. Not viable for a non-technical install. MeshBay transcodes browser-incompatible video to H.264 (-c:v libx264, webrtc_server.py) -- a real encode, not remux -- so this needs a genuine GPL ffmpeg build; no LGPL-only build includes an H.264 encoder, since libx264 itself is GPL. packaging/win/fetch-ffmpeg.ps1 (new) Downloads, checksum-verifies and stages ffmpeg for the build. Source: BtbN/FFmpeg-Builds' Windows x86_64 gpl-shared preset -- shared DLLs rather than two independent static binaries, which is what nearly tripled this: the "full" static build many devs already have via winget is ~220 MB *per executable*. Pinned to one dated release tag (immutable once published) and its own sha256, not the "latest" alias BtbN repoints on every auto-build -- verified by hand first (downloaded, hash matched, ran a real encode+probe with libx264) before pinning. ffplay.exe (an SDL2 player, ~17 MB) is dropped; MeshBay never invokes it. Cached after the first build. Runs its own smoke test (encode + probe a real clip) so a broken fetch fails at build time, not for the first user who tries to watch something. packaging/win/LICENSE-ffmpeg.txt (new) GPLv3 notice + where the corresponding source is, required because this redistributes a GPL binary even though it is unmodified and only ever invoked as a subprocess. Ships alongside ffmpeg.exe in the installer. build-node-runtime.ps1 / build-win.ps1 Bundling is now the DEFAULT, replacing the old opt-in -FfmpegDir (which copied from a local directory and left most builds without ffmpeg at all). -SkipFfmpeg opts out for a smaller, streaming-less local-iteration build. Also fixes a real bug the ffmpeg change exposed rather than caused: the final `--help` smoke test did `$help -notmatch "meshbay-node"` against $help captured as a PowerShell ARRAY (one element per line) -- -notmatch on a collection is a FILTER, not a boolean test, and returns the non-matching elements; any non-empty array is truthy in if() regardless of content. Once --help wrapped past one line (it now does, with autostart/service in the verb list) this threw unconditionally. Fixed by joining to one string before matching, and pinned by a new test so a future edit cannot silently reintroduce the collection-vs-scalar trap. Verified: downloaded and hashed the pinned release by hand (matches), ran a real libx264 encode + ffprobe against the extracted build, fetch-ffmpeg.ps1 end to end (161 MB staged), a full build-node-runtime.ps1 run (308 MB node-runtime/) and a full installer build (MeshBay-Setup- 1.0.0.exe, 210.8 MB with ffmpeg bundled). Node suite 850 pass / 25 skip. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Diffstat (limited to 'packaging/win/LICENSE-ffmpeg.txt')
-rw-r--r--packaging/win/LICENSE-ffmpeg.txt35
1 files changed, 35 insertions, 0 deletions
diff --git a/packaging/win/LICENSE-ffmpeg.txt b/packaging/win/LICENSE-ffmpeg.txt
new file mode 100644
index 0000000..2f43acc
--- /dev/null
+++ b/packaging/win/LICENSE-ffmpeg.txt
@@ -0,0 +1,35 @@
+FFmpeg — third-party notice
+============================
+
+This package redistributes an unmodified build of FFmpeg (ffmpeg.exe,
+ffprobe.exe, and the shared libraries they link against). MeshBay uses it to
+transcode video into a browser-compatible format (H.264/libx264) for
+streaming; it is a separate program invoked as a subprocess, not code linked
+into MeshBay itself.
+
+Because that build includes libx264, it is licensed under the GNU General
+Public License, version 3 (GPLv3) — no LGPL-only FFmpeg build includes an
+H.264 encoder, since libx264 itself is GPL. The full license text is at:
+
+ https://www.gnu.org/licenses/gpl-3.0.txt
+
+Source code
+-----------
+
+This build was produced, unmodified, by the BtbN/FFmpeg-Builds project from
+FFmpeg's own public source. Corresponding source for the exact version
+bundled here is available from:
+
+ FFmpeg itself: https://ffmpeg.org / https://github.com/FFmpeg/FFmpeg
+ This build's scripts: https://github.com/BtbN/FFmpeg-Builds
+ This exact release: https://github.com/BtbN/FFmpeg-Builds/releases/tag/autobuild-2026-09-04-14-01
+ FFmpeg revision: N-126404-g818e5d965b (2026-09-04)
+
+Neither FFmpeg's source nor MeshBay's own build process modifies this binary
+in any way; it is carried through unchanged from the release named above.
+
+No warranty
+-----------
+
+FFmpeg is provided "as is", without warranty of any kind, per the terms of
+the GPLv3 linked above.