Wie kann ich meine FLAC-Musiksammlung in Apple Lossless konvertieren?

13

Ich habe eine Musiksammlung von vernünftiger Größe, die ich auf meinem Ubuntu-Laptop im FLAC-Format verwahre. Ich möchte diese Musik auf meinem Mac abspielen und von dort aus mit meinem iPod synchronisieren. Die Leute haben vorgeschlagen, dass der beste Weg, dies zu tun, darin besteht, meine Sammlung in ALAC zu konvertieren, und ich habe beschlossen, dass ich das tun möchte.

Bevor ich eintauche und benutzerdefinierte Shell-Skripte schreibe, die ffmpegeinen komplexen findBefehl aufrufen , dachte ich, ich würde um Rat fragen.

Wie kann ich meine vorhandene FLAC-Sammlung am besten in ALAC konvertieren, ohne die Audioqualität zu beeinträchtigen und alle Metadaten beizubehalten?

jml
quelle
Huh. Ich bin überrascht. Ich dachte, es gäbe eine offensichtliche Wahl für das Transcodierungswerkzeug, aber alle, die ich finden kann, konzentrieren sich auf Video.
RAOF
Am Ende habe ich ein benutzerdefiniertes Python-Skript mit den Namen metaflac, ffmpeg und AtomicParsley geschrieben.
jml

Antworten:

21

avconv (oder ffmpeg, dessen Gabel avconv ist) kann dies von der Kommandozeile aus tun:

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

Es sollte die Metadaten für sich behalten.

So führen Sie jeden flac in einem Verzeichnis aus:

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

So führen Sie jeden flac rekursiv aus (im aktuellen Verzeichnis und in allen Unterverzeichnissen):

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

Wenn Sie die Flacs in ogg-Dateien oder etwas haben, ändern Sie offensichtlich ./*.flaczu ./*.ogg.

Ich denke, dies sollte mit avconv / ffmpeg aus den Repositories funktionieren (da ALAC unter der Apache-Lizenz veröffentlicht wird und legal vertrieben werden kann), obwohl ich die Version von medibuntu installiert habe.

Wenn Sie die ursprünglichen Dateien loswerden möchten, können Sie rmin die Schleife setzen. In dieser Version wird das -nFlag für avconv verwendet, sodass keine bereits vorhandenen ALAC-Dateien überschrieben werden. Wenn Sie &&stattdessen verwenden; , wird die ursprüngliche FLAC-Datei nicht gelöscht, wenn avconv mit einem Fehler beendet wird:

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

Beachten Sie, dass das Löschen von Dateien mit rm irreversibel ist (außerhalb der forensischen Datenwiederherstellung). Gehen Sie daher vorsichtig damit um.

Übelsuppe
quelle
Wissen Sie, wie Sie die flac-Dateien durch alac-Dateien ersetzen können, anstatt eine alac-Kopie der flac-Datei zu erstellen?
user138784
@ user13 nein, avconv / ffmpeg kann das nicht, es kann die Dateien, die es als Eingabe verwendet, nicht überschreiben. Sie können verwenden rm, um die Originaldateien zu entfernen, wenn Sie möchten.
Evilsoup
Ich bin nicht wirklich ein Kommandozeilen-Guru (ich bin ziemlich neu in GNU / Linux), also habe ich sie bisher manuell entfernt. (Nautilus, ordnen Sie Dateien nach Typ, und dann kann ich einfach alle .flac-Dateien in diesem Verzeichnis auswählen und entfernen). Ich werde einen Blick darauf werfen, wie dieses "rm" -Ding funktioniert. :)
user138784
@ user138 Ich habe die Antwort bearbeitet, um eine Implementierung mit anzuzeigen. rmBeachten Sie jedoch, dass die Warnung rmso gut wie irreversibel ist. Sie löscht die Dateien vollständig, anstatt sie in den Papierkorb zu verschieben. Eine andere Alternative wäre die Verwendung von Globbing nach Beendigung der Schleife (damit Sie überprüfen können, ob keine Probleme aufgetreten sind ... Wenn der Befehl aus irgendeinem Grund fehlschlägt, möchten Sie Ihre Originale rm -- *.flacnicht entfernen ): würde jeden entfernen FLAC im Arbeitsverzeichnis.
Evilsoup
Danke für den Hinweis! Normalerweise behalte ich die Original-Flac-Dateien in einem anderen Verzeichnis, sodass keine Gefahr besteht, sie zu verlieren.
user138784