FLAC es un software de código abierto que puede reducir la cantidad de espacio de almacenamiento necesario para almacenar señales de audio digital sin necesidad de eliminar información al hacerlo.
Los archivos leídos y producidos por este software se denominan archivos FLAC. Como estos archivos (que siguen el formato FLAC) también se pueden leer y escribir en otro software, este software a menudo se denomina implementación de referencia FLAC.
FLAC ha sido desarrollado por voluntarios. Si desea ayudar, consulte CONTRIBUTING.md para obtener más información.
FLAC está compuesto por
flac
, un programa de línea de comandos para codificar y decodificar archivosmetaflac
, un programa de línea de comandos para ver y editar metadatos FLACLas bibliotecas (libFLAC, libFLAC++) tienen la licencia tipo BSD de Xiph.org (ver COPYING.Xiph). Todos los demás programas y complementos tienen la licencia pública general GNU (consulte COPYING.GPL). La documentación tiene la licencia de documentación libre GNU (consulte COPYING.FDL).
Para obtener documentación de las herramientas de línea de comandos flac
y metaflac
, consulte el directorio man, que contiene los archivos flac.md y metaflac.md.
La documentación de la API está en html y es generada por Doxygen. Se puede encontrar en el directorio doc/html/api. Está incluido en un tarball de lanzamiento y debe compilarse con Doxygen cuando la fuente se toma directamente de git.
El directorio de ejemplos contiene código fuente de ejemplo sobre el uso de libFLAC y libFLAC++.
La documentación relativa al formato FLAC en sí (que se puede utilizar para crear software de lectura y escritura de software FLAC independiente de libFLAC) se incluyó en versiones anteriores, pero ahora se puede encontrar en https://datatracker.ietf.org/doc/draft-ietf -cellar-flac/ Además, puede encontrar un conjunto de archivos para pruebas de conformidad llamado banco de pruebas del decodificador FLAC en https://github.com/ietf-wg-cellar/flac-test-files
Si tiene preguntas sobre FLAC que este documento no responde, envíelas al siguiente rastreador para que este documento pueda mejorarse:
https://github.com/xiph/flac/issues
Todos los componentes del proyecto FLAC se pueden compilar con una variedad de compiladores (incluidos GCC, Clang, Visual Studio, Intel C++ Compiler) en muchas arquitecturas (incluidas x86, x86_64, ARMv7, ARMv8 y PowerPC) para muchos sistemas operativos diferentes.
Para hacer esto, FLAC proporciona dos sistemas de compilación: uno que usa las herramientas automáticas de GNU y otro con CMake. Ambos difieren ligeramente en las opciones de configuración, pero deben considerarse equivalentes para la mayoría de los casos de uso.
FLAC solía proporcionar archivos específicamente para compilar con Visual Studio, pero se eliminaron a favor del uso de CMake.
CMake es un sistema de compilación multiplataforma. FLAC se puede construir en Windows, Linux, Mac OS X usando CMake.
Puede utilizar la CLI o la GUI de CMake. Le recomendamos tener una carpeta de compilación separada fuera del repositorio para no estropearla con los archivos generados. Sin embargo, es posible realizar la llamada compilación en árbol, en ese caso /ruta/a/flac-build en los siguientes ejemplos es igual a /ruta/a/flac-source.
Vaya a su carpeta de compilación y ejecute algo como esto:
/path/to/flac-build$ cmake /path/to/flac-source
o por ejemplo en el shell de Windows
C:pathtoflac-build> cmake pathtoflac-source
(siempre que cmake esté en su variable %PATH%)
Eso generará scripts de compilación para el sistema de compilación predeterminado (por ejemplo, Makefiles para UNIX). Después de eso, comienzas a compilar con un comando como este:
/path/to/flac-build$ make
Y luego puede ejecutar pruebas o instalar las bibliotecas y encabezados integrados.
/path/to/flac-build$ make test
/path/to/flac-build$ make install
Si desea utilizar un sistema de compilación distinto al predeterminado, agregue el indicador -G a cmake, por ejemplo:
/path/to/flac-build$ cmake /path/to/flac-source -GNinja
/path/to/flac-build$ ninja
o:
/path/to/flac-build$ cmake /path/to/flac-source -GXcode
Utilice cmake --help para ver la lista de generadores disponibles.
De forma predeterminada, CMake buscará OGG. Si CMake no logra encontrarlo, puede ayudar a CMake especificando la ruta exacta:
/path/to/flac-build$ cmake /path/to/flac-source -DOGG_ROOT=/path/to/ogg
Si desea que CMake cree OGG junto con FLAC, puede colocar las fuentes de ogg directamente en el directorio de fuentes de flac como un subdirectorio con el nombre ogg, por ejemplo:
/path/to/flac-source/ogg
Si no desea crear flac con soporte OGG, puede decirle a CMake que no busque OGG:
/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF
Otras opciones de FLAC (por ejemplo, crear bibliotecas o documentos de C++) también se pueden configurar a través del indicador -D. Si desea saber qué opciones están disponibles, utilice -LH:
/path/to/flac-build$ cmake /path/to/flac-source -LH
Es probable que prefiera utilizar la GUI de CMake si utiliza Visual Studio para crear FLAC. En esencia, es el mismo proceso que construir usando CLI.
Abra cmake-gui. En la ventana, seleccione un directorio de origen (la raíz del repositorio), un directorio de compilación (algún otro directorio fuera del repositorio). Luego presione el botón "Configurar". CMake le preguntará qué sistema de compilación prefiere. Elija la versión de Visual Studio que tiene en su sistema, elija si desea compilar para Win32 o x64. Presione Aceptar.
Una vez que CMake finalice, puede cambiar la configuración a su gusto y, si cambia algo, ejecute Configurar nuevamente. Con el botón "Generar", CMake crea archivos de Visual Studio, que se pueden abrir desde Visual Studio. Con el botón "Abrir proyecto", CMake iniciará Visual Studio y abrirá la solución generada. Puede utilizar los archivos del proyecto como de costumbre, pero recuerde que fueron generados por CMake. Eso significa que sus cambios (por ejemplo, algunos indicadores de compilación adicionales) se perderán la próxima vez que ejecute CMake.
CMake busca OGG de forma predeterminada en su sistema y devuelve un error si no puede encontrarlo. Si desea compilar OGG junto con FLAC, puede descargar las fuentes de OGG y extraerlas en un subdirectorio del directorio de fuentes de FLAC con el nombre ogg (es decir, /ruta/a/flac-source/ogg) antes de ejecutar CMake. Si no desea crear FLAC con soporte OGG, desmarque la casilla que sigue al indicador CON_OGG en la lista de variables en la ventana cmake-gui y ejecute "Configurar" nuevamente.
Si CMake no puede encontrar el compilador MSVC, ejecutar cmake-gui desde el símbolo del sistema de MS Developer debería ser útil.
FLAC usa autoconf y libtool para configurar y construir. Para configurar una compilación, abra una línea de comando/terminal y ejecute ./configure
Puede proporcionar opciones para este comando, que se enumeran ejecutando ./configure --help
.
En caso de que el script de configuración no esté presente (por ejemplo, cuando se compila desde git y no desde un tarball de lanzamiento), se puede generar ejecutando ./autogen.sh
. Sin embargo, esto puede requerir un paquete de desarrollo libtool.
Después de la configuración, compila con make
, verifica la compilación con make check
e instálala con make install
. La instalación puede requerir privilegios de administrador, es decir, sudo make install
.
El paso 'realizar verificación' es opcional; omítalo para omitir todas las pruebas, que pueden tardar aproximadamente una hora en completarse. Aunque se detendrá con un mensaje explícito ante cualquier falla, imprime muchas cosas, por lo que es posible que desees capturar el resultado en un archivo si tienes un problema. Además, no ejecute 'make check' como root porque confunde algunas de las pruebas.
Resumiendo:
./configure
make && make check
sudo make install
libFLAC ha crecido con el tiempo a medida que se han incluido más funciones, pero muchas de ellas pueden ser innecesarias para una implementación integrada particular. Las partes no utilizadas se pueden eliminar mediante una simple edición de configure.ac y src/libFLAC/Makefile.am; El siguiente gráfico de dependencia muestra qué módulos se pueden eliminar sin desglosar más las cosas:
metadata.h
stream_decoder.h
format.h
stream_encoder.h
stream_decoder.h
format.h
stream_decoder.h
format.h
En otras palabras, para aplicaciones de decodificación pura, tanto el codificador de flujo como las interfaces de edición de metadatos se pueden eliminar de forma segura. Tenga en cuenta que esto es específico para crear bibliotecas para uso integrado. Las herramientas de línea de comandos no proporcionan dicha compartimentación y requieren una compilación libFLAC completa para funcionar.
Hay una sección dedicada al uso integrado en la documentación HTML de la API libFLAC (consulte doc/html/api/index.html).
Además, hay varios lugares en el código libFLAC con comentarios marcados con "OPT:" donde se puede cambiar #define para habilitar código que podría ser más rápido en una plataforma específica. Experimentar con estos puede producir binarios más rápidos.