Free Lossless Audio Codec | |
---|---|
Dateiendung: | .flac
|
MIME-Type: | audio/x-flac, audio/flac
|
Magische Zahl: | fLaC |
Entwickelt von: | Josh Coalson (Xiph.Org Foundation) |
Aktuelle Version | 1.4.3[1] (23. Juni 2023) |
Art: | Audio |
Standard(s): | Formatspezifikation |
xiph.org/flac | |
FLAC-Referenzimplementierung
| |
---|---|
Basisdaten
| |
Entwickler | Xiph.Org Foundation |
Erscheinungsjahr | 20. Juli 2001[2] |
Aktuelle Version | 1.4.3[1] (23. Juni 2023) |
Betriebssystem | plattformübergreifend |
Programmiersprache | C[3] |
Kategorie | Audioformat |
Lizenz | BSD/GPL |
deutschsprachig | nein |
xiph.org/flac |
Free Lossless Audio Codec (FLAC, englisch für Freier verlustfreier Audio-Kodierer/-Dekodierer) ist ein Codec zur verlustfreien Audiodatenkompression, der im Rahmen der Xiph.Org Foundation entwickelt wird. Er ist frei verfügbar und in seiner Nutzung nicht durch Softwarepatente beschränkt.
Die Entwicklung von FLAC begann im Jahr 2000. Das Format wurde zu Beginn des Beta-Stadiums durch Veröffentlichung von Version 0.5 der Referenz-Implementierung am 15. Januar 2001 festgelegt. Am 20. Juli 2001 wurde Version 1.0 veröffentlicht. Im Februar 2002 gab der erste Hersteller, PhatNoise, die Unterstützung von FLAC in seinem Audio-System bekannt. 2003 kündigte die Xiph.Org Foundation an, FLAC in ihr Container-Format zu integrieren, um so neben Vorbis auch verlustfreie Kompression zu ermöglichen. Im Jahr 2004 wurde eine größere Öffentlichkeit auf FLAC aufmerksam, als die Band Metallica bekannt gab, ihre Konzertmitschnitte künftig nicht nur im verlustbehafteten und damals noch patentierten Format MP3 zu verkaufen, sondern für Musikliebhaber die Aufzeichnungen auch im FLAC-Format anzubieten.[4] Seit Mai 2006 existiert neben der Referenzimplementierung von Xiph/Coalson ein alternativer Encoder namens Flake von Justin Ruggles, der in FFmpeg aufgenommen wurde.[5]
Zwischen 2007 und 2013 ruhte die Entwicklung von FLAC vollständig, bis am 26. Mai 2013 auf der offiziellen Website bekanntgegeben wurde, dass ein neues Entwicklerteam zusammengestellt worden sei und fortan wieder an FLAC gearbeitet werde. Zur gleichen Zeit wurde Version 1.3.0 veröffentlicht.[6]
Seit 2017 arbeiten Andrew Weaver und Martijn van Beurden, einer der FLAC-Hauptentwickler, an einer IETF-Spezifikation (d. h. RFC) des Formats, die sich auf die ursprüngliche Xiph-Spezifikation stützt.[7] Stand Ende 2023 ist diese Spezifikation noch nicht veröffentlicht.
Das Projekt widmet sich folgenden Themen:
libFLAC und libFLAC++ sind unter einer angepassten Version der BSD-Lizenz, flac, metaflac und die Erweiterungen unter der GPL verfügbar.
FLAC-Dateien werden standardmäßig im FLAC-eigenen Container gespeichert und können einen Datenstrom enthalten. Das Containerformat ist genauso wie der gesamte Standard darauf ausgelegt, ganze Audio-CDs oder deren Titel vollständig zu sichern, d. h. einschließlich der Metadaten.
Der FLAC-Container besteht zu Beginn aus einer Abfolge beliebig vieler sogenannter Metadatenblöcke, welche als Header dienen. Dabei ist der STREAMINFO-Block der erste und einzige vorgeschriebene Metadatenblock, welcher Informationen über den FLAC-Datenstrom selbst enthält. Weitere Blöcke sind optional und müssen weder von Enkodern noch Dekodern unterstützt werden. Sie enthalten beispielsweise Titelinformationen im Metadatenformat Vorbis comment, Sprungtabellen für das schnellere Ansteuern bestimmter Zeitpunkte im Datenstrom, Padding als Platzhalter für weitere zukünftige Header, oder Bilddaten wie ein Album-Cover.
In Ogg- und Matroska-Containern können mehrere FLAC-komprimierte Audiodaten nebeneinander in dieselbe Datei gespeichert werden, meistens zusammen mit einem Videodatenstrom für mehrsprachige Filme.
Technisch gesehen zeichnet sich FLAC vor allen Dingen dadurch aus, dass es gestreamt werden kann und Mehrkanal-, Replay-Gain- sowie Cuesheet-Unterstützung mit sich bringt. Außerdem können RIFF- und AIFF-Metadaten in FLAC-Dateien eingebettet werden, welche beim Dekodieren wiederhergestellt werden. Die Kompressionsstärke liegt, verglichen mit anderen verlustfreien Audio-Codecs, im Mittelfeld.[8]
FLAC ist darauf ausgelegt, mit dem etwa zehn Jahre älteren MP3-Format insofern kompatibel zu sein, als dass FLAC-Frames in einem Datenstrom eindeutig von MP3-Frames unterschieden werden können.[9] Weiterhin ähnelt das Bilddatenformat des FLAC-Containers dem Format des APIC-Frames in ID3v2, welches in MP3 zum Einsatz kommt.
Bei FLAC handelt es sich außerdem um einen sogenannten asymmetrischen Codec, d. h. der Rechenaufwand für das Kodieren ist deutlich höher als der für das Dekodieren. Der Rechenaufwand für das Dekodieren ist sogar geringer als der für viele andere verlustfreie Codecs. Hintergrund ist die Überlegung, dass eine Datei üblicherweise nur einmal kodiert, aber sehr viel häufiger (meist zum Abspielen) dekodiert wird. Dadurch stellt das Format vergleichsweise geringe Anforderungen an die Rechenleistung von Abspielgeräten oder -Programmen. Da es nur eine Komplexitätsstufe gibt, bleibt der Aufwand beim Dekodieren immer der gleiche – unabhängig von der Enkodereinstellung. Dies ist einer der Gründe, warum FLAC neben Apple Lossless, dem verlustfreien Kompressionsformat von Apple, auf Abspielgeräten eine gewisse Verbreitung erlangt hat.
Laut Angaben der Entwickler erreicht FLAC durchschnittlich eine Komprimierung auf rund 50 Prozent der Ausgangsgröße, der Unterschied zu anderen verlustfreien Audio-Kompressionsverfahren liegt demnach in einem Bereich einiger Prozentpunkte.[10] Andere Tests legen aber eher eine Komprimierung auf etwa 60 Prozent nahe.[11][12]
Verschiedene Faktoren haben einen erheblichen Einfluss auf die Kompressionsrate:
FLAC nutzt für Kodierung und Dekodierung ausschließlich Festkommaarithmetik, wodurch insbesondere Hardwareimplementierungen vereinfacht werden. Hinsichtlich des Eingangssignals ist der Codec sehr flexibel: Auflösungen zwischen 4 und 32 Bit pro Sample, Abtastfrequenzen zwischen 1 Hz und rund 655 kHz und 1 bis 8 Kanäle werden unterstützt.[13] Das verwendete Dateiformat unterstützt die Speicherung von Metadaten mittels Vorbis comment und kann auch Replay-Gain-Daten hinterlegen. Bei der Komprimierung verarbeitet FLAC die Eingangsdaten in mehreren Schritten:[14]
Die Dekompression und Dekodierung geschieht in umgekehrter Reihenfolge, wobei insbesondere eine Zwischenspeicherung von Daten kaum nötig ist: Bei sofortiger Wiedergabe müssen lediglich die Daten eines Blocks (üblicherweise wenige Kilobyte) im Speicher gehalten werden. Da ein Frame alle Informationen über das Tonsignal, wie Abtastrate, Bittiefe und Kanalformat, eigenständig beinhalten kann, ist es möglich, Frames unabhängig voneinander und unabhängig von einem Container zu dekodieren.
Die Parameter des Enkoders regeln unter anderem die Blockgröße, den Grad der Linear-Predictive-Kodierung oder den Einsatz der Mid-Side-Kodierung. Um die Handhabung zu vereinfachen, verfügt die Referenzimplementierung über 9 wählbare Kompressionsstufen, die jeweils für eine bestimmte Auswahl an Parameterkombinationen stehen.[15] Die höheren Stufen wirken sich nur gering auf die Reduzierung der Dateigröße aus, dafür steigt jedoch die benötigte Rechenzeit überproportional an; die Dekodiergeschwindigkeit bleibt hingegen nahezu konstant.
Als Standard verwendet die Referenzimplementierung Stufe 5.
Da FLAC auch zum Ogg-Framework der Xiph.Org Foundation gehört, kommt die Bekanntheit anderer Formate der Stiftung, wie zum Beispiel Vorbis, auch FLAC zugute. Zusätzlich gibt es entsprechende Bemühungen, den Codec auf alle Plattformen zu portieren, die Ogg unterstützen.
Da FLAC freie Software ist, darf jedes beliebige Programm und jedes Gerät es nutzen.[16] So wird es standardmäßig von den meisten Linux-Distributionen unterstützt. Für viele weitere Betriebssysteme stehen FLAC-Plug-ins sowie Abspielprogramme zur Verfügung, die FLAC unterstützen – Beispiele sind VLC media player, Quod Libet, Songbird, Winamp, Clementine, AIMP, The KMPlayer, Media Player Classic und foobar2000. Die freie libavcodec-Bibliothek des FFmpeg-Projekts unterstützt FLAC und somit auch die große Zahl an freier und kommerzieller Software, welche auf libavcodec aufbaut. Beispiele hierfür sind Videoschnittprogramme wie DaVinci Resolve oder Audioeditoren wie Audacity.
Seit etwa 2003 gibt es Geräte auf dem Markt, auch zunehmend tragbare Player, die das freie Audioformat abspielen können. Für viele Player, bei denen die Firmware aktualisiert werden kann, gibt es zusätzlich Open-Source-Projekte, die FLAC-Wiedergabe unterstützen, beispielsweise Rockbox. Für Mobiltelefone mit Android sind verschiedene Programme zum Abspielen von FLAC verfügbar. Ab der Version 3.1 bietet Android native FLAC-Unterstützung.[17] Unter Symbian kann beispielsweise die Freeware OggPlay[18] verwendet werden. In Webbrowsern wird FLAC Playback nativ bei Firefox ab Version 51 (Januar 2017) und in Chrome ab Version 56 (Januar 2017) voll unterstützt.
Einige Online-Shops bieten Audiomaterial zusätzlich im Format FLAC an oder haben sich generell auf verlustfreie Audioformate spezialisiert,[19] beispielsweise bietet GOG.com DRM-freie Computerspiel-Soundtracks im FLAC-Format an.[20] Besonders Anbieter hochauflösender Musikaufnahmen sind auf eine verlustfreie Audiokomprimierung angewiesen.[21]