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>
This commit is contained in:
+12
-6
@@ -1,16 +1,18 @@
|
||||
# Bundled binaries
|
||||
|
||||
AeroFetch spawns these from the **main process** and bundles them via
|
||||
electron-builder `extraResources` (they ship outside the asar archive). They are
|
||||
**not** committed to git (see `.gitignore`).
|
||||
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 two required Windows executables here before running `npm run dev` or
|
||||
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)
|
||||
```
|
||||
|
||||
@@ -20,13 +22,17 @@ resources/bin/
|
||||
- Grab `yt-dlp.exe`.
|
||||
- Unlicense / public domain.
|
||||
|
||||
## ffmpeg.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 `ffmpeg.exe` here. Ship the LGPL license text alongside the installer
|
||||
before release.
|
||||
- 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)
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user