FLAC
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
FLAC 🇬🇧 ist ein Audio-Codec mit verlustfreier Komprimierung („Lossless Codec“). Im Gegensatz zu verlustbehafteten Verfahren („Lossy Codecs“) – wie beispielsweise dem weit verbreiteten MP3 – verringert FLAC die Größe von Audiodateien nicht durch unumkehrbare Reduktion, sondern nur durch Kompression. Das Audiomaterial wird daher beim Dekodieren (z.B. während des Abspielens) originalgetreu wiederhergestellt. Der Codec eignet sich damit sehr gut für die dauerhafte Archivierung von Tonträgern und bei höheren Ansprüchen an die Klangqualität.
FLAC wurde von der Xiph.org Foundation 🇬🇧 entwickelt. Es ist das verlustfreie Gegenstück zu Vorbis bzw. dessen Weiterentwicklung Opus und kann bei Bedarf ebenfalls in das hauseigene Containerformat Ogg eingebettet werden. Gegenüber anderen verlustfreien Codecs hat sich FLAC größtenteils durchgesetzt und wird daher von vielen Programmen und Systemen standardmäßig unterstützt.
Hinweis:
Da verlustfreie Codecs wie FLAC alle Informationen des Audiomaterials bewahren müssen, können sie die Dateigröße bei weitem nicht so stark verkleinern wie verlustbehaftete Codecs. Die Xiph.org Foundation beziffert die durchschnittliche Größenverringerung von FLAC mit 50 %. MP3 und Vorbis hingegen bewegen sich mit ihren Standard-Qualitätsstufen im Bereich um 90 %. Der Platzgewinn hängt zudem stark von der Art des jeweiligen Audiomaterials ab. So kann beispielsweise ruhige, elektronische Musik zumeist wesentlich besser komprimiert werden als laute Rockmusik.
Funktionsübersicht¶
Die folgenden Punkte sind der offiziellen Website 🇬🇧 entnommen:
Verlustfreie Komprimierung mit Bit-identischer Rekonstruktion des Audiomaterials
Integrierte Fehlererkennung
Schnelles Dekodieren und geringe Prozessorbelastung beim Abspielen
Hohe Hardware-Unterstützung (im Vergleich zu anderen verlustfreien Formaten)
Flexibles Speichern von Metadaten, u.a. integrierte Cover, Cuesheets, Replay Gain
Sample-akkurates Vor-/Rückspulen
Streamingfähig
Robustes Abspielen von beschädigten Dateien
Installation¶
Im folgenden Paket befindet sich ein Kommandozeilenprogramm, das zum De- und Enkodieren von Dateien benutzt wird [1]:
flac
Befehl zum Installieren der Pakete:
sudo apt-get install flac
Oder mit apturl installieren, Link: apt://flac
Wer eine grafische Oberfläche bevorzugt, findet im Artikel Audiodateien umwandeln eine Auflistung von Programmen, die auf flac zurückgreifen. Sie unterstützen allerdings meist nur sehr wenige der möglichen Feineinstellungen des Codecs.
Benutzung¶
Allgemeine Syntax¶
Die allgemeine Syntax für flac
lautet [2]:
flac ALLGEMEINE_OPTIONEN FORMAT_OPTION EINGABE_DATEI
Wildcards werden dabei unterstützt.
FLAC selbst unterstützt folgende Formate: WAVE, AIFF, PCM-Rohdaten und (nur lesend) Vorbis.
Beispiele¶
Einfacher Aufruf, bei dem mittels einer Wildcard (*
) sämtliche WAV-Dateien des Ordners ~/Musik im eigenen Homeverzeichnis umgewandelt werden:
flac ~/Musik/*.wav
Befehl zum Konvertieren von FLAC-Dateien in WAV-Dateien:
flac -d ~/Musik/*.flac
Ein komplexeres Beispiel:
flac -8 -V --replay-gain --delete-input-file -s ~/Lied.wav
Die Datei Lied.wav im eigenen Homeverzeichnis wird mit der höchsten Kompressionsstufe 8 (-8
) umgewandelt, auf Fehler geprüft (-V
), mit einem Replay-Gain-Wert versehen (--replay-gain
) und die Ausgangsdatei anschließend gelöscht (--delete-input-file
). Zusätzlich soll das Terminal übersichtlich gehalten werden, indem nur potentielle Fehler angezeigt werden (-s
).
Optionen¶
Im folgenden ein Auszug nützlicher Optionen; weitere finden sich in der Manpage.
Generelle Optionen¶
Mit den generellen Optionen wird zunächst das Vorhaben festgelegt:
Generelle Optionen | |
Option | Beschreibung |
-d, --decode | FLAC-Datei in WAV/AIFF/Rohdaten konvertieren |
-f, --force | FLAC-Datei re-enkodieren, z.B. mit stärkerer Kompression; Tags werden übernommen, die Eingabedatei ersetzt |
-o PFAD | FLAC-Datei am Ort PFAD anlegen statt im aktuellen Arbeitsverzeichnis; nur mit einzelnen Dateien funktional |
--force-aiff-format | Ins AIFF-Format dekodieren (statt in WAV) |
--force-raw-format | Rohdaten dekodieren (statt in WAV) |
-t, --test | FLAC-Datei auf Beschädigung prüfen |
-a, --analyze | FLAC-Datei analysieren und eine zugehörige Protokolldatei erstellen (nützlich für Fehlerberichte an die Entwickler) |
-s, --silent | Fortschritt der De-/Enkodierung nicht im Terminal anzeigen |
--totally-silent | Keine Informationen im Terminal anzeigen (nützlich für die Benutzung in Skripten) |
-w, --warnings-as-errors | Bei kleinsten Problemen sofort abbrechen, nicht erst bei schwerwiegenden (nützlich bei wichtigen Archivierungen) |
--delete-input-file | Nach dem De- bzw. Enkodieren die Quelldatei löschen |
--keep-foreign-metadata | Für FLAC nicht nützliche Metadaten der Quelldatei beim Enkodieren trotzdem in den "Tag" übertragen |
Enkodierungs- und Formatoptionen¶
Die folgenden Optionen legen Feinheiten fest:
Enkodierungs- und Formatoptionen | |
Option | Beschreibung |
-V, --verify | Ausgabe noch während des Enkodierens mit dem Original vergleichen |
--replay-gain | Replay-Gain-Wert berechnen und im "Tag" speichern |
-0 bis -8 | Komprimierungsstufen: 0 = gering, dafür schnell; 8 = stark, aber langsam |
Kompression und Geschwindigkeit¶
FLAC arbeitet immer verlustfrei, egal welche Stufe gewählt wurde. Die unteren Stufen dienen nur dem Zeitgewinn. Das Ergebnis ist meist nicht sonderlich größer, dafür aber mitunter deutlich schneller erstellt. Bei fehlenden Parametern arbeitet FLAC mit mittlerer Kompressionsstufe. Im Vergleich zu anderen verlustfreien Codecs ist die Kompressionsstärke von FLAC nicht die allerhöchste, unterliegt aber nur um wenige Prozente.
FLAC wurde jedoch von Anfang als freie Software entwickelt und setzte sich daher besonders in der Linuxwelt schnell durch. Zudem bietet FLAC einige technische Vorteile, beispielsweise eine mitunter wesentlich geringere CPU-Belastung während des Dekodierens. Ein schöner Vergleich zwischen den verschiedenen Codecs findet sich im HydrogenAudio-Wiki 🇬🇧.
metaflac: Metadaten bearbeiten¶
FLAC nutzt Vorbis comment als Metadatenformat. Zum Editieren der Tags von FLAC-Dateien ist im Paket flac mit metaflac ein eigener Metadaten-Editor für die Kommandozeile enthalten. Er erlaubt es, "Tags" aufzulisten, hinzuzufügen, zu entfernen und zu editieren.
Vorbis comment hat für die typischen Tags wie Liedtitel und Interpret vorgegebene Namen (Liste). Es können zusätzlich auch individuelle Tags angelegt werden, beispielsweise QUELLE=Schallplatte.
Hinweis:
Viele Player lesen nur die wichtigsten Metdaten-Einträge wie Interpret, Liedtitel, Album und Jahr aus. Weiterführende Dinge wie eingebettete Cover oder Cuesheets werden meist ignoriert.
Bedienung¶
Aufgerufen wird metaflac durch den Befehl:
metaflac OPTIONEN OPERATIONEN FLACDATEI
Wichtige Operationen von metaflac
sind:
Operationen von metaflac | |
Option | Beschreibung |
--show-tag=NAME | Anzeige der Tags der Kategorie NAME (Bsp. für NAME : ARTIST , TITLE , TRACKNUMBER ) |
--remove-tag=NAME | Alle "Tags" der Kategorie NAME entfernen |
--remove-all-tags | Alle Tags entfernen |
--set-tag=NAME=Wert | Dem Tag NAME einen Wert zuordnen. Beispiel Liedtitel: --set-tag=TITLE='Linux rock!' |
--add-replay-gain | Replay-Gain-Wert berechnen und einfügen. |
--remove-replay-gain | Replay Gain entfernen |
--import-picture-from=/Pfad/zur/Datei | Bilddatei als Cover einbetten. Wird von fähigen Playern ausgelesen und angezeigt. |
Möchte man einen Tag ersetzen, muss dieser zunächst entfernt werden, ansonsten wird er mehrfach angelegt.
Weitere Operationen sowie Optionen finden sich in der Manpage von metaflac.
Beispiele¶
Nur ReplayGain hinzufügen¶
metaflac kann ReplayGain-Daten hinzufügen: Es berechnet dazu jeweils Gain und Peak für Album und Track und setzt sie als Vorbis comment in die Metadaten. Mit dem Befehl find
lassen sich alle Dateien mit der Endung .flac oder .FLAC im Verzeichnis ~/Musik und dessen Unterverzeichnissen finden und anschließend mit Metadaten versehen (ugs. "taggen"):
find ~/Musik -iname '*.flac' -execdir metaflac --add-replay-gain {} \+
Interpretenanzeige¶
Mit dem folgenden Befehl werden die Interpreten aller FLAC-Dateien im aktuellen Ordner angegeben:
metaflac --show-tag=ARTIST *.flac
01-Songlines Anthology-This.flac:Artist=Babkas 02-Songlines Anthology-Where Have I.flac:Artist=Patrick Zimmerli 03-Songlines Anthology-Méandre.flac:Artist=Andreas Kahre & François Houle …
Tipps¶
Überprüfung der FLAC-Sammlung¶
Mit dem folgenden Befehl kann eine FLAC-Sammlung überprüft werden, um gegebenenfalls fehlerhafte Dateien aufzuspüren; im Beispiel werden alle FLAC-Dateien im Verzeichnis ~/Musik und dessen Unterverzeichnissen überprüft:
find ~/Musik/ -type f -name "*.flac" | while read LINE; do flac --test "$LINE" 2>&1 | grep "ERROR\|ID3v2" >> ~/Flactest.txt; done
Das Ergebnis der Überprüfung findet sich, wenn der Befehl vollständig durchgeführt wurde, in der Datei ~/Flactest.txt. Ist diese leer, wurden keine fehlerhaften Dateien gefunden.
FLAC-Sammlung in das MP3-Format umwandeln¶
In bestimmten Fällen kann es sinnvoll sein, FLAC-Dateien in ein verlustbehaftetes Format umzuwandeln – bspw., um Speicherplatz auf einem tragbaren Audio-Player zu sparen. Um FLAC-Dateien umzuwandeln, muss man sie erst dekodieren. Anschließend kann man sie z.B. mit LAME in das MP3-Format konvertieren. Bei mehreren Dateien geht dies am bequemsten mit dem zu GStreamer gehörenden Befehl gst-launch
:
for i in *.flac; do gst-launch-0.10 filesrc location="$i" ! flacdec ! audioconvert ! audio/x-raw-int,rate=44100,channels=2 ! lame name=enc mode=0 quality=0 vbr=4 preset=1002 ! xingmux ! id3v2mux ! filesink location="`basename "$i" .flac`.mp3"; done
Dieser Befehl setzt voraus, dass man sich bereits im Verzeichnis der Dateien mit der Endung .flac befindet. Die Dateien werden im selben Ordner in höchstmöglicher MP3-Qualität mit variabler Bitrate (VBR) hinzugefügt. Die Originaldateien bleiben erhalten.
Eine Beispielausgabe:
Leitung wird auf PAUSIERT gesetzt ... Leitung läuft vor … Verzögerung neu verteilen … Leitung ist vorgelaufen … Leitung wird auf ABSPIELEN gesetzt ... New clock: GstSystemClock EOS wurde von Element »pipeline0« erhalten. Execution ended after 26514188726 ns. Leitung wird auf PAUSIERT gesetzt ... Leitung wird auf BEREIT gesetzt ... Leitung wird auf NULL gesetzt ... Leitung wird geleert ... ...
Links¶
Auflistung 🇬🇧 von Abspielgeräten, die FLAC unterstützen
flake 🇬🇧 Alternatives Enkodierungsprogramm. Früher schneller und effizienter als FLAC; mittlerweile überholt.