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 ?
4 Answers
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?
-
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. Jan 12, 2010 at 10:02
-
8 bit per sample– anonymJan 12, 2010 at 10:06
-
In that case the line should be: ffmpeg -i input.mp3 -ar 8000 -ac 1 -acodec pcm_u8 output.wav– IainJan 12, 2010 at 10:14
-
to convert to WAV (M4A, AAC) file, with attributes A-Law, 8000Hz, 64kbps, mono ?– KiquenetFeb 15 at 17:00
lame, the command-line WAV to MP3 encoder, can also decode MP3 to WAV with the --decode
switch.
-
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 LissJan 31, 2016 at 20:43
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
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.