Files
AeroFetch/resources/bin
debont80 18e1d9a24d Bundle ffprobe.exe and complete the real-download smoke-test pass
A live smoke test of buildArgs' argv against the bundled yt-dlp + ffmpeg found
that ffprobe.exe was never bundled (resources/bin/ shipped only ffmpeg.exe).
yt-dlp resolves both from --ffmpeg-location, so duration-aware post-processing
failed at runtime for every user with "ffprobe not found": --sponsorblock-remove,
--force-keyframes-at-cuts, and --split-chapters (CODE-AUDIT C1).

- Bundle ffprobe.exe (matching n8.1.2 LGPL build, sha256-verified against the
  already-bundled ffmpeg.exe) and document it in resources/bin/README.md as a
  required binary; correct the stale "not committed to git" note.
- Guard startDownload against a missing ffmpeg.exe/ffprobe.exe up front so the
  failure is a clear AeroFetch error, not a cryptic yt-dlp postprocessing one
  (new getFfprobePath() in binaries.ts).
- Expand test/real-download.integration.test.ts from 2 to 8 live cases: crop,
  sponsorblock-remove, audio opus re-encode, mkv+vp9 merge, subtitle+chapter
  embed, restrict-filenames, download-archive skip, and Phase C extra-args.
  All 8 pass against live yt-dlp + ffmpeg.
- ROADMAP: mark the Phase A/B/C smoke-test caveats done. CODE-AUDIT: add C1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 10:57:12 -04:00
..

Bundled binaries

AeroFetch spawns these from the main process and bundles them via electron-builder extraResources (they ship outside the asar archive). The .exe binaries are committed to the repo so a fresh clone builds and runs without a manual download step.

Drop the three required Windows executables here before running npm run dev or building; aria2c.exe is optional:

resources/bin/
├── yt-dlp.exe
├── ffmpeg.exe
├── ffprobe.exe
└── aria2c.exe   (optional)

yt-dlp.exe

ffmpeg.exe + ffprobe.exe

  • Use an LGPL build to keep licensing simple, e.g. https://github.com/BtbN/FFmpeg-Builds/releases (pick a *-lgpl-shared or *-lgpl win64 build) or https://www.gyan.dev/ffmpeg/builds/.
  • Copy both ffmpeg.exe and ffprobe.exe here — they ship 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).
  • Ship the LGPL license text alongside the installer before release.

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.