First of all, let me apologize for the length of this post. I didn’t know it would be so long when I started writing it.
That said, there are a handful of video players that support changing the volume to consistent levels on-the-fly (this is known as “normalizing”). Most normalization techniques provide some level of amplification to the audio. Generally, most players either disable audio normalization by default, or don’t support this feature at all (the latter is more common), so you’ll have to find a player that supports this, and enable the options yourself. Which player you should use depends on what OS you’re running. VLC runs on pretty much every modern OS under the sun, and supports normalization on all of them except Android (and probably IOS).
Another option is to use ffmpeg, a popular audio/video converter, which comes with multiple “filters”, some of which can be used to normalize the audio. If you go down this route, I recommend the “loudnorm” filter.
I should mention that using VLC will probably be easier (unless you are on Android, or preumably IOS, in which case using VLC with audio normalization is not an option). That said, I will give instructions for both methods below:
To use normalize during playback with VLC:
In the “Tools” menu, select “Preferences”. At the bottom of the window, there should be a setting called “Show Settings”, which can be set to “simple” (default) or “all”. Set it to “all”. Now, there will be a large number of settings, which can seem overwhelming. Don’t worry, I’ll try to keep this easy. On the pane on the left, find the “audio” category. Look for a sub-category called “filters”. By the way, the “video” category also has a “filters” sub category. Needless to say, this isn’t what you want, since we’re talking about audio, so make sure you don’t enter the video/filters category by mistake. Click on the word “filters” itself, NOT on the “+” (plus) sign. On the right, check the “Volume normalizer” box. Click the “Save” button on the bottom of the screen.
And now, you can play your movies at a louder volume with VLC. VLC should save this preference, so you shouldn’t have to do this again in the future.
##Converting with ffmpeg:
In case you didn’t know, ffmpeg is a command-line program, which makes it incredibly difficult for novices to use. There are gui programs available for it, but they probably won’t use normalization, which in this instance defeats the purpose of using them.
Assuming your video has 1 video stream, 1 audio stream, and no subtitles, and assuming you’re trying to convert a file called “input.mkv” and save it as “output.mkv”, you can use something like this (the following should only be ONE line (paragraph), but the website might word-wrap it into multiple lines):
ffmpeg -i input.mkv -vcodec copy -acodec libvorbis -af loudnorm=lra=5 output.mkv
That will copy the video stream unchanged, thus preventing visual quality loss and saving a considerable amount of time. The audio will be re-compressed in the vorbis compression format. If you don’t want vorbis, you can replace the word “libvorbis” in the above example to some other encoder, such as “libmp3lame” for mp3, “aac” for AAC, or “ac3” for Dolby AC3.
There are practically a million other encoders you could use, but I prefer libvorbis, since it gives a very good combination of low file size and high quality retention, although you will need a vorbis codec to playback the file. If you don’t want to worry about codecs (or you don’t know what “codecs” are), using mp3 (libmp3lame) will probably make things a lot easier for you. If this is indeed the case, you might not want to use the “mkv” file extension, since it might not be compatible with whatever player you use. You could instead try “avi” or “mp4”, although those might not work depending on what video/video compression formats you use. Do not that most of ffmpeg’s options are case-sensitive, so “libvorbis” will work fine, but “lIbVoRbIs” will not work.
PS: VLC can play pretty much anything, so if you’re hopelessly confused, just use VLC. In fact, by using VLC right from the get-go and avoiding ffmpeg all together, you could make your own life easier. You’ll still have to go through ffmpeg to play the movies on mobile devices, however. Stupid lack of mobile normalization!