CLI Fix Audio Level on Video Files
Sometimes you have video files that have very quiet audio and this simple command line bash script will find how much gain it can add to the file without clipping and apply it for you.
fix-audio-levels <filename>
fix-audio-levels s01e02.mp4
volume=11.1dB
ffmpeg apply audio gain...
219M s02e08.mp4.old
231M s02e08.mp4
Install
To install this simply run (ideally in a folder that is in your path like /usr/local/bin or ~/bin if you have one)
curl https://raw.githubusercontent.com/szazeski/helpers/main/fix-audio-levels -o fix-audio-levels && chmod +x fix-audio-levels
Also make sure you have ffmpeg installed.
How it works
This script uses ffmpeg and does a first pass to find the max volume. A bunch of regex processing of the stderror (yeah, all ffmpeg output is sent to stderror and its easiest to redirect it to a file which also adds a nice caching effect). Now we copy the file, just incase something bad happens. Then we normalize the audio with the audio gain value we found on a second pass to process the audio with the gain.
If all is good, you can delete the .old file (and the .ffmpegoutput if you want) and enjoy your fixed audio file.