stringtranslate.com

FLAC

FLAC ( / f l æ k / ; 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 del 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 mediante el algoritmo FLAC normalmente se puede reducir entre un 50 y un 70 por ciento de su tamaño original [4] y se descomprime en una copia idéntica de los datos de audio originales.

FLAC es un formato abierto con licencia libre de derechos y una implementación de referencia que es software libre . FLAC admite etiquetado de metadatos , carátulas de álbumes y búsqueda rápida.

Historia

El desarrollo lo inició Josh Coalson en 2000. El formato bitstream se congeló con el lanzamiento de la versión 0.9 de la implementación de referencia el 31 de marzo de 2001. La versión 1.0 se publicó el 20 de julio de 2001. [5]

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 . [5] [6] [7]

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. [8]

En 2019, se propuso FLAC como estándar del IETF. [9]

Diseño

FLAC es una codificación sin pérdidas de datos de modulación de código de pulso lineal . [10]

Estructura de archivos

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

El audio codificado se divide en fotogramas, que consta de un encabezado, un bloque de datos y una suma de comprobación CRC16 . Cada cuadro está codificado independientemente uno del otro. El encabezado de un marco comienza con una palabra de sincronización , que se utiliza para identificar el comienzo de un marco 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. [10]

Los metadatos en FLAC preceden al audio. Propiedades como la frecuencia de muestreo y el número de canales siempre están contenidas en los metadatos. También puede contener otra información, por ejemplo la portada del álbum . [10] FLAC utiliza comentarios Vorbis para metadatos textuales como el título de la pista 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 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 mediante codificación Rice . En muchos casos, una descripción de la aproximación y el residual codificado ocupa menos espacio que el uso de modulación de código de pulso . [10]

El proceso de decodificación es el inverso de la codificación. Primero se decodifica el residuo comprimido. [11] [12] La descripción de la aproximación matemática se utiliza luego para calcular una forma de onda. El resultado se forma sumando la forma de onda residual y calculada. [13] [14] Como FLAC se 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 ahorra más espacio. [15]

Aunque el codificador de referencia utiliza un tamaño de bloque único para todo el flujo, [10] 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 ajustes preestablecidos 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. [16] [17]

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 requiere considerablemente más tiempo y se ahorra poco espacio en comparación con el nivel 5. [18]

Implementación

Además del formato, el proyecto FLAC también contiene una implementación de referencia gratuita y de código abierto de FLAC llamada libFLAC. libFLAC contiene funciones para codificar y decodificar datos FLAC y manipular los metadatos de archivos FLAC. libFLAC++, un contenedor orientado a objetos alrededor de libFLAC para C++ , y los programas de línea de comandos flac y metaflac, también son parte de la implementación de referencia.

No se sabe que el formato FLAC, junto con libFLAC, estén cubiertos por ninguna patente , y cualquiera es libre de escribir sus propias implementaciones de FLAC.

Comparación con otros formatos

FLAC está diseñado específicamente para empaquetar eficientemente datos de audio, a diferencia de los algoritmos sin pérdidas de uso general como DEFLATE , que se utilizan 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.

Los puntos fuertes técnicos de FLAC en comparación con otros formatos sin pérdidas 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 preservar 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. Es imposible una restauración exacta a partir de una copia con pérdidas (por ejemplo, MP3 ) de los mismos datos. El hecho de que FLAC no tenga pérdidas significa que es muy adecuado para transcodificar, por ejemplo, a MP3, sin la pérdida de calidad de transcodificación normalmente asociada entre un formato con pérdida y otro. Opcionalmente, se puede crear un archivo CUE al extraer un CD. Si un CD se lee y se copia perfectamente en archivos FLAC, el archivo CUE permite grabar posteriormente un CD de audio que es idéntico en datos de audio al CD original, incluido el orden de las pistas y el espacio previo , pero excluyendo el texto del CD y otros datos adicionales como letras y gráficos CD+G . [19]

Adopción e implementaciones

La implementación de referencia de FLAC se implementa como la biblioteca central de codificadores y decodificadores de libFLACflac , siendo el principal programa distribuible la implementación de referencia de la API de 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 FLAC en dispositivos de audio portátiles y sistemas de audio dedicados es limitada en comparación con formatos como MP3 [20] o PCM sin comprimir . La compatibilidad con FLAC está incluida de forma predeterminada en dispositivos Windows 10 , Android , BlackBerry 10 y Jolla .

En 2014, varias empresas de electrónica móvil del mercado de accesorios introdujeron soluciones multimedia que incluyen soporte para FLAC. Estos incluyen la serie NEX de Pioneer Electronics y los 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. [21] El sistema operativo Windows ha admitido la integración FLAC nativa desde la introducción de Windows 10. [22] El sistema operativo Android ha admitido la reproducción FLAC nativa desde la versión 3.1. [23] [24] macOS High Sierra e iOS 11 agregan soporte de reproducción FLAC nativo. [25]

Entre otros, el reproductor de música y el servicio de streaming Pono utilizaban el formato FLAC. [26] [27] Bandcamp insiste en un formato sin pérdidas para la carga y tiene FLAC como opción de descarga. [28] La Fundación Wikimedia patrocinó una herramienta ECMAScript FLAC en línea gratuita y de código abierto para navegadores que admiten las funciones HTML5 requeridas . [29]

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

Ver también

Referencias

  1. ^ "FLAC 1.4.3 lanzado con más optimizaciones, elimina el código específico de PowerPC". 23 de junio de 2023 . Consultado el 19 de febrero de 2024 .
  2. ^ Coalson, Josh. "FLAC - formato". Fundación Xiph.Org . Consultado el 4 de abril de 2013 ."fLaC", el marcador de flujo FLAC en ASCII, lo que significa que el byte 0 del flujo es 0x66, seguido de 0x4C 0x61 0x43
  3. ^ "¡PlayOgg!". Fundación de Software Libre . 17 de marzo de 2010 . Consultado el 1 de octubre de 2013 .
  4. ^ "Observando las relaciones de compresión Flac". Steven Paloma. 7 de febrero de 2012 . Consultado el 10 de mayo de 2018 .
  5. ^ ab "Características". Fundación Xiph.Org . Consultado el 23 de noviembre de 2023 .
  6. ^ "FLAC se une a Xiph.org". Fundación Xiph.org . 29 de enero de 2003 . Consultado el 31 de agosto de 2009 .
  7. ^ Planta, Emmett. "¡FLAC se une a Xiph!". Fundación Xiph.org . Archivado desde el original el 29 de mayo de 2008 . Consultado el 31 de agosto de 2009 .
  8. ^ "FLAC - registro de cambios". Fundación Xiph.org . Consultado el 15 de octubre de 2013 .
  9. ^ van Beurden, Martijn; Tejedor, Andrés. Códec de audio sin pérdidas gratuito. ID borrador-ietf-bodega-flac . Consultado el 14 de mayo de 2023 .
  10. ^ abcdef Coalson, Josh. «Acerca del formato FLAC» . Consultado el 13 de febrero de 2022 .
  11. ^ "stream_decoder.c". libFLAC . Consultado el 19 de febrero de 2022 .
  12. ^ libFLAC/stream_decoder.c, línea 2734.
  13. ^ "lpc.c". libFLAC . Consultado el 19 de febrero de 2022 .
  14. ^ libFLAC/lpc.c, líneas 813–820.
  15. ^ "Especificación de formato FLAC". FLAC . Consultado el 19 de febrero de 2022 .
  16. ^ "Comparación de codificadores FLAC CUETools". Wiki CUETools . Consultado el 27 de mayo de 2013 .
  17. ^ "Configuración de codificación". Centro de medios JRiver . Consultado el 27 de mayo de 2013 .
  18. ^ "Comparación de códecs sin pérdidas". Alma-sintética.co.uk . Archivado desde el original el 2 de febrero de 2009 . Consultado el 26 de noviembre de 2016 .
  19. ^ "Preguntas frecuentes". FLAC . Consultado el 23 de septiembre de 2014 .
  20. ^ "Enlaces". FLAC . Consultado el 24 de marzo de 2009 .
  21. ^ "¿Qué es el sistema EBU Musipop?". UER . 24 de agosto de 2021.
  22. ^ "Los snobs del audio se regocijan: Windows 10 tendrá soporte FLAC en todo el sistema". Mundo PC . Consultado el 10 de julio de 2015 .
  23. ^ "Formatos multimedia compatibles con Android". Android.com . 4 de agosto de 2011 . Consultado el 27 de febrero de 2012 .
  24. ^ "Problema 1461 – Android – Solicitud de mejora de compatibilidad con archivos FLAC". Código de Google . Consultado el 5 de agosto de 2011 .
  25. ^ "iOS 11 ofrece reproducción de audio FLAC sin pérdidas a iPhone y iPad". idownloadblog.com . 9 de junio de 2017 . Consultado el 26 de septiembre de 2017 .
  26. ^ "Preguntas frecuentes". ponomusic.com . 14 de marzo de 2014 . Consultado el 14 de marzo de 2014 .
  27. ^ "Inicio". Qobuz.com . Consultado el 10 de abril de 2014 .
  28. ^ "¿Cómo y por qué debería cargar archivos sin pérdidas?". Campamento de la banda . Consultado el 16 de febrero de 2022 .
  29. ^ Rillke (2015). "Descodificador y codificador JavaScript FLAC" . Consultado el 9 de febrero de 2015 .
  30. ^ "Tipos MIME y extensiones de archivo - XiphWiki".
  31. ^ "FLAC frente a Ogg FLAC".
  32. ^ "La plataforma Android no es totalmente compatible con los formatos de contenedor OGG (OGA) [36906426] - Visible para el público - Seguimiento de problemas".

enlaces externos