FLAC ist eine Open-Source-Software, die den für die Speicherung digitaler Audiosignale benötigten Speicherplatz reduzieren kann, ohne dass dabei Informationen entfernt werden müssen.
Die von dieser Software gelesenen und erzeugten Dateien werden FLAC-Dateien genannt. Da diese Dateien (die dem FLAC-Format folgen) auch von anderer Software gelesen und beschrieben werden können, wird diese Software oft als FLAC-Referenzimplementierung bezeichnet.
FLAC wurde von Freiwilligen entwickelt. Wenn Sie helfen möchten, finden Sie weitere Informationen unter CONTRIBUTING.md.
FLAC besteht aus
flac
, ein Befehlszeilenprogramm zum Kodieren und Dekodieren von Dateienmetaflac
, ein Befehlszeilenprogramm zum Anzeigen und Bearbeiten von FLAC-MetadatenDie Bibliotheken (libFLAC, libFLAC++) sind unter der BSD-ähnlichen Lizenz von Xiph.org lizenziert (siehe COPYING.Xiph). Alle anderen Programme und Plugins stehen unter der GNU General Public License (siehe COPYING.GPL). Die Dokumentation ist unter der GNU Free Documentation License lizenziert (siehe COPYING.FDL).
Eine Dokumentation der Befehlszeilentools flac
und metaflac
finden Sie im Verzeichnis man, das die Dateien flac.md und metaflac.md enthält
Die API-Dokumentation liegt im HTML-Format vor und wird von Doxygen generiert. Es befindet sich im Verzeichnis doc/html/api. Es ist in einem Release-Tarball enthalten und muss mit Doxygen erstellt werden, wenn die Quelle direkt von Git übernommen wird.
Das Verzeichnis „Beispiele“ enthält Beispielquellcode zur Verwendung von libFLAC und libFLAC++.
Dokumentation zum FLAC-Format selbst (das zum Erstellen von Software zum Lesen und Schreiben von FLAC-Software unabhängig von libFLAC verwendet werden kann) war in früheren Versionen enthalten, kann aber jetzt unter https://datatracker.ietf.org/doc/draft-ietf gefunden werden -cellar-flac/ Darüber hinaus finden Sie unter https://github.com/ietf-wg-cellar/flac-test-files eine Reihe von Dateien für Konformitätstests, die sogenannte FLAC-Decoder-Testbench
Wenn Sie Fragen zu FLAC haben, die dieses Dokument nicht beantwortet, senden Sie sie bitte an den folgenden Tracker, damit dieses Dokument verbessert werden kann:
https://github.com/xiph/flac/issues
Alle Komponenten des FLAC-Projekts können mit einer Vielzahl von Compilern (einschließlich GCC, Clang, Visual Studio, Intel C++ Compiler) auf vielen Architekturen (einschließlich x86, x86_64, ARMv7, ARMv8 und PowerPC) für viele verschiedene Betriebssysteme erstellt werden.
Zu diesem Zweck stellt FLAC zwei Build-Systeme zur Verfügung: eines mit den Autotools von GNU und eines mit CMake. Beide unterscheiden sich geringfügig in den Konfigurationsmöglichkeiten, sollten jedoch für die meisten Anwendungsfälle als gleichwertig angesehen werden.
FLAC stellte früher Dateien speziell für die Erstellung mit Visual Studio bereit, diese wurden jedoch zugunsten der Verwendung von CMake entfernt.
CMake ist ein plattformübergreifendes Buildsystem. FLAC kann mit CMake unter Windows, Linux und Mac OS X erstellt werden.
Sie können entweder die CLI oder die GUI von CMake verwenden. Wir empfehlen Ihnen, einen separaten Build-Ordner außerhalb des Repositorys zu haben, um es nicht mit generierten Dateien zu verderben. Es ist jedoch möglich, einen sogenannten In-Tree-Build durchzuführen. In diesem Fall ist /path/to/flac-build in den folgenden Beispielen gleich /path/to/flac-source.
Gehen Sie zu Ihrem Build-Ordner und führen Sie etwas wie Folgendes aus:
/path/to/flac-build$ cmake /path/to/flac-source
oder zB in der Windows-Shell
C:pathtoflac-build> cmake pathtoflac-source
(vorausgesetzt, cmake befindet sich in Ihrer %PATH%-Variable)
Dadurch werden Build-Skripte für das Standard-Build-System generiert (z. B. Makefiles für UNIX). Danach starten Sie den Build mit einem Befehl wie diesem:
/path/to/flac-build$ make
Anschließend können Sie Tests ausführen oder die erstellten Bibliotheken und Header installieren
/path/to/flac-build$ make test
/path/to/flac-build$ make install
Wenn Sie ein anderes Build-System als das Standard-Build-System verwenden möchten, fügen Sie das Flag -G zu cmake hinzu, z. B.:
/path/to/flac-build$ cmake /path/to/flac-source -GNinja
/path/to/flac-build$ ninja
oder:
/path/to/flac-build$ cmake /path/to/flac-source -GXcode
Verwenden Sie cmake --help, um die Liste der verfügbaren Generatoren anzuzeigen.
Standardmäßig sucht CMake nach OGG. Wenn CMake es nicht findet, können Sie CMake helfen, indem Sie den genauen Pfad angeben:
/path/to/flac-build$ cmake /path/to/flac-source -DOGG_ROOT=/path/to/ogg
Wenn Sie möchten, dass CMake neben FLAC auch OGG erstellt, können Sie die ogg-Quellen direkt im Flac-Quellverzeichnis als Unterverzeichnis mit dem Namen ogg ablegen, zum Beispiel:
/path/to/flac-source/ogg
Wenn Sie kein Flac mit OGG-Unterstützung erstellen möchten, können Sie CMake anweisen, nicht nach OGG zu suchen:
/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF
Andere FLAC-Optionen (z. B. Erstellen von C++-Bibliotheken oder -Dokumenten) können auch über das Flag -D an cmake übergeben werden. Wenn Sie wissen möchten, welche Optionen verfügbar sind, verwenden Sie -LH:
/path/to/flac-build$ cmake /path/to/flac-source -LH
Wahrscheinlich bevorzugen Sie die Verwendung der CMake-GUI, wenn Sie Visual Studio zum Erstellen von FLAC verwenden. Es ist im Wesentlichen derselbe Prozess wie das Erstellen mit CLI.
Öffnen Sie cmake-gui. Wählen Sie im Fenster ein Quellverzeichnis (das Stammverzeichnis des Repositorys) und ein Build-Verzeichnis (ein anderes Verzeichnis außerhalb des Repositorys) aus. Anschließend den Button „Konfigurieren“ drücken. CMake wird Sie fragen, welches Build-System Sie bevorzugen. Wählen Sie die Version von Visual Studio aus, die Sie auf Ihrem System haben, und entscheiden Sie, ob Sie für Win32 oder x64 erstellen möchten. Drücken Sie OK.
Nachdem CMake fertig ist, können Sie die Konfiguration nach Ihren Wünschen ändern. Wenn Sie etwas ändern, führen Sie „Configure“ erneut aus. Mit der Schaltfläche „Generieren“ erstellt CMake Visual Studio-Dateien, die aus Visual Studio geöffnet werden können. Mit der Schaltfläche „Projekt öffnen“ startet CMake Visual Studio und öffnet die generierte Lösung. Sie können die Projektdateien wie gewohnt verwenden, denken Sie jedoch daran, dass sie von CMake generiert wurden. Das bedeutet, dass Ihre Änderungen (z. B. einige zusätzliche Kompilierungsflags) verloren gehen, wenn Sie CMake das nächste Mal ausführen.
CMake sucht standardmäßig nach OGG auf Ihrem System und gibt eine Fehlermeldung zurück, wenn es es nicht finden kann. Wenn Sie OGG neben FLAC erstellen möchten, können Sie die OGG-Quellen herunterladen und sie in ein Unterverzeichnis des FLAC-Quellenverzeichnisses mit dem Namen ogg (z. B. /path/to/flac-source/ogg) extrahieren, bevor Sie CMake ausführen. Wenn Sie FLAC nicht mit OGG-Unterstützung erstellen möchten, deaktivieren Sie das Kontrollkästchen nach dem WITH_OGG-Flag in der Variablenliste im cmake-gui-Fenster und führen Sie „Konfigurieren“ erneut aus.
Wenn CMake den MSVC-Compiler nicht finden kann, sollte die Ausführung von cmake-gui über die MS Developer-Eingabeaufforderung Abhilfe schaffen.
FLAC verwendet Autoconf und libtool zum Konfigurieren und Erstellen. Um einen Build zu konfigurieren, öffnen Sie eine Befehlszeile/ein Terminal und führen Sie ./configure
aus. Sie können Optionen für diesen Befehl bereitstellen, die durch Ausführen ./configure --help
aufgelistet werden.
Falls das Konfigurationsskript nicht vorhanden ist (z. B. beim Erstellen aus Git und nicht aus einem Release-Tarball), kann es durch Ausführen ./autogen.sh
generiert werden. Dies erfordert jedoch möglicherweise ein libtool-Entwicklungspaket.
Erstellen Sie nach der Konfiguration mit make
, überprüfen Sie den Build mit make check
und installieren Sie ihn mit make install
. Für die Installation sind möglicherweise Administratorrechte erforderlich, z. B. sudo make install
.
Der Schritt „Prüfung durchführen“ ist optional; Lassen Sie es weg, um alle Tests zu überspringen, deren Abschluss etwa eine Stunde dauern kann. Obwohl es bei jedem Fehler mit einer expliziten Meldung stoppt, werden viele Dinge ausgedruckt, sodass Sie die Ausgabe möglicherweise in einer Datei festhalten möchten, wenn Sie ein Problem haben. Führen Sie „make check“ außerdem nicht als Root aus, da dies einige Tests durcheinander bringt.
Zusammenfassend:
./configure
make && make check
sudo make install
libFLAC ist im Laufe der Zeit größer geworden, da mehr Funktionalität hinzugefügt wurde, aber vieles davon kann für eine bestimmte eingebettete Implementierung unnötig sein. Nicht verwendete Teile können durch einfache Bearbeitung von configure.ac und src/libFLAC/Makefile.am entfernt werden; Das folgende Abhängigkeitsdiagramm zeigt, welche Module beschnitten werden können, ohne die Dinge weiter aufzuschlüsseln:
metadata.h
stream_decoder.h
format.h
stream_encoder.h
stream_decoder.h
format.h
stream_decoder.h
format.h
Mit anderen Worten: Für reine Decodierungsanwendungen können sowohl der Stream-Encoder als auch die Metadatenbearbeitungsschnittstellen sicher entfernt werden. Beachten Sie, dass dies speziell für die Erstellung der Bibliotheken für die eingebettete Verwendung gilt. Die Befehlszeilentools bieten keine solche Unterteilung und erfordern einen vollständigen libFLAC-Build, um zu funktionieren.
In der HTML-Dokumentation der libFLAC-API gibt es einen Abschnitt zur eingebetteten Verwendung (siehe doc/html/api/index.html).
Außerdem gibt es mehrere Stellen im libFLAC-Code mit Kommentaren, die mit „OPT:“ gekennzeichnet sind, an denen ein #define geändert werden kann, um Code zu aktivieren, der auf einer bestimmten Plattform möglicherweise schneller ist. Das Experimentieren damit kann zu schnelleren Binärdateien führen.