Converting mp4 to mp3

For FFmpeg with Constant Bitrate Encoding (CBR):

ffmpeg -i video.mp4 -vn \
       -acodec libmp3lame -ac 2 -ab 160k -ar 48000 \
        audio.mp3

or if you want to use Variable Bitrate Encoding (VBR):

ffmpeg -i video.mp4 -vn \
       -acodec libmp3lame -ac 2 -qscale:a 4 -ar 48000 \
        audio.mp3

The VBR example has a target bitrate of 165 Kbit/s with a bitrate range of 140...185.


soundconverter Install soundconverter

Install via the software center

is the leading audio file converter for the GNOME Desktop. It reads anything GStreamer can read (Ogg Vorbis, AAC, MP3, FLAC, WAV, AVI, MPEG, MOV, M4A, AC3, DTS, ALAC, MPC, Shorten, APE, SID, MOD, XM, S3M, etc...), and writes to WAV, FLAC, MP3, AAC, and Ogg Vorbis files, or use a GNOME Audio Profile.

SoundConverter aims to be simple to use, and very fast. Thanks to its multithreaded design, it will use as many cores as possible to speed up the conversion. It can also extract the audio from videos.

How to Convert MP4 to MP3 with VLC

  • Open VLC Media Player. Click "Media" > "Convert" to enter the "Open Media" window. Click the "Add" button on the right side of the screen to enter Windows Explorer. Locate the MP4 on your hard drive you want to convert. Click the "Convert" button at the bottom of the screen.

  • Select the name of the Target file.

  • Click the "Audio Codec" tab and select "MP3" from the "Codec" drop down box. Press the "Start" button to begin converting your MP4 to MP3 audio.

  • Click Start


I have a shell-script that uses mplayer (so it can convert anything mplayer can play) to extract the audio, and then encode it using lame. Here is the code:

#! /bin/bash
# any2mp3.sh
# Converts to mp3 anything mplayer can play
# Needs mplayer amd lame installed

[ $1 ] || { echo "Usage: $0 file1.wma file2.wma"; exit 1; }

for i in "$@"
do
    [ -f "$i" ] || { echo "File $i not found!"; exit 1; }
done

[ -f audiodump.wav ] && {
    echo "file audiodump.wav already exists"
    exit 1
}

for i in "$@"
do
    ext=`echo $i | sed 's/[^.]*\.\([a-zA-Z0-9]\+\)/\1/g'`
    j=`basename "$i" ".$ext"`
    j="$j.mp3"
    echo
    echo -n "Extracting audiodump.wav from $i... "
    mplayer -vo null -vc null -af resample=44100 -ao pcm:waveheader:fast \
    "$i" >/dev/null 2>/dev/null || {
        echo "Problem extracting file $i"
        exit 1
    }
    echo "done!"
    echo -n "Encoding to mp3... "
    lame -m s audiodump.wav -o "$j" >/dev/null 2>/dev/null
    echo "done!"
    echo "File written: $j"
done
# delete temporary dump file
rm -f audiodump.wav

First you need to apt-get install mplayer lame. After that, put the code in a file named ''any2mp3.sh'', give permission to execute, and put that in your $PATH, and you will be able to do:

$ any2mp3.sh file.mp4 another-file.wma yet-another.file.ogg

It will convert each file passed to an mp3 with the same name.

It's a little rough, but does the job.

Tags:

Ffmpeg

Lame