17

I've a .mp3 file and need to convert that to an 1 channel 8kHz 8 bit wav file, anyone know how I can do that with mplayer ? If not, any other commandline tools I could use ?

1
  • That might be obvious, but keep in mind that you cannot regain the quality that was lost when it the mp3 compression was applied. – ℝaphink Jan 12 '10 at 9:57
21

ffmpeg should do the job. This line will convert to 8kHz 1 channel wav file.

ffmpeg -i input.mp3 -ar 8000 -ac 1 output.wav

http://ffmpeg.org/ffmpeg-doc.html#SEC11

I'm not sure about the 8 bits requirement - what are you referring to? It's not the bitrate surely?

3
  • it's the bits-per-sample, analagous to the color depth of a picture. CDDA-style PCM (std WAV) is 16-bit 44.1kHz stereo; he wants output of 8-bit 8kHz mono. – quack quixote Jan 12 '10 at 10:02
  • 8 bit per sample – anonym Jan 12 '10 at 10:06
  • In that case the line should be: ffmpeg -i input.mp3 -ar 8000 -ac 1 -acodec pcm_u8 output.wav – Iain Jan 12 '10 at 10:14
8

lame, the command-line WAV to MP3 encoder, can also decode MP3 to WAV with the --decode switch.

1
  • As user-friendly tools are concerned, I also like mpg321 for decoding: mpg321 input.mp3 -w output.wav When I tried lame, it got the duration (play time) wrong in the output file, whereas with mpg321 it came out correct. – Jo Liss Jan 31 '16 at 20:43
2

SoX can also do this; assuming your SoX is compiled with MP3 support, all you'd need is

sox input.mp3 -c 1 -r 8000 -1 output.wav

... although you might run into clipping issues, in which case you'd want to play with the vol and/or mixer effects to decrease the volume of the input channels before the resampling happens.

Without MP3-enabled SoX, use an MP3 decoder to convert your MP3 to WAV first, then the above command becomes:

sox input.wav -c 1 -r 8000 -1 output.wav
2
mplayer -srate 8000 -vo null -vc null -ao pcm:fast:file="$fn.wav" "$fn"

This will also work for extracting the audio track from videos, and any other media file mplayer was configured to handle.