Skip to main content

Normalize audio via ffmpeg / avconv

Project description


ffmpeg script for normalizing audio.

This program normalizes media files to a certain dB level. The default is an
RMS-based normalization where the mean is lifted. Peak normalization is
possible with the ``-m`` option.

It takes any audio or video file as input, and writes the audio part as
output WAV file. The normalized audio can also be merged with the


- Python 2.7 (Python 3 is not supported yet, PRs welcome)
- `ffmpeg` and `ffprobe` from installed in your `$PATH`


pip install ffmpeg-normalize


ffmpeg-normalize [options] <input-file>...


- ``-f``, ``--force`` — Force overwriting existing files
- ``-l``, ``--level <level>`` — dB level to normalize to [default: -26]
- ``-p``, ``--prefix <prefix>`` — Prefix for normalized files or output folder name [default:
- ``-np``, ``--no-prefix`` — Write output file without prefix (cannot be used when `--dir` is used)
- ``-t``, ``--threshold <threshold>`` — dB threshold below which the
audio will be not adjusted [default: 0.5]
- ``-o``, ``--dir`` — Create an output folder under the input file's directory with the prefix instead of prefixing the
file (does not work if `--no-prefix` is chosen)
- ``-m``, ``--max`` — Normalize to the maximum (peak) volume instead of
- ``-v``, ``--verbose`` — Enable verbose output
- ``-n``, ``--dry-run`` — Show what would be done, do not convert
- ``-d``, ``--debug`` — Show debug output
- ``-u``, ``--merge`` — Don’t create a separate WAV file but update the
original file. Use in combination with -p to create a copy
- ``-a``, ``--acodec <acodec>`` — Set audio codec for ffmpeg (see
`ffmpeg -encoders`) (will be chosen based on format, default pcm_s16le for WAV)
- ``-r``, ``--format <format>`` – Set format for ffmpeg (see `ffmpeg -formats`) to use for output file [default: wav]
- ``-e``, ``--extra-options <extra-options>`` — Set extra options
passed to ffmpeg (e.g. “-b:a 192k” to set audio bitrate)


Normalize a file and write to `normalized-file.wav`:

ffmpeg-normalize -v file.mp3
ffmpeg-normalize --verbose *.avi

Normalize a number of AVI files and write to `normalized-<file>.wav`:

ffmpeg-normalize -v *.avi
ffmpeg-normalize --verbose *.avi

Normalize a number of MP4 files to -5 dB peak volume and merge the audio stream back into the MP4 files, in a new directory called `normalized`:

ffmpeg-normalize -vuofm -l -5 *.mp4
ffmpeg-normalize --verbose --merge --dir --force --max --level -5 *.mp4

Normalize a number of MKV files and merge the audio back in using the `libfdk_aac` encoder with 192 kBit/s CBR:

ffmpeg-normalize -vu -a libfdk_aac -e "-b:a 192k" *.mkv
ffmpeg-normalize --verbose --merge --acodec libfdk_aac --extra-options "-b:a 192k" *.mkv


0.4 (2017-01-24)

* Cleanup in code, make it class-based
* Drop avconv support, it was never good anyway
* Add support for specifying codec for non-merging operations
* Add support for specifying output format
* README improvements

0.3 (2017-01-19)

* Add option to remove prefix

0.2.4 (2016-10-27)

* Fixed issue where multiple spaces were collapsed into one

0.2.3 (2016-02-12)

* Fixed issue where ffmpeg could not be found if path included spaces

0.2.2 (2016-02-09)

* Change default level back to -26

0.2.1 (2016-02-08)

* Documentation fixes

0.2.0 (2016-02-08)

* Support multiple input files
* Allow merging with input file instead of creating separate WAV
* Write to directory instead of using prefix
* Set the audio codec when merging
* Set additional encoder or ffmpeg options

Note: avconv support is very limited, use the real ffmpeg from instead.

0.1.3 (2015-12-15)

* Bugfix for detecting ffmpeg or avconv on Windows (as .exe)
* Add version to Usage message
* Update year

0.1.2 (2015-11-13)

* Bugfix for missing ffmpeg or avconv

0.1.0 (2015-08-01)

* First release, changing name to ffmpeg-normalize

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for ffmpeg-normalize, version 0.4.0
Filename, size File type Python version Upload date Hashes
Filename, size ffmpeg-normalize-0.4.0.tar.gz (7.7 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page