Files
AeroFetch/resources/bin/README.md
T
debont80 79ab94248d chore: stop tracking ffmpeg/ffprobe dev-seed binaries
They're >100MB each, redundant with the app's existing first-run download
(ffmpegSetup.ts), and blocked publishing the repo to GitHub (100MB file
limit). Gitignore them instead; npm run dev falls back to that download
when the seed is absent. Working-tree copies are kept locally for dev.
2026-07-16 12:00:21 -04:00

55 lines
2.8 KiB
Markdown

# Bundled binaries
AeroFetch spawns these from the **main process**. `yt-dlp.exe` (and optional
`aria2c.exe`) ship in the installer via electron-builder `extraResources` (outside the
asar archive) and are committed here so a fresh clone builds and runs.
`ffmpeg.exe` + `ffprobe.exe` are **NOT shipped in the installer** — they're the bulk of
its size, so they're downloaded on first run into `userData/bin` (see
`src/main/ffmpegSetup.ts`, pinned in `src/main/config.ts`). Dropping copies here is an
**optional dev seed**`ensureManagedFfmpeg` copies them into `userData/bin` so
`npm run dev` needs no download — but at ~107MB each (over GitHub's 100MB file limit)
they're **gitignored, not committed**. Without the seed, `npm run dev` just triggers the
same first-run download the shipped app uses.
```
resources/bin/
├── yt-dlp.exe (bundled + committed)
├── ffmpeg.exe (optional dev seed — gitignored, excluded from the installer)
├── ffprobe.exe (optional dev seed — gitignored, excluded from the installer)
└── aria2c.exe (optional, bundled)
```
## yt-dlp.exe
- Download: https://github.com/yt-dlp/yt-dlp/releases/latest
- Grab `yt-dlp.exe`.
- Unlicense / public domain.
## ffmpeg.exe + ffprobe.exe (dev seed only)
- The app downloads these on first run from the pinned upstream archive in
`src/main/config.ts` (`FFMPEG_ARCHIVE_URL` + `FFMPEG_ARCHIVE_SHA256`). To bump the
version, edit those constants — recompute the SHA-256 from the new zip — in their own
commit (the "pinned decisions" discipline).
- For local dev, drop **both** `ffmpeg.exe` and `ffprobe.exe` here — they come together in
the same archive's `bin/` folder and their versions must match. yt-dlp needs
`ffprobe.exe` to read media durations; without it, duration-dependent post-processing
fails with "ffprobe not found" (`--sponsorblock-remove`, `--force-keyframes-at-cuts`,
and `--split-chapters` all error out). Any recent win64 build works, e.g.
https://www.gyan.dev/ffmpeg/builds/ or https://github.com/BtbN/FFmpeg-Builds/releases.
- The installer no longer redistributes ffmpeg, so there's no ffmpeg license text to ship
with the build — users fetch the binary from upstream themselves.
## aria2c.exe (optional)
- Powers the "Use aria2c downloader" toggle in Settings → Network for faster
multi-connection downloads. If it's missing, that toggle silently falls back
to yt-dlp's built-in downloader — nothing breaks.
- Download: https://github.com/aria2/aria2/releases (grab the `aria2-*-win-64bit-build1.zip`,
copy `aria2c.exe` from it here).
- GPL-2.0 — ship its license text alongside the installer before release if bundled.
> Branding stays generic: AeroFetch is a "yt-dlp frontend." Keep upstream
> license texts with any distributed build.