Tell me more ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

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.

share|improve this question

1 Answer

up vote 1 down vote accepted

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.