is it possible to convert mp3 to ogg via command line?
I'd like to just in a bulk swoop convert my mp3 files to ogg so i can play them in firefox without any issues.
Searching for packages matching ogg, I found dir2ogg which seems to be exactly what you want. Just
sudo apt-get install dir2ogg
dir2ogg -r /path/to/mp3s/
And it recursively finds and converts all mp3 files under /path/to/mp3s/
to ogg (assuming I read the manual correctly).
Use a combination of FFMPEG and String Manipulation.
Change into the folder where your mp3's are located:
cd mp3folder
One example is to use a simple "for" loop:
for file in *.mp3
do ffmpeg -i "${file}" "${file/%mp3/ogg}"
done
The double quotes prevent spaces in the filenames being treated as 'newlines'.
ffmpeg has several options to include in the conversion like codecs, bitrate, sample size, stereo/mono, etc... The above is the most generic conversion with default settings.
ffmpeg -i sound.mp3 -c:a libvorbis -q:a 10 sound.ogg
Highest quality setting, still noticeably worse than original. The default settings didn't work for me at all (on Cygwin, so sue me :)), but this question had good info: superuser.com/questions/273797/convert-mp3-to-ogg-vorbis
Oct 12, 2016 at 10:32
Warning: Both MP3 and OGG are lossy formats, unlike say WAV or FLAC. This means that they achieve their compression in great part by throwing away bits of audio information that are imperceptible to the human ear (called psychoacoustics [wikipedia])
When you encode (transcode) from one lossy format to another, most of those psychoacoustically redundant bits are already gone, so the transcoding quality will suffer and may even be "hearable" in the result. Hence, it isn't recommended to do such conversions unless absolutely necessary.
If you do this MP3-to-OGG conversion, you can minimize the chance of artifacts (poor quality) by using a higher destination bitrate than the source bitrate, e.g if your MP3s are at 128 kbps, try using Ogg at -q7
(variable bitrate level 7), which is usually around ~200 kbps.
You can pass the -q
option to dir2ogg (available in the repos as @geirha mentioned) which should do what you want.
you can use the avconv a gpl program, I did a shell for exemplify (run it on folder with the .mp3 files):
#!/bin/bash
if hash avconv > /dev/null; then
for file in *.mp3
do avconv -i "${file}" "`echo ${file%.mp3}.ogg`";
done
else
echo "avconv not found"
fi
or a more simple version, without validation of avconv installation:
#!/bin/bash
for file in *.mp3
do avconv -i "${file}" "`echo ${file%.mp3}.ogg`";
done
ffmpeg
is officially deprecated and explicitly mentions that you should use avconv
instead.
ffmpeg
is deprecated? It's 2022 and still going strong. ffserver
was deprecated
The parsing/replacing of mp3 by ogg is incorrect. The correct form should be:
for file in *.mp3;
do ffmpeg -i "${file}" -acodec libvorbis "${file%mp3}ogg";
done
There is also soundconverter. It supports both GUI and CLI and can perform bulk transformations in both modes.
Here's one using mplayer I think this is faster than avconv. Although, firefox should play mp3 files natively.
#!/bin/bash
for f in *.mp3; do
newname=`echo $f | tr ' ' '_' `
mv "$f" $newname
f=$newname
mplayer $f -novideo -ao pcm:file=tmp.wav
lame -V 0 -q 0 tmp.wav ${f/.mp3/.ogg}
rm -f tmp.wav
done
In case you are doing only audio use the below code [else FF doesn't play the .ogg]
for file in *.mp3;
do ffmpeg -i "${file}" -acodec libvorbis "${file/%mp3/ogg}";
done
This looks like it might solve your problem http://www.perturb.org/display/entry/687/