staging.inyokaproject.org

FLAC

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


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_logo.png 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

  • Freie Software

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 ...
...
  • Auflistung 🇬🇧 von Abspielgeräten, die FLAC unterstützen

  • Free Lossless Audio Codec

  • flake 🇬🇧 Alternatives Enkodierungsprogramm. Früher schneller und effizienter als FLAC; mittlerweile überholt.

Diese Revision wurde am 8. Juni 2022 09:57 von BillMaier erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Multimedia, Audio