[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete_installieren: Pakete installieren] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(./flac_logo.png, 130, align=left)]] [sourceforge:flac:FLAC] {en} ist ein [:Codecs:Audio-Codec] mit verlustfreier Komprimierung („Lossless Codec“). Im Gegensatz zu verlustbehafteten Verfahren („Lossy Codecs“) – wie beispielsweise dem weit verbreiteten [:LAME: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 [http://xiph.org/ Xiph.org Foundation] {en} entwickelt. Es ist das verlustfreie Gegenstück zu [:Vorbis:] bzw. dessen Weiterentwicklung [:Opus:] und kann bei Bedarf ebenfalls in das hauseigene Containerformat [wikipedia: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. {{{#!vorlage 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 [http://flac.sourceforge.net/features.html offiziellen Website] {en} 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, [:CDs_rippen#ber-das-Cuesheet:Cuesheets], [wikipedia:Replay Gain:] * Sample-akkurates Vor-/Rückspulen * Streamingfähig * Robustes Abspielen von beschädigten Dateien * [wikipedia:Freie Software:] = Installation = Im folgenden Paket befindet sich ein [:Shell:Kommandozeilenprogramm], das zum De- und Enkodieren von Dateien benutzt wird [1]: {{{#!vorlage Paketinstallation 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]: {{{#!vorlage Befehl flac ALLGEMEINE_OPTIONEN FORMAT_OPTION EINGABE_DATEI }}} [wikipedia:Wildcard (Informatik):Wildcards] werden dabei unterstützt. FLAC selbst unterstützt folgende Formate: [wikipedia:RIFF WAVE:WAVE], [wikipedia:Audio Interchange File Format: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: {{{#!vorlage Befehl flac ~/Musik/*.wav }}} Befehl zum Konvertieren von FLAC-Dateien in WAV-Dateien: {{{#!vorlage Befehl flac -d ~/Musik/*.flac }}} Ein komplexeres Beispiel: {{{#!vorlage Befehl 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 [:man:Manpage]. == Generelle Optionen == Mit den generellen Optionen wird zunächst das Vorhaben festgelegt: {{{#!vorlage Tabelle <-2 tablestyle="width: 97%;" rowclass="titel"> 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; [:Metadaten: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: {{{#!vorlage Tabelle <-2 tablestyle="width: 97%;" rowclass="titel"> 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 [http://wiki.hydrogenaudio.org/index.php?title=Lossless_comparison#Comparison_Table HydrogenAudio-Wiki] {en}. = metaflac: Metadaten bearbeiten = FLAC nutzt [wikipedia:Vorbis_comment:Vorbis comment] als Metadatenformat. Zum Editieren der [:Metadaten#MusikTags: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 ([wikipedia:Vorbis_comment#Gebräuchliche_Felder_und_ihre_Bedeutung:Liste]). Es können zusätzlich auch individuelle Tags angelegt werden, beispielsweise ''QUELLE=Schallplatte''. {{{#!vorlage Hinweis Viele Player lesen nur die wichtigsten Metdaten-Einträge wie Interpret, Liedtitel, Album und Jahr aus. Weiterführende Dinge wie eingebettete Cover oder [wikipedia:Cuesheet:Cuesheets] werden meist ignoriert. }}} == Bedienung == Aufgerufen wird metaflac durch den Befehl: {{{#!vorlage Befehl metaflac OPTIONEN OPERATIONEN FLACDATEI }}} Wichtige Operationen von `metaflac` sind: {{{#!vorlage Tabelle 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` [wikipedia: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 [:man: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 [wikipedia: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"): {{{#!vorlage Befehl find ~/Musik -iname '*.flac' -execdir metaflac --add-replay-gain {} \+ }}} === Interpretenanzeige === Mit dem folgenden Befehl werden die Interpreten aller FLAC-Dateien im aktuellen Ordner angegeben: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 [wikipedia:Mp3:MP3]-Format konvertieren. Bei mehreren Dateien geht dies am bequemsten mit dem zu [:GStreamer:] gehörenden Befehl `gst-launch`: {{{#!vorlage Befehl 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 [wikipedia:Bitrate#Variable_Bitrate: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 = * [http://flac.sourceforge.net/links.html#hardware Auflistung] {en} von Abspielgeräten, die FLAC unterstützen * [wikipedia:Free_Lossless_Audio_Codec:Free Lossless Audio Codec] * [sourceforge2:flake-enc:flake] {en} Alternatives Enkodierungsprogramm. Früher schneller und effizienter als FLAC; mittlerweile überholt. #tag: Multimedia, Audio