flac2mp3
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieses von pepre und rklm entwickelte Shell-Script konvertiert FLAC-Dateien aus einem Ordner rekursiv in MP3-Dateien (256 kB/s bei variabler Bitrate) in einem zweiten Ordner. Die Ordnerstruktur unterhalb des angegebenen Ordners für die FLAC-Dateien bleibt erhalten. Der zweite Order darf identisch mit dem ersten sein. Es werden nur die FLAC-Dateien umgewandelt, die nicht am Zielordner eine neuere MP3-Datei desselben Namens haben. Dadurch kann man es effektiv mehrfach auf dieselben Ordner anwenden, da immer nur neuere oder geänderte Quelldateien umgewandelt werden.
Hinweis:
Das Skript überträgt keine ID3-Tags.
Installation¶
Benötigt werden folgende Pakete [1]:
findutils
lame
Befehl zum Installieren der Pakete:
sudo apt-get install findutils lame
Oder mit apturl installieren, Link: apt://findutils,lame
Dann das Skript flac2mp3 ⮷ herunterladen und ausführbar machen [5]. Um das Skript nutzen zu können, ohne jeweils den Pfad kennen zu müssen, kann es beispielsweise in ~/bin abgespeichert werden. Um es für alle Benutzer erreichbar zu machen, kann es mit Root-Rechten [4] nach /usr/local/bin/ kopiert werden.
Bedienung¶
In einem Terminal [2] lässt sich das Skript dann z.B. mit
flac2mp3 Music/flacs Music/mp3s
aufrufen. Damit werden alle FLAC-Dateien in Music/flacs und allen Unterverzeichnissen nach Music/mp3s konvertiert.
Setzt man in der Umgebung die Variable $DEBUG
gibt das Skript die Befehle während der Ausführung auf die Standardfehlerausgabe aus:
DEBUG=x flac2mp3 Music/flacs Music/mp3s
oder
export DEBUG=x flac2mp3 Music/flacs Music/mp3s
Funktionsweise¶
Das Skript sucht im ersten Verzeichnisbaum nach Dateien mit der Erweiterung ".flac". Die gefundenen Namen relativ zum angegebenen Verzeichnis werden über eine Pipe an xargs
weiter geleitet, das dann für jede gefundene Datei das eingebettete Shell-Skript (Zeilen 22 bis 31) startet. Dieses wiederum ermittelt den Namen der Zieldatei unterhalb des zweiten Verzeichnisses, das die Nutzerin angegeben hat. Nur wenn sie nicht vorhanden oder älter als die umzuwandelnde FLAC-Datei ist, wird die Konvertierung angestoßen.
Die Umwandlung geschieht mit LAME. Da LAME nicht multicore-fähig ist geschieht die Umwandlung über parallel ausgeführte Hintergrund-Jobs. Dazu gibt man in Zeile 12 die Anzahl der parallel auszuführenden Jobs an. Typischerweise nimmt man die Anzahl der Kerne im System. Größere Werte bringen keine Beschleunigung, kleinere lassen mehr CPU-Ressourcen für andere Prozesse verfügbar. Das Steuern dieser Parallelausführung übernimmt xargs (siehe Optionen "-P" und "-n"). Die Kompression kann in Zeile 30 angepasst werden, indem die Option 'V0' durch eine andere ersetzt wird (siehe LAME).
Bei Unterbrechung mit Ctrl-C und weiterer Signale werden die gerade geschriebenen Dateien gelöscht, damit sie beim nächsten Aufruf erneut konvertiert werden.
Anpassung an andere Anwendungsfälle¶
Das Skript kann mit einem Editor[3] leicht auf andere Anwendungsfälle angepasst werden. Sollen andere Kodierungen/Dateiformate verwendet werden, kopiert man die Datei mit einem passenden neuen Namen. Es müssen mindestens folgende Änderungen gemacht werden:
In Zeile 21 muss die Erweiterung ".flac" durch eine diejenige der neuen Eingabedateitypen geändert werden.
In Zeile 22 gleiches für ".mp3".
In Zeile 30 muss das entsprechende Kommando für die Konvertierung platziert werden.
Um spätere Verwirrung zu vermeiden, empfiehlt es sich, die Namen der Variablen flac_dir
und mp3_dir
durch globales Suchen und Ersetzen in passendere Namen zu ändern. Auch der Kommentar am Eingang des Skriptes sollte dann angepasst werden.