Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
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.
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.
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
Im folgenden Paket befindet sich ein Kommandozeilenprogramm, das zum De- und Enkodieren von Dateien benutzt wird [1]:
flac
mit apturl
Paketliste zum Kopieren:
sudo apt-get install flac
sudo aptitude install 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.
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.
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
).
Im folgenden ein Auszug nützlicher Optionen; weitere finden sich in der Manpage.
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 |
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 |
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 .
flake ist eine unabhängige Implementierung eines FLAC-Encoders. Sie komprimierte anfangs (ca. 2006–2009) schneller und konnte höhere Effizienz bieten als das Original (Vergleich ). Flake bietet nichtr 8, sondern 12 Kompressionsstufen. Allerdings brechen die Stufen 11 und 12 mit dem „Subset format“, die damit erstellten Dateien können bei eingeschränkt kompatiblen FLAC-Dekodierern (z.B. auf Mobilgeräten) und Streaming Probleme beim Dekodieren bzw. Abspielen bereiten. Außerdem ist Flake sehr rudimentär gehalten, die allermeisten Optionen stehen nicht zur Verfügung, darunter auch wichtige wie beispielsweise die Verifizierung (-V
).
flake
mit apturl
Paketliste zum Kopieren:
sudo apt-get install flake
sudo aptitude install flake
Von neueren Versionen als Version 0.11 von 2007 steht von offizieller Seite nur Quellcode zum Selberkompilieren zur Verfügung. Die Aufnahme in FFmpeg und den populären Windows-Audioplayer Winamp könnte zwar ein Qualitätsbeweis sein, bei wichtigen Archivierungen ist man aber wohl mit dem offiziellen Encoder besser beraten.
Die Optionen beschränken sich praktisch nur auf die Kompressionsstufen 0–12. Die Datei muss im Microsoft-WAV-Format vorliegen und darf die Standardauflösung von 16 Bit nicht überschreiten:
flake -10 Lied.wav
Möchte man die zugrunde liegenden Algorithmen manuell miteinander kombinieren, finden sich die nötigen Befehle und Parameter in der man.
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.
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=FIELD | Tag hinzufügen (FIELD muss den Vorbis-Comment-Konventionen entsprechen. Es muss im Format NAME=WERT angegeben sein.) |
--add-replay-gain | Replay Gain hinzufügen |
--remove-replay-gain | Replay Gain entfernen |
Weitere Operationen sowie Optionen finden sich in der Manpage von metaflac.
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 {} \+
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 …
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.
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 ... ...
Diese Revision wurde am 11. November 2016 15:06 von Germrolf erstellt.