Conversion de fichiers flac vers ogg et/ou mp3

Je dispose d’ une importante collection de fichiers FLAC. Cette collection correspond aux CD audio que j’ encode systématiquement en FLAC et que je stocke sur mon NAS chaque fois que je m’en procure un. La qualité des FLAC est identique à celle du CD original, mais chaque fichier FLAC occupe bien plus de place qu’ un fichier OGG (ou MP3) d’une qualité suffisante pour la voiture. Et justement, je voudrais m’ embarquer toute ma collection de musique sur une mini clé USB dans la voiture… mais convertie en OGG (ou MP3).

Les données du problème:

  • une collection existante de fichiers FLAC dans une arborescence sur un NAS Synology
  • la volonté de convertir chaque fichier FLAC en OGG (ou MP3)
  • la volonté de conserver l’arborescence originale et les fichiers FLAC
  • la volonté que chaque OGG (ou MP3) généré se trouve au même endroit que le FLAC correspondant dans l’arborescence
  • la volonté de ne pas avoir à copier l’arborescence originale sur aucun support avant de faire la conversion
  • une fois tous les OGG (ou MP3) générés, la volonté de les déplacer, tout en gardant l’arborescence originale sur un support externe

Pour éviter de copier l’intégralité de la collection de FLAC sur un support, j’ai décidé d’utiliser mon système Ubuntu et d’y monter l’arborescence du NAS. L’autre intérêt est que ce sera mon système Ubuntu qui se chargera de la conversion en OGG avec oggenc (et en MP3 avec ffmpeg) ce qui s’avère fort utile dans le cas de l’utilisation de oggenc, puisque cette commande n’est par défaut par disponible sur un NAS Synology.

Pour cela, il est nécessaire d’activer sur le NAS, le service ssh, et d’autoriser un utilisateur à s’en servir. Une fois fait, sur le système hôte Ubuntu, il suffit d’utiliser sshfs pour monter l’arborescence /volume1/music du NAS dont l’ip est ici 192.168.1.100:

mkdir ~/nas && sshfs utilisateur@192.168.1.100:/music ~/nas

Maintenant, on a toute l’arborescence /volume1/music du NAS accessible dans le dossier ~/nas sur le système hôte Ubuntu.

Pour une conversion en OGG:

On peut maintenant lancer la commande de conversion, qui va, pour chaque fichier FLAC rencontré, en convertir une copie en un fichier OGG en y conservant les données (titre, album, artiste, etc.). Ici on choisi une qualité de 6, mais vous pouvez bien sûr modifier ce paramètre ainsi que bien d’autres (oggenc –help):

find ~/nas -type f -iname *.flac -exec oggenc -q 6 "{}" \;

Dans mon cas, cette commande a pris plus de 48h car le nombre de fichiers présent sur le NAS est assez conséquent… Mais une fois terminée, j’avais bien autant de fichiers OGG que de FLAC, dans la bonne arborescence, avec les bons titres et les bonnes infos, du moins pour ceux que j’ai vérifié :).

Pour une conversion en MP3:

On peut maintenant lancer la commande de conversion, qui va, pour chaque fichier FLAC rencontré, en convertir une copie en un fichier MP3 en y conservant les données (titre, album, artiste, etc.). Iici on choisi une qualité de au top (-q:a 0) , mais vous pouvez bien sûr modifier ce paramètre ainsi que bien d’autres (ffmpeg –help):

find ~/nas -type f -iname "*.flac" -exec bash -c 'd=$(dirname "{}"); b=$(basename "{}") && ffmpeg -i "{}" -q:a 0 "$d/${b%.*}.mp3"' \;

Copie des fichiers obtenus sur support externe :

Reste à copier l’arborescence sur un support externe, une clé USB (montée dans /media/utilisateur/key) dans mon cas, sans détruire l’arborescence originale, mais sans y embarquer les FLAC, trop volumineux (remplacer ogg par mp3 pour les fichiers MP3):

rsync -av --remove-source-files --include='*.ogg' --include='*/' --exclude='*' 
~/nas/ /media/utilisateur/key/

L’option –remove-source-files permet de supprimer les fichiers OGG (ou MP3) de la source après la copie vers la clé. Reste plus qu’à démonter la clé et à la brancher dans la voiture!

Alternative

On pourrait effectuer les 2 opérations (conversion et copie) en une. On suppose toujours que le dossier de destination est /media/utilisateur/key/. La commande suivante traite chaque fichier flac, construit le chemin de destination à partir du dossier source, et le converti en ogg (ou mp3) dans le dossier destination:

Conversion et copie ogg:
find ~/nas -type f -iname "*.flac" -exec bash -c 'd=$(dirname "{}"|sed "s/\/home\/utilisateur\/nas/\/media\/utilisateur\/key/g"); b=$(basename "{}") && mkdir -p "${d}" && oggenc -q 6 "{}" -o "$d/${b%.*}.ogg"' \;
Conversion et copie mp3
find ~/nas -type f -iname "*.flac" -exec bash -c 'd=$(dirname "{}"|sed "s/\/home\/utilisateur\/nas/\/media\/utilisateur\/key/g"); b=$(basename "{}") && mkdir -p "${d}" && ffmpeg -n -i "{}" -q:a 0 "$d/${b%.*}.mp3"' \;

Voilà.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.