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 以启用在特定平台上可能更快的代码。尝试这些可以产生更快的二进制文件。