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érdida 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 por el algoritmo de FLAC normalmente se puede reducir a entre el 50 y el 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 regalías 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 lanzó 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 nombre de 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 IETF. [9]

Diseño

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

Estructura de archivo

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

El audio codificado se divide en cuadros, cada uno de los cuales consta de un encabezado, un bloque de datos y una suma de comprobación CRC16 . Cada cuadro se codifica de forma independiente de los demás. 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 canal 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. Las propiedades como la frecuencia de muestreo y la cantidad de canales siempre están contenidas en los metadatos. También pueden contener otra información, como por ejemplo la portada del álbum . [10] FLAC utiliza comentarios Vorbis para metadatos textuales como el título de la canción 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. A continuación, 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 solo unos pocos bytes de longitud. Finalmente, la diferencia entre la aproximación y la entrada, llamada residuo, 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 utilizando la modulación por código de pulsos . [10]

El proceso de decodificación es el inverso de la codificación. Primero se decodifica el residuo comprimido. [11] [12] Luego se utiliza la descripción de la aproximación matemática para calcular una forma de onda. El resultado se forma sumando el residuo y la forma de onda calculada. [13] [14] 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 el 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 intermedio, la suma de los dos canales de entrada. En lugar de un canal intermedio, se puede codificar el canal izquierdo o el canal derecho, lo que a veces es más eficiente en términos de espacio. [15]

Aunque el codificador de referencia utiliza un único tamaño de bloque para todo el flujo, [10] FLAC permite que el tamaño de bloque en muestras varíe por bloque.

Compresión

La cantidad de compresión se determina mediante diversos 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 valores predeterminados de los parámetros más técnicos del algoritmo de codificación. Los niveles están etiquetados de 0 a 8, y los números más altos dan como resultado una mayor relación de compresión, 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]

El formato FLAC está optimizado para la velocidad de decodificación a expensas de la velocidad de codificación. Un estudio comparativo 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 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 para manipular los metadatos de los 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 el empaquetado eficiente de datos de audio, a diferencia de los algoritmos sin pérdida de propósito 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 en un 10-20%, FLAC puede reducir el tamaño de los datos de audio en un 40-50% aprovechando las características del audio. [ cita requerida ]

La ventaja técnica de FLAC en comparación con otros formatos sin pérdida radica en su capacidad de transmitirse y decodificarse rápidamente, independientemente del nivel de compresión. [ cita requerida ]

Como FLAC es un sistema sin pérdidas, es adecuado como formato de archivo para los propietarios de CD y otros medios que desean conservar sus colecciones de audio. Si los medios originales se pierden, se dañan o se 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 a partir de una copia con pérdida (por ejemplo, MP3 ) de los mismos datos es imposible. El hecho de que FLAC sea sin pérdidas significa que es muy adecuado para la transcodificación, 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 copiar un CD. Si un CD se lee y se copia perfectamente a archivos FLAC, el archivo CUE permite grabar posteriormente un CD de audio que sea idéntico en datos de audio al CD original, incluido el orden de las pistas y el pregap , pero excluyendo datos adicionales como letras y gráficos CD+G . [19] Pero dependiendo del programa de grabación utilizado, el CD-Text se puede recuperar de los metadatos almacenados en la hoja CUE y grabar nuevamente en una nueva copia en un medio CD-R en blanco.

Adopción e implementación

La implementación de referencia de FLAC se implementa como la biblioteca de codificador y decodificador principal libFLAC , y el principal programa distribuible flaces 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, incluyendo la mayoría de los sistemas operativos Unix (como Solaris , BSD ) y similares a Unix (incluido Linux ), 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 parallel y varias interfaces gráficas para poner en marcha varias 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 [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 de posventa introdujeron soluciones multimedia que incluyen compatibilidad con FLAC. Entre ellas, se encuentran la serie NEX de Pioneer Electronics y los modelos 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 nativa de FLAC desde la introducción de Windows 10. [22] El sistema operativo Android ha admitido la reproducción nativa de FLAC desde la versión 3.1. [23] [24] macOS High Sierra e iOS 11 agregan soporte de reproducción nativa de FLAC. [25]

Entre otros, el reproductor de música y servicio de streaming Pono utilizó el formato FLAC. [26] [27] Bandcamp insiste en un formato sin pérdida para cargar 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 admitan las funciones HTML5 requeridas . [29]

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

Véase también

Referencias

  1. ^ "FLAC 1.4.3 lanzado con más optimizaciones y elimina código específico de PowerPC". 23 de junio de 2023. Consultado el 19 de febrero de 2024 .
  2. ^ Coalson, Josh. «FLAC – format». 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!". Free Software Foundation . 17 de marzo de 2010. Consultado el 1 de octubre de 2013 .
  4. ^ "Observación de las relaciones de compresión Flac". Steven Pigeon. 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. ^ Plant, Emmett. "FLAC Joins 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 del formato FLAC". FLAC . Consultado el 19 de febrero de 2022 .
  16. ^ "Comparación de codificadores FLAC de CUETools". Wiki de CUETools . Consultado el 27 de mayo de 2013 .
  17. ^ "Configuración de codificación". JRiver Media Centre . Consultado el 27 de mayo de 2013 .
  18. ^ "Comparación de códecs sin pérdida". Synthetic-soul.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 Musipop de la UER?". EBU . 24 de agosto de 2021.
  22. ^ "Los amantes del audio se regocijan: Windows 10 tendrá compatibilidad con FLAC en todo el sistema". PC World . 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érdida para 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é debo subir archivos sin pérdida?". Bandcamp . Consultado el 16 de febrero de 2022 .
  29. ^ Rillke (2015). «Descodificador y decodificador de JavaScript FLAC» . Consultado el 9 de febrero de 2015 .
  30. ^ "Tipos MIME y extensiones de archivos - 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 - Rastreador de problemas".

Enlaces externos