Normalizing Video Volume using avconv
I've just been searching for a similar problem and used this solution from SuperUser
Basically, just extract the audio from the file as wav, run normalize-audio on it and then re-encode it as aac and remux.
I just wrote this quick script to do it:
VIDEO_FILE=$1
VIDEO_FILE_FIXED=${VIDEO_FILE%.*}-fixed.${VIDEO_FILE##*.}
avconv -i $VIDEO_FILE -c:a pcm_s16le -vn audio.wav
normalize-audio audio.wav
avconv -i $VIDEO_FILE -i audio.wav -map 0:0 -map 1:0 -c:v copy -c:a libvo_aacenc \
$VIDEO_FILE_FIXED
Put it in a file like normalize.sh
, then run bash normalize.sh file_to_convert.mp4
. You'll get a file out file_to_convert-fixed.mp4
.
You might want to tweak the normalize-audio
command to just raise the volume by some dB with the -g
siwtch, or use another command entirely. I saw aacgain and wavegain mentioned elsewhere. normalize-audio
is in the package normalize-audio, funnily enough.
Hope this helps you.
Related videos on Youtube
Lanbo
Updated on September 18, 2022Comments
-
Lanbo over 1 year
I have a collection of videos, in the
.mkv
and.mp4
(AAC+H.264) formats. The.mkv
files are ok, but all the.mp4
files have such a low volume that I can hardly hear it on my phone, even when volume is maxed.I convert them using
avconv
so they're smaller for my phone. It works fine, but I have not yet found out how I can normalize the volume on all the.mp4
files so they match the.mkv
files.Just raising the volume alone would be a great achievement.
-
chrisdembia over 9 yearsBased on this website wiki.libav.org/Snippets/avconv, I changed the last line to this: avconv -i $VIDEO_FILE -i audio.wav -c copy $VIDEO_FILE_FIXED
-
Pani Dhakshnamurthy about 9 years@chrisdembia it would be helpful to know why did you do this?
-
chrisdembia about 9 yearsI don't completely remember; this is my guess: "-c copy" uses the same audio and video encoders from the input, and those were the encoders I wanted to use.