FLAC 是開源軟體,可減少儲存數位音訊訊號所需的儲存空間,而無需刪除資訊。
該軟體讀取和產生的檔案稱為 FLAC 檔案。由於這些檔案(遵循 FLAC 格式)也可以由其他軟體讀取和寫入,因此該軟體通常稱為 FLAC 參考實作。
FLAC 是由志工開發的。如果您想提供協助,請參閱 CONTRIBUTING.md 以了解更多資訊。
FLAC 的組成包括
flac
,用於編碼和解碼檔案的命令列程序metaflac
,用於檢視和編輯 FLAC 元資料的命令列程序這些程式庫(libFLAC、libFLAC++)根據 Xiph.org 的 BSD 類別許可證獲得許可(請參閱 COPYING.Xiph)。所有其他程式和外掛程式均根據 GNU 通用公共授權取得許可(請參閱 COPYING.GPL)。該文件根據 GNU 自由文檔許可證獲得許可(請參閱 COPYING.FDL)。
有關flac
和metaflac
命令列工具的文檔,請參閱目錄 man,其中包含文件 flac.md 和 metaflac.md
API 文件採用 html 格式,由 Doxygen 產生。它可以在目錄 doc/html/api 中找到。它包含在發布 tarball 中,當直接從 git 獲取原始程式碼時,必須使用 Doxygen 建置。
目錄 example 包含使用 libFLAC 和 libFLAC++ 的範例原始碼。
有關 FLAC 格式本身的文件(可用於建立獨立於 libFLAC 的軟體讀寫 FLAC 軟體)包含在先前的版本中,但現在可以在 https://datatracker.ietf.org/doc/draft-ietf 上找到-cellar -flac/ 另外,可以在https://github.com/ietf-wg-cellar/flac-test-files 上找到一組稱為FLAC 解碼器測試平台的一致性測試文件
如果您對 FLAC 有本文檔未解答的問題,請透過以下追蹤器提交這些問題,以便改進本文檔:
https://github.com/xiph/flac/issues
FLAC 專案的所有元件都可以使用多種編譯器(包括GCC、Clang、Visual Studio、Intel C++ 編譯器)在多種架構(包括x86、x86_64、ARMv7、ARMv8 和PowerPC)上針對許多不同的作業系統進行構建。
為此,FLAC 提供了兩種建置系統:一種使用 GNU 的自動工具,另一種使用 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 shell 中
C:pathtoflac-build> cmake pathtoflac-source
(前提是 cmake 在你的 %PATH% 變數中)
這將為預設建置系統產生建置腳本(例如,UNIX 的 Makefiles)。之後,您可以使用以下命令開始建置:
/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 來源直接放置在 flac 來源目錄中作為名為 ogg 的子目錄,例如:
/path/to/flac-source/ogg
如果您不想建造支持 OGG 的 flac,您可以告訴 CMake 不要尋找 OGG:
/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF
其他 FLAC 的選項(例如建置 C++ lib 或文件)也可以透過 -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 進行建置。按確定。
CMake 完成後,您可以根據自己的喜好變更配置,如果變更任何內容,請再次執行「配置」。使用「產生」按鈕,CMake 會建立 Visual Studio 文件,可以從 Visual Studio 開啟該文件。使用「開啟專案」按鈕,CMake 將啟動 Visual Studio 並開啟產生的解決方案。您可以照常使用專案文件,但請記住它們是由 CMake 產生的。這表示當您下次執行 CMake 時,您的變更(例如一些額外的編譯標誌)將會遺失。
CMake 預設在您的系統上搜尋 OGG,如果找不到則回傳錯誤。如果您想要與 FLAC 一起建置 OGG,則可以在執行 CMake 之前下載 OGG 來源並將其解壓縮到 FLAC 來源目錄的子目錄中,名稱為 ogg(即 /path/to/flac-source/ogg)。如果您不想建立支援 OGG 的 FLAC,請在 cmake-gui 視窗的變數清單中取消選取 WITH_OGG 標誌後面的方塊,然後再次執行「配置」。
如果 CMake 無法找到 MSVC 編譯器,則從 MS Developer 命令和提示字元執行 cmake-gui 應該會有所幫助。
FLAC 使用 autoconf 和 libtool 進行設定和建置。要配置構建,請打開命令行/終端並運行./configure
您可以為此命令提供選項,透過運行./configure --help
列出這些選項。
如果配置腳本不存在(例如,從 git 建置而不是從發布 tarball 建置時),可以透過執行./autogen.sh
來產生它。不過,這可能需要 libtool 開發包。
配置後,使用make
構建,使用make check
驗證構建並使用make install
安裝。安裝可能需要管理員權限,即sudo make install
。
“make check”步驟是可選的;省略它可以跳過所有測試,這可能需要大約一個小時才能完成。儘管它會在任何失敗時停止並顯示明確的訊息,但它確實會列印很多內容,因此如果您遇到問題,您可能需要將輸出捕獲到文件中。另外,不要以 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 以啟用在特定平台上可能更快的程式碼。嘗試這些可以產生更快的二進位。