From a Unix-like (Linux, OSX, etc) commandline, ffmpeg can be used like this:
for f in *.wav; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "$" -c:a libvorbis -q:a 4 "$"; done
This will convert every WAV in a directory into one MP3 and one OGG; note that it's case-sensitive (the above command will convert every file ending in .wav, but not .WAV). If you want a case-insensitive version:
for f in *.; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "$.mp3" -c:a libvorbis -q:a 4 "$.ogg"; done
To convert every WAV in a directory recursively (that is: every WAV in the current directory, and all directories in the current directory), you could use find
:
find . -type f -name '*.wav' -exec bash -c 'ffmpeg -i "$0" -c:a libmp3lame -q:a 2 "$" -c:a libvorbis -q:a 4 "$' '{}' \;
(Max respect to Dennis for his response here for finding me a working implementation of find with ffmpeg)
For case-insensitive search with find, use -iname
instead of -name
.
A note on -q:a
: for MP3, the quality range is 0-9, where 0 is best quality, and 2 is good enough for most people for converting CD audio; for OGG, it's 1-10, where 10 is the best and 5 is equivalent to CD quality for most people.