Normalize audio via ffmpeg
Project description
ffmpeg-normalize
A utility for batch-normalizing audio using ffmpeg.
This program normalizes media files to a certain loudness level using the EBU R128 loudness normalization procedure. It can also perform RMS-based normalization (where the mean is lifted or attenuated), or peak normalization to a certain target level.
✨ Features
- EBU R128 loudness normalization — Two-pass by default, with an option for one-pass dynamic normalization
- RMS-based normalization — Adjust audio to a specific RMS level
- Peak normalization — Adjust audio to a specific peak level
- Selective audio stream normalization — Normalize specific audio streams or only default streams
- Video file support — Process video files while preserving video streams
- Docker support — Run via Docker container
- Python API — Use programmatically in your Python projects
- Shell completions — Available for bash, zsh, and fish
- Album Batch normalization – Process files jointly, preserving relative loudness
🚀 Quick Start
- Install a recent version of ffmpeg
- Run
pip3 install ffmpeg-normalizeandffmpeg-normalize /path/to/your/file.mp4, alternatively installuvand runuvx ffmpeg-normalize /path/to/your/file.mp4 - Done! 🎧 (the normalized file will be called
normalized/file.mkv)
🆕 What's New
-
Version 1.36.0 introduces presets with
--preset! Save and reuse your favorite normalization configurations for different use cases. Comes with three built-in presets:podcast(AES standard),music(RMS-based batch normalization), andstreaming-video(video content). Create custom presets too!Example:
ffmpeg-normalize input.mp3 --preset podcast
applies the podcast preset (EBU R128, -16 LUFS) to your file. Learn more in the presets guide.
-
Version 1.35.0 has batch/album normalization with
--batch. It preserves relative loudness between files! Perfect for music albums where you want to shift all tracks by the same amount.Example:
ffmpeg-normalize album/*.flac --batch -nt rms -t -20
shifts the entire album so the average RMS is -20 dB, preserving the original relative loudness as mastered.
-
Version 1.34.0 brings selective audio stream normalization! You can now:
-
Normalize specific audio streams with
-as/--audio-streams(e.g.,-as 1,2to normalize only streams 1 and 2) -
Normalize only default audio streams with
--audio-default-only(useful for files with multiple language tracks) -
Keep other streams unchanged with
--keep-other-audio(copy non-selected streams without normalization)Example:
ffmpeg-normalize input.mkv -as 1 --keep-other-audio
normalizes stream 1 and copies all other audio streams unchanged.
-
Other recent additions:
- Shell completions (v1.31.0) — Tab completion for bash, zsh, and fish shells. See the installation guide for setup instructions.
--lower-onlyoption — Prevent audio from increasing in loudness, only lower it if needed (works with all normalization types).
See the full changelog for all updates.
📓 Documentation
Check out our documentation for more info!
🤝 Contributors
The only reason this project exists in its current form is because @benjaoming's initial PRs. Thanks for everyone's support!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ffmpeg_normalize-1.37.2.tar.gz.
File metadata
- Download URL: ffmpeg_normalize-1.37.2.tar.gz
- Upload date:
- Size: 33.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1fe6168671dcc2d0f797b023be58730b322e320493cf6862a207dded0bdca9f
|
|
| MD5 |
dabeadfe154e83f147bd7bc71f335f94
|
|
| BLAKE2b-256 |
f632f835e09147115b8fbdd5a6053870af375acc376b18097d439c9ede11d968
|
File details
Details for the file ffmpeg_normalize-1.37.2-py3-none-any.whl.
File metadata
- Download URL: ffmpeg_normalize-1.37.2-py3-none-any.whl
- Upload date:
- Size: 39.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
026b395d5a4760e06375bed5c655e6fa3909d2b0bcf184826e6636020af475e9
|
|
| MD5 |
681a1348f91b38a2bb1e7670849d3a75
|
|
| BLAKE2b-256 |
a8a4774904b431a61cb3feedf6985347c42382573b002e08e47fef1e991d429c
|