Convertir par lots .wav en mp3 et ogg?

20

J'ai quelques centaines de fichiers .wav que je dois convertir au format ogg et mp3. Existe-t-il un moyen de le faire par lots à partir d'Audacity ou d'un autre outil de ligne de commande?


la source

Réponses:

25

A partir d'une ligne de commande de type Unix (Linux, OSX, etc.), ffmpeg peut être utilisé comme ceci:

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

Cela convertira chaque WAV d'un répertoire en un MP3 et un OGG; notez qu'il est sensible à la casse (la commande ci-dessus convertira chaque fichier se terminant par .wav, mais pas .WAV). Si vous voulez une version insensible à la casse:

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

Pour convertir chaque WAV d'un répertoire de manière récursive (c'est-à-dire: chaque WAV du répertoire actuel et tous les répertoires du répertoire actuel), vous pouvez utiliser 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 à Dennis pour sa réponse ici pour m'avoir trouvé une implémentation fonctionnelle de find avec ffmpeg)

Pour une recherche insensible à la casse avec find, utilisez -inameplutôt que -name.

Une note sur -q:a: pour les MP3, la plage de qualité est de 0 à 9, où 0 est la meilleure qualité et 2 est assez bon pour la plupart des gens pour convertir le CD audio; pour OGG, c'est 1-10, où 10 est le meilleur et 5 est équivalent à la qualité CD pour la plupart des gens.

evilsoup
la source
4
Très utile. J'ai modifié ceci pour convertir par lots .wav en mp3 de manière récursive, car je n'avais pas besoin d'ogg:find . -type f -name '*.wav' -exec bash -c 'ffmpeg -i "$0" -c:a libmp3lame -q:a 2 "${0/%wav/mp3}"' '{}' \;
smg
Le troisième exemple, pour la conversion récursive, ne correspond pas '.
Anaphory
$ for f in *.wav; do ffmpeg -i "$f" -c:a libmp3lame -b:a 320k "${f/%wav/mp3}"; donepour mp3 320 kbps uniquement
qwr
3

Vous pouvez utiliser foobar2000 avec des encodeurs pour ogg et mp3. Je pense que vous pouvez trouver des encodeurs dans les raretés .

Nils Magne Lunde
la source
2

On dirait que vous pouvez utiliser oggenc pour convertir WAV en OGG, et vous pouvez utiliser lame pour convertir WAV en MP3.

Christian Mann
la source
2

Téléchargez ffmpeg à partir du lien ci-dessous et installez-le: http://ffmpeg.zeranoe.com/builds/

créer et exécuter un fichier de commandes avec les commandes ci-dessous:

echo converting *.wav to *.ogg 
mkdir ..\Ogg
for /r %%i in (*) do ffmpeg -i %%i -acodec libvorbis ..\Ogg\%%~ni.ogg

Tous les fichiers * .ogg convertis seront copiés dans le répertoire .. \ Ogg.

Sathya
la source
0

J'ai fait quelques changements dans un fichier bat que j'ai trouvé sur SO, il traite maintenant des espaces dans les noms de fichiers comme c'est souvent le cas dans le nom des chansons. ce fichier bat convertit .wav en .mp3, en utilisant l'outil de ligne de commande VLC. Mais vous pouvez changer les formats wma -> mp3 et ainsi de suite ...

@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 changer l'encodage (pour traiter les caractères accentués.) ab est le débit binaire ici 320

À M
la source