media-ffmpeg-normalize
Installation
SKILL.md
Media Ffmpeg Normalize
Context: $ARGUMENTS
ffmpeg-normalize is a Python wrapper around ffmpeg's loudnorm filter that automates proper 2-pass EBU R128 normalization, batch directories, and preserves non-audio streams. Raw loudnorm is 1-pass by default (dynamic, inaccurate); this tool does the measure-then-apply pass automatically.
Quick start
- Normalize one file (EBU R128 -23 LUFS default):
ffmpeg-normalize in.mp3 -o out.mp3→ Step 3 - Streaming target (-14 LUFS YouTube/Spotify):
ffmpeg-normalize in.wav -t -14 -o out.wav→ Step 2 - Batch a podcast folder:
ffmpeg-normalize episodes/*.mp3 -of out/ -t -16 -tp -1.5 -lrt 11→ Step 3 - Video (keep video stream, re-encode audio only):
ffmpeg-normalize in.mp4 -c:a aac -b:a 192k -o out.mp4→ Step 3
When to use
- Batch-normalizing many files to one target loudness (podcast archive, music library, course videos).
- You want proper 2-pass EBU R128 without wiring the
loudnormJSON round-trip yourself (seeffmpeg-audio-filterskill if you need manual control). - Delivering to broadcast, streaming platforms, or archives with an LUFS spec.
- Don't use for cross-file consistency (e.g., album-gain style). Each file is normalized independently. For consistent relative levels across a set, use a single manual 2-pass
loudnormwith a shared measurement, per theffmpeg-audio-filterskill.