ubuntuusers.de

flac2mp3

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Wiki/Icons/terminal.png

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

Paketliste zum Kopieren:

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.

Diese Revision wurde am 11. Januar 2019 09:16 von Mnium erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Multimedia