I have a few hundred .wav files that I need to convert to both ogg and mp3 format. Is there a way that I can do this in batch either from Audacity or from some other command line tool?
5 Answers
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 "${f/%wav/mp3}" -c:a libvorbis -q:a 4 "${f/%wav/ogg}"; 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 *.{wav,WAV}; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 "${f%.*}.mp3" -c:a libvorbis -q:a 4 "${f%.*}.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 "${0/%wav/mp3}" -c:a libvorbis -q:a 4 "${f/%wav/ogg}' '{}' \;
(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.
I did some change to a bat file I have found on SO, it now, deals with spaces in files names as it is often the case in songs name. this bat file convert .wav to .mp3, using the VLC command line tool. But you can change to the formats wma --> mp3 and so on...
@echo off
chcp 65001
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%f IN ('dir /b /s "YOUR_DISK:\Path\To\Your Music\That May contain Spaces\*.wav"') do (
set file1=%%~nf.mp3
echo "file :" !file1!
set fic1=%%f
echo "file : " !fic1!
CALL "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "!fic1!" --sout="#transcode{vcodec=none,acodec=mp3,ab=320,channels=2,samplerate=48000}:std{access=file{no-overwrite},mux=mp3,dst="""!file1!"""}" vlc://quit
)
echo .
echo conversion finished
pause
chcp change the encoding (to deal with accentuated characters.) ab is the bit rate here 320
- 163
You could use foobar2000 with encoders for ogg and mp3. I believe you can find encoders at rarewares.
- 2,672
- 1
- 18
- 14
Download ffmpeg from below link and install it: http://ffmpeg.zeranoe.com/builds/
create and run batch file with below commands in it:
echo converting *.wav to *.ogg
mkdir "..\Ogg"
for /r %%i in ("*.wav") do ffmpeg -i %%i -acodec libvorbis "..\Ogg\%%~ni.ogg"
All converted *.ogg files will be copied to ..\Ogg directory.
Looks like you can use oggenc to convert WAV into OGG, and you can use lame to convert WAV into MP3.
- 691
- 8
- 21