## Bitte hier die Versionen kommagetrennt eintragen, mit denen getestet wurde. [[Vorlage(Getestet, bionic)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:mit Root-Rechten arbeiten:] [:Rechte: Rechte für Dateien und Ordner ändern] [:FLAC:] [:LAME:] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] Dieses von [user:pepre:] und [user:rklm:] entwickelte [:Bash: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. {{{#!vorlage Hinweis Das Skript überträgt keine ID3-Tags. }}} = Installation = Benötigt werden folgende Pakete [1]: {{{#!vorlage Paketinstallation findutils lame }}} Dann das Skript [[Anhang(flac2mp3, flac2mp3)]] {dl} 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 {{{#!vorlage Befehl 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: {{{#!vorlage Befehl DEBUG=x flac2mp3 Music/flacs Music/mp3s }}} oder {{{#!vorlage Befehl 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. #tag: Multimedia