FLAC は、情報を削除することなく、デジタル オーディオ信号の保存に必要なストレージ容量を削減できるオープンソース ソフトウェアです。
このソフトウェアで読み取って作成したファイルをFLACファイルと呼びます。これらのファイル (FLAC 形式に従う) は他のソフトウェアからも読み書きできるため、このソフトウェアは FLAC リファレンス実装と呼ばれることがよくあります。
FLAC はボランティアによって開発されました。ご協力いただける場合は、CONTRIBUTING.md で詳細をご覧ください。
FLAC の構成要素
flac 、ファイルをエンコードおよびデコードするためのコマンドライン プログラムmetaflac 、FLAC メタデータを表示および編集するためのコマンドライン プログラムライブラリ (libFLAC、libFLAC++) は、Xiph.org の BSD に似たライセンスに基づいてライセンスされています (COPYING.Xiph を参照)。他のすべてのプログラムとプラグインは、GNU General Public License (COPYING.GPL を参照) に基づいてライセンスされています。このドキュメントは、GNU Free Documentation License に基づいてライセンスされています (COPYING.FDL を参照)。
flacおよびmetaflacコマンド ライン ツールのドキュメントについては、ファイル flac.md および metaflac.md が含まれるディレクトリ man を参照してください。
API ドキュメントは HTML 形式であり、Doxygen によって生成されます。これは、doc/html/api ディレクトリにあります。これはリリース tarball に含まれており、ソースを git から直接取得する場合は Doxygen を使用してビルドする必要があります。
ディレクトリの例には、libFLAC および libFLAC++ の使用に関するサンプル ソース コードが含まれています。
FLAC 形式自体に関するドキュメント (libFLAC から独立して FLAC ソフトウェアを読み書きするソフトウェアを作成するために使用できます) は以前のリリースに含まれていましたが、現在は https://datatracker.ietf.org/doc/draft-ietf で見つけることができます。 -cellar-flac/ さらに、FLAC デコーダー テストベンチと呼ばれる適合性テスト用のファイル セットが次の場所にあります。 https://github.com/ietf-wg-cellar/flac-test-files
このドキュメントで解決できない FLAC に関する質問がある場合は、このドキュメントを改善できるよう、次のトラッカーに質問を送信してください。
https://github.com/xiph/flac/issues
FLAC プロジェクトのすべてのコンポーネントは、さまざまなコンパイラ (GCC、Clang、Visual Studio、インテル C++ コンパイラーなど) を使用して、さまざまなオペレーティング システムのさまざまなアーキテクチャ (x86、x86_64、ARMv7、ARMv8、PowerPC など) 上でビルドできます。
これを行うために、FLAC は 2 つのビルド システムを提供します。1 つは GNU のオートツールを使用し、もう 1 つは CMake を使用します。どちらも構成オプションがわずかに異なりますが、ほとんどのユースケースでは同等であると考えてください。
FLAC は、Visual Studio でのビルド専用のファイルを提供していましたが、CMake の使用を優先してこれらは削除されました。
CMake はクロスプラットフォームのビルド システムです。 FLAC は、CMake を使用して Windows、Linux、Mac OS X 上で構築できます。
CMake の CLI または GUI を使用できます。生成されたファイルによってリポジトリが損なわれないように、リポジトリの外部に別のビルド フォルダーを作成することをお勧めします。ただし、いわゆるツリー内ビルドを実行することは可能です。その場合、次の例の /path/to/flac-build は /path/to/flac-source と同じになります。
ビルドフォルダーに移動し、次のようなものを実行します。
/path/to/flac-build$ cmake /path/to/flac-source
または Windows シェルなどで
C:pathtoflac-build> cmake pathtoflac-source
(cmake が %PATH% 変数にある場合)
これにより、デフォルトのビルド システム (UNIX の Makefile など) のビルド スクリプトが生成されます。その後、次のようなコマンドでビルドを開始します。
/path/to/flac-build$ make
その後、テストを実行したり、構築されたライブラリとヘッダーをインストールしたりできます
/path/to/flac-build$ make test
/path/to/flac-build$ make install
デフォルト以外のビルドシステムを使用したい場合は、cmake に -G フラグを追加します。例:
/path/to/flac-build$ cmake /path/to/flac-source -GNinja
/path/to/flac-build$ ninja
または:
/path/to/flac-build$ cmake /path/to/flac-source -GXcode
cmake --help を使用して、利用可能なジェネレーターのリストを表示します。
デフォルトでは、CMake は OGG を検索します。 CMake がそれを見つけられない場合は、正確なパスを指定することで CMake を支援できます。
/path/to/flac-build$ cmake /path/to/flac-source -DOGG_ROOT=/path/to/ogg
CMake で FLAC と一緒に OGG をビルドしたい場合は、ogg という名前のサブディレクトリとして ogg ソースを flac ソース ディレクトリに直接配置できます。次に例を示します。
/path/to/flac-source/ogg
OGG サポートを使用して flac をビルドしたくない場合は、OGG を検索しないように CMake に指示できます。
/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF
他の FLAC のオプション (C++ ライブラリやドキュメントのビルドなど) も、-D フラグを通じて cmake に設定できます。使用可能なオプションを知りたい場合は、-LH を使用します。
/path/to/flac-build$ cmake /path/to/flac-source -LH
Visual Studio を使用して FLAC を構築する場合は、CMake GUI を使用することを好む可能性があります。これは本質的に、CLI を使用してビルドするプロセスと同じです。
cmake-gui を開きます。ウィンドウで、ソース ディレクトリ (リポジトリのルート)、ビルド ディレクトリ (リポジトリの外部の他のディレクトリ) を選択します。次に「設定」ボタンを押します。 CMake は、どのビルド システムを好むかを尋ねます。システム上にある Visual Studio のバージョンを選択し、Win32 または x64 のどちらでビルドするかを選択します。 「OK」を押します。
CMake が完了したら、好みに合わせて構成を変更できます。何かを変更した場合は、Configure を再度実行します。 [生成] ボタンを使用すると、CMake によって Visual Studio ファイルが作成され、Visual Studio から開くことができます。 [プロジェクトを開く] ボタンをクリックすると、CMake が Visual Studio を起動し、生成されたソリューションを開きます。プロジェクト ファイルは通常どおり使用できますが、CMake によって生成されたものであることに注意してください。つまり、次回 CMake を実行すると、変更内容 (追加のコンパイル フラグなど) が失われます。
CMake はデフォルトでシステム上の OGG を検索し、見つからない場合はエラーを返します。 FLAC と一緒に OGG をビルドする場合は、CMake を実行する前に、OGG ソースをダウンロードし、ogg という名前で FLAC ソース ディレクトリのサブディレクトリに抽出します (つまり、/path/to/flac-source/ogg)。 OGG サポートを使用して FLAC をビルドしたくない場合は、cmake-gui ウィンドウの変数リストで WITH_OGG フラグに続くボックスのチェックを外し、「Configure」を再度実行します。
CMake が MSVC コンパイラーを見つけられない場合は、MS Developer コマンド プロンプトから cmake-gui を実行すると解決します。
FLAC は、構成とビルドに autoconf と libtool を使用します。ビルドを構成するには、コマンド ライン/ターミナルを開いて./configureを実行します。このコマンドにオプションを指定できます。オプションは、 ./configure --help実行すると一覧表示されます。
構成スクリプトが存在しない場合 (たとえば、リリース tarball からではなく git からビルドする場合)、 ./autogen.sh実行することで生成できます。ただし、これには libtool 開発パッケージが必要になる場合があります。
設定後、 makeでビルドし、 make checkでビルドを確認し、 make installでインストールします。インストールには管理者特権、つまりsudo make install必要な場合があります。
「make check」ステップはオプションです。すべてのテストをスキップするには、これを省略します。完了までに約 1 時間かかる場合があります。失敗すると明示的なメッセージが表示されて停止しますが、多くの情報が出力されるため、問題が発生した場合は出力をファイルにキャプチャするとよいでしょう。また、一部のテストが混乱するため、root として「make check」を実行しないでください。
要約:
./configure
make && make check
sudo make install
libFLAC は、より多くの機能が組み込まれるにつれて時間の経過とともに大きくなっていますが、その多くは特定の組み込み実装には不要である可能性があります。未使用の部分は、configure.ac と src/libFLAC/Makefile.am を簡単に編集することで削除できます。次の依存関係グラフは、詳細を細分化せずにどのモジュールをプルーニングできるかを示しています。
metadata.h
stream_decoder.h
format.h
stream_encoder.h
stream_decoder.h
format.h
stream_decoder.h
format.h
つまり、純粋なデコード アプリケーションの場合、ストリーム エンコーダとメタデータ編集インターフェイスの両方を安全に削除できます。これは、組み込みで使用するライブラリの構築に特有であることに注意してください。コマンド ライン ツールはそのような区分化を提供しないため、機能するには完全な libFLAC ビルドが必要です。
libFLAC API HTML ドキュメントには、埋め込み使用専用のセクションがあります (doc/html/api/index.html を参照)。
また、libFLAC コードには、「OPT:」でマークされたコメントが含まれる箇所がいくつかあります。#define を変更して、特定のプラットフォームで高速になる可能性のあるコードを有効にすることができます。これらを試してみると、より高速なバイナリが得られる可能性があります。