Comment puis-je convertir ma collection de musique FLAC en Apple Lossless?

13

J'ai une collection de musique de taille raisonnable que je garde au format FLAC sur mon ordinateur portable Ubuntu. Je voudrais commencer à jouer cette musique sur mon Mac et à la synchroniser à partir de là avec mon iPod. Les gens ont suggéré que la meilleure façon de le faire est de convertir ma collection en ALAC, et j'ai décidé que c'est ce que je veux faire.

Avant de plonger et d'écrire des scripts shell personnalisés qui appellent ffmpegpar le biais d'une findcommande complexe , j'ai pensé demander conseil.

Comment puis-je convertir au mieux ma collection FLAC existante en ALAC, sans aucune perte de qualité audio et en préservant toutes les métadonnées?

jml
la source
Huh. Je suis surpris. Je pensais qu'il y aurait un choix évident pour l'outil de transcodage, mais tous ceux que je peux trouver sont axés sur la vidéo.
RAOF
J'ai fini par écrire un script Python personnalisé appelé metaflac, ffmpeg et AtomicParsley.
jml

Réponses:

21

avconv (ou ffmpeg, dont avconv est un fork) peut le faire depuis la ligne de commande:

avconv -i input.flac -c:a alac output.m4a

Il doit conserver les métadonnées par lui-même.

Pour faire chaque flac dans un répertoire:

for f in ./*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done

Pour faire chaque flac récursivement (dans le répertoire courant et tous les sous-répertoires):

shopt -s globstar
for f in ./**/*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done

Si vous avez les flacs dans les fichiers ogg ou quelque chose, changez évidemment ./*.flacen ./*.ogg.

Je pense que cela devrait fonctionner avec avconv / ffmpeg à partir des référentiels (puisque l'ALAC est publié sous la licence Apache et peut être légalement distribué), bien que la version de medibuntu soit installée.

Si vous voulez vous débarrasser des fichiers originaux, vous pouvez les mettre rmdans la boucle. Cette version utilise l' -nindicateur pour avconv, donc elle n'écrasera aucun fichier ALAC déjà existant, et en utilisant &&au lieu de; signifie que si avconv s'arrête avec une erreur, le fichier FLAC d'origine ne sera pas supprimé:

for f in ./*.flac; do avconv -n -i "$f" -c:a alac "${f%.*}.m4a" && rm "$f"; done

Notez que la suppression de fichiers avec rm est irréversible (en dehors de la récupération de données médico-légales), alors soyez prudent en l'utilisant.

evilsoup
la source
Savez-vous comment remplacer les fichiers flac par des fichiers alac, au lieu de faire une copie alac du fichier flac?
user138784
@ user13 non, avconv / ffmpeg ne peut pas faire cela, il ne peut pas écraser les fichiers qu'il utilise comme entrée. Vous pouvez utiliser rmpour supprimer les fichiers originaux, si vous le souhaitez.
evilsoup
Je ne suis pas vraiment un gourou de la ligne de commande (je suis assez nouveau sur GNU / Linux), donc jusqu'à présent, je les supprimais manuellement. (nautilus, organiser les fichiers par type, puis je peux simplement sélectionner tous les fichiers .flac dans ce répertoire et les supprimer). Je vais voir comment fonctionne ce "rm". :)
user138784
@ user138 J'ai édité la réponse pour montrer une implémentation avec rm- bien que prenez note de l'avertissement, rmest à peu près irréversible, il supprime carrément les fichiers plutôt que de les déplacer vers la corbeille. Une autre alternative serait d'utiliser la globalisation une fois la boucle terminée (afin que vous puissiez vérifier qu'il n'y a pas eu de problème ... si la commande a échoué pour une raison quelconque, vous ne voudriez pas vous débarrasser de vos originaux): rm -- *.flacsupprimerait tous les FLAC dans le répertoire de travail.
evilsoup
Merci pour le conseil! Je garde normalement les fichiers flac d'origine dans un autre répertoire, donc il n'y a aucun risque de les perdre.
user138784