Context
We use the homebrew-ffmpeg/ffmpeg tap (PR #12) with the default bottled build: libass, drawtext/libfreetype, and many extra filters, but not fdk-aac.
Enabling fdk-aac requires brew "homebrew-ffmpeg/ffmpeg/ffmpeg", args: ["with-fdk-aac"], which:
- forces a from-source compile (no bottle, since FDK AAC is non-free), and
- recompiles ffmpeg on every version bump — heavy for the unattended daily-update LaunchDaemon.
Decision (current)
Stay on the bottled build; ffmpeg's native AAC encoder is fine for current needs. The trade-off is noted inline in packages/Brewfile.developer and packages/Brewfile.cloud-engineer.
Future enhancement: a build switch
Let the user opt into the FDK AAC build without editing the Brewfile. Options to weigh:
-
Brewfile conditional (Ruby). Brewfiles are Ruby, so:
brew "homebrew-ffmpeg/ffmpeg/ffmpeg", args: ENV["NS_FFMPEG_FDK_AAC"] ? ["with-fdk-aac"] : []
Set NS_FFMPEG_FDK_AAC=1 before brew bundle to get the source build.
-
bootstrap flag / machine config. A --ffmpeg-fdk-aac flag (or a key in ~/.config/ns-bootstrap/config) that the install step reads to decide the args.
Either way, document the source-build + recompile-on-update cost, and consider pinning/skipping ffmpeg in the unattended updater when the source build is selected so a 3am rebuild doesn't stall.
Acceptance
- A documented, single switch to choose bottled vs
with-fdk-aac.
- Default stays bottled.
- Unattended updater not silently doing heavy source rebuilds.
Context
We use the
homebrew-ffmpeg/ffmpegtap (PR #12) with the default bottled build: libass, drawtext/libfreetype, and many extra filters, but not fdk-aac.Enabling fdk-aac requires
brew "homebrew-ffmpeg/ffmpeg/ffmpeg", args: ["with-fdk-aac"], which:Decision (current)
Stay on the bottled build; ffmpeg's native AAC encoder is fine for current needs. The trade-off is noted inline in
packages/Brewfile.developerandpackages/Brewfile.cloud-engineer.Future enhancement: a build switch
Let the user opt into the FDK AAC build without editing the Brewfile. Options to weigh:
Brewfile conditional (Ruby). Brewfiles are Ruby, so:
Set
NS_FFMPEG_FDK_AAC=1beforebrew bundleto get the source build.bootstrap flag / machine config. A
--ffmpeg-fdk-aacflag (or a key in~/.config/ns-bootstrap/config) that the install step reads to decide the args.Either way, document the source-build + recompile-on-update cost, and consider pinning/skipping ffmpeg in the unattended updater when the source build is selected so a 3am rebuild doesn't stall.
Acceptance
with-fdk-aac.