dimanche 13 février 2011

Script BASH de conversion FLAC -> ogg vorbis

Voici un script que j'ai écrit en m'inspirant de divers exemples trouvés sur Internet qui me sert à convertir les fichiers .flac se trouvant dans ./unique/flac/artiste_etc./.../.../*.flac dans un nouveau répertoire nommé ./copies/ogg/artiste_etc./.../.../*.ogg

Ce script permet aussi d'utiliser tous les coeurs du PC (4 dans mon cas) grâce à xargs. Le temps de conversion (pour plusieurs fichiers) est alors divisé par le nombre de coeurs, pratique s'il y a des 100aines de fichiers.


 #!/bin/bash
convertFlacToOgg() {
newFile=$(echo "$1" | sed -e 's/unique/copies/;s/flac/ogg/;s/.flac/.ogg/')
newDirectory=$(dirname "$newFile")
if [ ! -e "$newFile" ]
then
mkdir -p "$newDirectory"
oggenc -q 5 -o "$newFile" "$1"
fi
}
export -f convertFlacToOgg
# Convert FLAC files to ogg vorbis
# Use xargs to enable multithreading (to use these 4 cores...)
find ./unique/flac/ -iname "*.flac" -print0 | xargs -0 -n 1 -P 4 bash -c 'convertFlacToOgg "$@"' --