FLAC

Ajustar Compartir Imprimir Citar

FLAC (Free Lossless Audio Codec) es un formato de codificación de audio para la compresión sin pérdidas de audio digital, desarrollado por la Fundación Xiph.Org, y también es el nombre de el proyecto de software libre que produce las herramientas FLAC, el paquete de software de referencia que incluye una implementación de códec. El audio digital comprimido por el algoritmo de FLAC generalmente se puede reducir entre el 50 y el 70 por ciento de su tamaño original y se descomprime en una copia idéntica de los datos de audio originales.

FLAC es un formato abierto con licencia libre de regalías y una implementación de referencia que es software libre. FLAC tiene soporte para etiquetado de metadatos, carátulas de álbumes y búsqueda rápida.

Historia

El desarrollo se inició en 2000 por Josh Coalson. El formato de flujo de bits se congeló cuando FLAC entró en la etapa beta con el lanzamiento de la versión 0.5 de la implementación de referencia el 15 de enero de 2001. La versión 1.0 se lanzó el 20 de julio de 2001.

El 29 de enero de 2003, la Fundación Xiph.Org y el proyecto FLAC anunciaron la incorporación de FLAC bajo el lema Xiph.org. Xiph.org alberga otros formatos de compresión gratuitos como Vorbis, Theora, Speex y Opus.

La versión 1.3.0 se lanzó el 26 de mayo de 2013, momento en el que el desarrollo se trasladó al repositorio git de Xiph.org.

Composición

El proyecto FLAC consiste en:

Cualquiera puede implementar la especificación del formato de transmisión sin permiso previo (Xiph.org se reserva el derecho de establecer la especificación FLAC y certificar el cumplimiento), y no se cubre ni el formato FLAC ni ninguno de los métodos de codificación o decodificación implementados. por cualquier patente. La implementación de referencia es software libre. El código fuente de libFLAC y libFLAC++ está disponible bajo la licencia BSD, y las fuentes de flac, metaflac y los complementos están disponibles bajo la Licencia Pública General GNU.

En sus objetivos declarados, el proyecto FLAC alienta a sus desarrolladores a no implementar características de prevención de copia (DRM) o compresión con pérdida de ningún tipo.

Diseño

Estructura de archivos

Un archivo FLAC consta del número mágico fLaC, metadatos y audio codificado.

El audio codificado se divide en cuadros, que consisten en un encabezado, un bloque de datos y una suma de verificación CRC16. Cada cuadro se codifica independientemente uno del otro. Un encabezado de cuadro comienza con una palabra de sincronización, que se utiliza para identificar el comienzo de un cuadro válido. El resto del encabezado contiene el número de muestras, la posición del cuadro, la asignación de canales y, opcionalmente, la frecuencia de muestreo y la profundidad de bits. El bloque de datos contiene la información de audio.

Los metadatos en FLAC preceden al audio. Propiedades como la frecuencia de muestreo y la cantidad de canales siempre están contenidas en los metadatos. También puede contener otra información, la portada del álbum, por ejemplo. FLAC usa comentarios de Vorbis para algunos tipos de metadatos, como el título y el nombre del artista.

Codificación y decodificación

El algoritmo de codificación FLAC consta de varias etapas. En la primera etapa, el audio de entrada se divide en bloques. Si el audio contiene varios canales, cada canal se codifica por separado como un subbloque. Luego, el codificador intenta encontrar una buena aproximación matemática del bloque, ya sea ajustando un polinomio simple o mediante una codificación predictiva lineal general. A continuación, se escribe una descripción de la aproximación, que tiene sólo unos pocos bytes de longitud. Finalmente, la diferencia entre la aproximación y la entrada, llamada residual, se codifica utilizando la codificación Rice. En muchos casos, una descripción de la aproximación y el residuo codificado ocupa menos espacio que el uso de la modulación de código de pulso.

El proceso de decodificación es el inverso de la codificación. Primero se decodifica el residual comprimido. La descripción de la aproximación matemática se usa luego para calcular una forma de onda. El resultado se forma sumando el residual y la forma de onda calculada. Como FLAC comprime sin pérdidas, la forma de onda decodificada es idéntica a la forma de onda antes de la codificación.

Para estéreo de dos canales, el codificador puede optar por codificar conjuntamente el audio. Los canales se transforman en un canal lateral, que es la diferencia entre los dos canales de entrada, y un canal medio, la suma de los dos canales de entrada. En lugar de un canal medio, se puede codificar el canal izquierdo o el canal derecho, lo que a veces es más eficiente en cuanto al espacio.

Aunque el codificador de referencia usa un solo tamaño de bloque para todo el flujo, FLAC permite que el tamaño de bloque en las muestras varíe por bloque.

Compresión

La cantidad de compresión está determinada por varios parámetros, incluido el orden del modelo de predicción lineal y el tamaño del bloque. Independientemente de la cantidad de compresión, los datos originales siempre se pueden reconstruir perfectamente.

Para comodidad del usuario, la implementación de referencia define 9 niveles de compresión, que son preajustes de los parámetros más técnicos del algoritmo de codificación. Los niveles están etiquetados del 0 al 8, y los números más altos dan como resultado una relación de compresión más alta, a costa de la velocidad de compresión. El significado de cada nivel de compresión varía según la implementación.

FLAC está optimizado para la velocidad de decodificación a expensas de la velocidad de codificación. Un punto de referencia ha demostrado que, si bien hay poca variación en la velocidad de decodificación a medida que aumenta el nivel de compresión, más allá del nivel de compresión predeterminado 5, el proceso de codificación lleva mucho más tiempo y se ahorra poco espacio en comparación con el nivel 5.

Comparación con otros formatos

FLAC está diseñado específicamente para empaquetar datos de audio de manera eficiente, a diferencia de los algoritmos sin pérdidas de uso general, como DEFLATE, que se usan en ZIP y gzip. Mientras que ZIP puede reducir el tamaño de un archivo de audio con calidad de CD entre un 10 y un 20 %, FLAC puede reducir el tamaño de los datos de audio entre un 40 y un 50 % aprovechando las características del audio.

Las fortalezas técnicas de FLAC en comparación con otros formatos sin pérdida radican en su capacidad para transmitirse y decodificarse rápidamente, independientemente del nivel de compresión.

Dado que FLAC es un esquema sin pérdidas, es adecuado como formato de archivo para propietarios de CD y otros medios que deseen conservar sus colecciones de audio. Si los medios originales se pierden, dañan o desgastan, una copia FLAC de las pistas de audio garantiza que se pueda recuperar un duplicado exacto de los datos originales en cualquier momento. Una restauración exacta de una copia con pérdida (por ejemplo, MP3) de los mismos datos es imposible. El hecho de que FLAC no tenga pérdidas significa que es muy adecuado para transcodificar, p. a MP3, sin la pérdida de calidad de transcodificación normalmente asociada entre un formato con pérdida y otro. Se puede crear opcionalmente un archivo CUE al copiar un CD. Si un CD se lee y se copia perfectamente en archivos FLAC, el archivo CUE permite la grabación posterior de un CD de audio que es idéntico en datos de audio al CD original, incluido el orden de las pistas y el pregap, pero excluye el texto del CD y otros datos adicionales como letras y gráficos de CD+G.

Adopción e implementaciones

La implementación de referencia de FLAC se implementa como el codificador central libFLAC & biblioteca decodificadora, siendo el principal programa distribuible flac la implementación de referencia de la API libFLAC. Esta API de códec también está disponible en C++ como libFLAC++. La implementación de referencia de FLAC se compila en muchas plataformas, incluida la mayoría de los sistemas operativos Unix (como Solaris, BSD) y similares a Unix (incluido Linux), Microsoft Windows, BeOS y OS/2. Hay sistemas de compilación para autoconf/automake, MSVC, Watcom C y Xcode. Actualmente no hay soporte multinúcleo en libFLAC, pero se pueden usar utilidades como GNU paralelo y varias interfaces gráficas para activar múltiples instancias del codificador.

La compatibilidad con la reproducción de FLAC en dispositivos de audio portátiles y sistemas de audio dedicados es limitada en comparación con formatos como MP3 o PCM sin comprimir. La compatibilidad con FLAC se incluye de forma predeterminada en los dispositivos con Windows 10, Android, BlackBerry 10 y Jolla.

En 2014, varias empresas de productos electrónicos móviles del mercado secundario introdujeron soluciones multimedia que incluyen soporte para FLAC. Estos incluyen la serie NEX de Pioneer Electronics y el VX404 y NX404 de Clarion.

La Unión Europea de Radiodifusión (UER) ha adoptado el formato FLAC para la distribución de audio de alta calidad a través de su red Euroradio. El sistema operativo Windows admite la integración nativa de FLAC desde la introducción de Windows 10. El sistema operativo Android admite la reproducción nativa de FLAC desde la versión 3.1. macOS High Sierra e iOS 11 agregan soporte nativo de reproducción FLAC.

Entre otros, el reproductor de música Pono y el servicio de transmisión utilizaban el formato FLAC. Bandcamp insiste en un formato sin pérdidas para cargar y tiene FLAC como opción de descarga. La Fundación Wikimedia patrocinó una herramienta ECMAScript FLAC en línea gratuita y de código abierto para navegadores compatibles con las funciones HTML5 requeridas.

Apoyo FLAC por diferentes sistemas operativos
Microsoft Windows macOS Linux Android BlackBerry OS iOS
Apoyo al Codec Sí.Sí.Sí.Sí.Sí.Sí.
Apoyo a los contenedores FLAC (.flac)
Matroska (.mka,.mkv)
FLAC (.flac)
Core Audio Format (.caf)
FLAC (.flac)
Matroska (.mka,.mkv)
Ogg (.oga)
FLAC (.flac) FLAC (.flac) FLAC (.flac)
Core Audio Format (.caf)
Notas Soporte introducido en Windows 10.Apoyo introducido en la Sierra Alta.FLAC puede tener que instalarse dependiendo de la distribución.Soporte introducido en Android 3.1Soporte introducido en BlackBerry OS 5.0Soporte introducido en iOS 11 (pero depende del hardware utilizado).

Se admiten varios otros contenedores, independientemente del sistema operativo utilizado, según el software de reproducción utilizado.