Accueil🇫🇷Chercher

Free Lossless Audio Codec

Free Lossless Audio Codec (FLAC) est un codec libre de compression audio sans perte développé par Xiph.org. Il obtient un taux de compression d'environ 50 % par rapport à des données PCM non-compressées[2]. Son caractère sans perte le rend adapté pour l'archivage de données audio.

Free Lossless Audio Codec
Description de l'image FLAC logo.svg.
Description de l'image FLAC 1.4.0 screenshot.png.
Informations
Développé par Xiph.org
Dernière version 1.4.3 ()[1]
DĂ©pĂ´t gitlab.xiph.org/xiph/flac
Écrit en C
Système d'exploitation Multiplateforme
Formats lus Native FLAC (d)
Formats Ă©crits Native FLAC (d)
Type Codec audio (en)
Format de fichier audio
Licence BSD 3-clauses, licence publique générale GNU version 2 et licence publique générale limitée GNU version 2.0 (d)
Site web xiph.org/flac

FLAC
Free Lossless Audio Codec
Caractéristiques
Extensions
.flac, .oga, .fla
Type MIME
audio/x-flac, audio/flac, audio/x-ogg
PUID
Signatures
66 4C 61 43 00 00 00 22 (hexa)
66 4C 61 43 (hexa)
Développé par
Type de format
Spécification

Historique

Le développement de FLAC a commencé en 2000 en tant que projet indépendant par Josh Coalson[3]. La version 1.0 est publiée le 20 juillet 2001[4].

Le , FLAC rejoint Xiph.org, rejoignant ainsi la collection de formats audio libres soutenus par la fondation, comprenant notamment le conteneur Ogg et les codecs Vorbis, Theora et Speex.

L'Union européenne de radio-télévision (UER) a choisi le format FLAC pour son réseau Euroradio, pour la distribution audio de haute qualité[5].

Android supporte nativement le FLAC depuis sa version 3.1[6].

Sous Windows 10, le lecteur Windows Media supporte le FLAC[7].

En janvier 2017, les navigateurs web Firefox 51 et Google Chrome 46 gèrent nativement le FLAC[8].

Depuis juin 2017, la version 11 de iOS supporte nativement le FLAC[9].

Projet

Le projet FLAC est constitué de plusieurs éléments :

  • le format de flux ;
  • un format conteneur appelĂ© Native FLAC ;
  • libFLAC, une bibliothèque de codage et dĂ©codage ainsi qu’une interface aux mĂ©tadonnĂ©es ;
  • libFLAC++, un accès objet Ă  libFLAC ;
  • flac, un accès en ligne de commande Ă  libFLAC pour coder et dĂ©coder des fichiers .flac ;
  • metaflac, un Ă©diteur en ligne de commande pour les fichiers .flac ;
  • des plugins d’entrĂ©e pour plusieurs lecteurs musicaux populaires (Winamp, XMMS…) ;
  • avec l’inclusion dans le projet Xiph.org, le conteneur Ogg, adaptĂ© pour le streaming (l’ensemble est appelĂ© Ogg FLAC).

Les spécifications du format de flux sont dans le domaine public (le projet FLAC se réserve les droits quant aux spécifications et à la certification de compatibilité). Le projet s’attache aussi à ce qu’aucun brevet ne couvre le format ou les méthodes de codage/décodage. Les bibliothèques libFLAC et libFLAC++ sont disponibles sous licence BSD, les sources de flac, metaflac et des plugins sont sous licence GPL.

Comparaisons

En tant que format sans perte, il conserve l'intégralité des informations contenues dans le flux audio et est comparable à des formats tels que ALAC ou Shorten.

FLAC obtient des taux de compression des données PCM de 30 à 70 %[10] pour un fichier audio de qualité CD. C'est en général un meilleur taux que celui atteint par un algorithme généraliste comme ZIP, qui atteint 20 à 40 %. Les codecs avec perte tels que MP3 ou Vorbis peuvent atteindre 80 à 90% de compression au prix d'une perte d'une partie des données originelles.

Le FLAC utilise la prĂ©diction linĂ©aire pour convertir les Ă©chantillons en une sĂ©rie de blocs non-corrĂ©lĂ©s d’environ 100 ms (connus sous le nom de rĂ©sidus), qui sont stockĂ©s efficacement en utilisant le codage de Golomb-Rice. Il utilise aussi le codage par plages pour les blocs d’échantillons identiques, tels les passages blancs. Ceci lui permet d’être dĂ©compressĂ© Ă  la volĂ©e durant la lecture, y compris par un système autonome Ă©quipĂ© de peu de mĂ©moire (platine CD, lecteur portable Ă  disque dur ou mĂ©moire Flash, lecteur autonome Ă  disque dur pour chaĂ®ne hi-fi ou voiture).

Usages

FLAC est approprié pour tous les archivages de données audio, avec le support des métadonnées, image de couverture, ainsi que pour la recherche rapide. FLAC est un format ouvert ; ne nécessitant pas le paiement de redevances, il est bien supporté par de nombreux logiciels.

Étant un codec sans perte, le FLAC est très utilisé comme format d’archivage[11] : si le support original est perdu, endommagé ou usé, une copie en FLAC des pistes audio garantit qu’une copie exacte des données originales peut être récupérée à tout moment. Un fichier Cue sheet (CUE) peut éventuellement être créé quand on "rippe" un CD. Si le CD est lu et "rippé" parfaitement en fichier FLAC, le fichier CUE permet de graver plus tard un CD audio qui est la réplique exacte de celui d’origine, en incluant l’ordre des pistes, prégaps, et CD-Text. Pourtant certaines données seront tout de même perdues, comme les informations de paroles ou encore les graphiques d’un CD+G, ces données n'étant pas incluses dans le fichier CUE, elles ne seront pas archivées.

Le support de la restitution de FLAC sur les appareils audio portables, et les systèmes audio dédiés est limité mais en progrès[12].

FLAC est disponible pour pratiquement tous les systèmes d’exploitation.

Description technique

Structure d'un flux FLAC

Un flux FLAC commence toujours par la séquence magique fLaC, suivie de blocs de métadonnées décrivant le flux à la suite desquels s'ajoutent des trames contenant les données audio en tant que telles[13].

Le premier bloc de métadonnées est obligatoire et donne des informations utiles au décodage du flux : la taille des blocs audio, la taille des trames audio, la fréquence d'échantillonnage, le nombre de canaux, le nombre total d'échantillons dans le fichier, ainsi que des informations permettant la détection d'erreur[14]. Les autres blocs de métadonnées sont optionnels et permettent de stocker des informations supplémentaires telles qu'une image, une description de la piste sous forme de commentaires Vorbis, ou des indications de positions facilitant la navigation rapide au sein du flux[15].

Chaque trame audio commence par un en-tête décrivant la trame en donnant sa taille, la fréquence d’échantillonnage, le nombre de canaux, la taille d'un échantillon en bits, ainsi que des informations permettant la détection d'erreur[16]. L'en-tête est suivi par des sous-trames, une par canal, chacune contenant les paramètres utilisés pour la compression, suivis des données compressées[16].

MĂ©thode d'encodage

FLAC utilise une méthode d'encodage sans perte combinant un codage prédictif linéaire (en) et un codage de Rice[17].

Le codage prédictif linéaire est une méthode de compression avec perte. Il consiste à prédire la valeur approximative du signal à l'aide d'une suite récurrente linéaire utilisant seulement un petit nombre de paramètres pour être définie et initialisée. FLAC permet l'utilisation de cinq prédicteurs prédéfinis d'ordre 0 à 4, ou bien l'utilisation d'un prédicteur spécifique défini par au plus 32 coefficients[18].

Le codage de Rice complète l'encodage prédictif linéaire en permettant l'encodage sans perte du résidu, c'est-à-dire de la différence entre le signal à compresser et la prédiction, de sorte que l'encodage de FLAC est globalement sans perte. FLAC admet un paramètre pour le codage de Rice compris entre 0 et 30[19].

Gestion de multiples canaux

Un flux FLAC est capable de gérer de 1 à 8 canaux distincts[19], ce qui permet de stocker des flux mono, stéréo ou plus complexes, par exemple 2.1 ou 5.1.

Pour les flux stéréo, FLAC offre la possibilité de décorréler les deux canaux en stockant une combinaison des canaux plutôt que les canaux bruts, ce qui peut améliorer la compression de certains flux[19]. Le choix du mode de combinaison des deux canaux est fait trame par trame[19].

Échantillonnage

FLAC permet d'utiliser une large gamme de frĂ©quences d’échantillonnage. La frĂ©quence d'Ă©chantillonnage peut ĂŞtre stockĂ©e dans l'en-tĂŞte STREAMINFO, ce qui permet de spĂ©cifier n’importe quelle frĂ©quence de Hz Ă  1 048 570 Hz avec des incrĂ©ments de Hz[19]. Pour une utilisation en streaming, il faut nĂ©cessairement spĂ©cifier la frĂ©quence d'Ă©chantillonnage dans les en-tĂŞtes de trame et la plage de frĂ©quences utilisables est alors rĂ©duite[19]. Notamment, la frĂ©quence maximale est alors de 655 360 Hz[19].

FLAC peut encoder les donnĂ©es avec une profondeur d’échantillonnage de 4 Ă  32 bits par Ă©chantillon. Lorsque cette valeur est prĂ©cisĂ©e dans l'en-tĂŞte STREAMINFO, la totalitĂ© de la plage est utilisable. Pour une utilisation en streaming, la profondeur d'Ă©chantillonnage est spĂ©cifiĂ©e dans l'en-tĂŞte de trame et les possibilitĂ©s sont alors rĂ©duites[19] Ă  8, 12, 16, 20 ou 24 bits.

Le FLAC ne supporte que des échantillons entiers, ce qui facilite l'implémentation sur des plateformes sans gestion native des nombres en virgule flottante[20].

DĂ©tection d'erreur

FLAC incorpore différentes mesures permettant la détection d'erreur dans le flux audio.

L'en-tête STREAMINFO contient une empreinte MD5 des données PCM brutes permettant de vérifier au décodage l'intégrité des données, même si l'introduction d'une erreur n'a pas rendu le flux invalide[19].

Chaque trame audio utilise des CRC pour la détection d'erreur. Un CRC-8 permet la vérification de l'intégrité de l'en-tête de la trame, tandis qu'un CRC-16 est utilisé pour vérifier l'intégrité de la trame dans son ensemble, en-tête et données audio compris[19]. Ces CRC permettent des vérifications d'intégrité dans le cas d'une utilisation en streaming.

Métadonnées

Le format FLAC permet de stocker des métadonnées de différents types en plus des métadonnées obligatoires contenues dans l'en-tête STREAMINFO.

Afin de permettre la navigation rapide au sein du fichier par les lecteurs, FLAC permet de stocker des indications de positions dans les en-têtes, qui permettent au décodeur de sauter rapidement à un emplacement du flux sans avoir besoin de le décoder dans son intégralité[19].

FLAC permet de stocker des mĂ©tadonnĂ©es Vorbis[19], ce qui donne la possibilitĂ© de stocker les informations gĂ©nĂ©rales sur le morceau telles que le nom d'artiste, le nom de la piste ou le ReplayGain (en). Les tags ID3 ne sont pas supportĂ©s mĂŞme si le dĂ©codeur de rĂ©fĂ©rence sait les reconnaĂ®tre pour les ignorer[21].

FLAC permet de stocker directement une cuesheet au sein du fichier, ce qui permet Ă©ventuellement de reproduire un CD audio Ă  l'identique Ă  partir du fichier FLAC[19].

Il est également possible de stocker des images telles qu'une jaquette de CD dans les métadonnées. Le format utilisé par FLAC pour les images est proche du champ APIC de ID3v2[19].

Le format autorise des blocs de métadonnées arbitraires à l'usage d'applications tierces, dont le type est spécifié par un identifiant sur 32 bits[19]. Les identifiants peuvent être enregistrés auprès des développeurs de FLAC[22].

Sous-ensemble dédié au streaming

FLAC définit un sous-ensemble du format pour garantir qu'un flux puisse être lu en streaming[19]. Ces options font qu'un décodeur peut commencer à décoder le flux au milieu de celui-ci[19]. Les contraintes rajoutées par ce sous-ensemble concernent notamment les fréquences et la profondeur d'échantillonnage, qui doivent pouvoir être stockées dans les trames et non pas uniquement dans l'en-tête[19].

L'implémentation de référence flac utilise ce sous-ensemble par défaut[19].

Intégration dans d'autres formats de conteneurs

Bien que le format FLAC définisse son propre format de conteneur, il est également possible d'intégrer un flux FLAC dans d'autres conteneurs, notamment Ogg[23], MP4[24] et Matroska[25].

Implémentation

Implémentation de référence

FLAC est mis en œuvre dans libFLAC, la bibliothèque de référence pour coder et décoder des flux FLAC. Le programme flac (utilisable en ligne de commande), est le programme de référence qui utilise l’API libFLAC. Une version C++ est aussi disponible sous le nom de libFLAC++.

L’implémentation de référence de FLAC peut être compilée sur de nombreuses plates-formes, incluant la plupart des systèmes d’exploitation Unix (tels que Linux, * BSD, Solaris et Mac OS X), ReactOS, Windows, HaikuOS.

L'API de libFLAC est organisée autour de flux, flux séparables et fichiers pour permettre d’améliorer l’abstraction du flux binaire de base de FLAC. La plupart des applications FLAC se limiteront à l’utilisation du codage/décodage en utilisant libFLAC à leur niveau.

Autres implémentations

FLAC est également implémenté dans libavcodec de manière totalement indépendante de libFLAC[20].

Notes et références

(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Free Lossless Audio Codec » (voir la liste des auteurs).
  1. (en) « FLAC 1.4.3 Released With More Optimizations, Drops PowerPC-Specific Code », (consulté le )
  2. (en) FLAC Website : codec comparison
  3. (en) « Flac · GitLab », sur GitLab (consulté le ).
  4. (en) « Changelog », sur xiph.org (consulté le ).
  5. Marc, « Le MP3HD : la nouveauté MP3 de Thomson et Fraunhofer », sur www.homecinema-hifi.com, (consulté le )
  6. « Android Supported Media Formats », sur developer.android.com (consulté le )
  7. « Codecs pris en charge », sur msdn.microsoft.com (consulté le )
  8. « Janvier 2017 : support natif du FLAC par Firefox 51 et Chrome 46 », (consulté le )
  9. « iOS 11 intègre nativement le décodage des fichiers audio Flac », sur www.lesnumeriques.com (consulté le )
  10. http://math.univ-lyon1.fr/~caldero/Potiron.pdf TIPE
  11. « ADONIS/SIAF/CINES-GM - 0.4 », sur Archives de France (consultĂ© le ) : « FLAC est très utilisĂ© comme format d'archivage (compression sans perte) », p. 68.
  12. (en) FLAC Website.
  13. (en) Martijn van Beurden et Andrew Weaver, « Free Lossless Audio Codec » (Internet-Draft) (consulté le ), p. 11
  14. (en) Martijn van Beurden et Andrew Weaver, « Free Lossless Audio Codec » (Internet-Draft) (consulté le ), p. 14
  15. (en) Martijn van Beurden et Andrew Weaver, « Free Lossless Audio Codec » (Internet-Draft) (consulté le ), p. 13-14
  16. (en) Martijn van Beurden et Andrew Weaver, « Free Lossless Audio Codec » (Internet-Draft) (consulté le ), p. 12
  17. (en) Martijn van Beurden et Andrew Weaver, « Free Lossless Audio Codec » (Internet-Draft) (consulté le ), p. 6-7
  18. (en) Martijn van Beurden et Andrew Weaver, « Free Lossless Audio Codec » (Internet-Draft) (consulté le ), p. 39-42
  19. (en) « Format », sur xiph.org (consulté le ).
  20. (en) Martijn van Beurden et Andrew Weaver, « Free Lossless Audio Codec » (Internet-Draft) (consulté le ), p. 40
  21. (en) « FAQ », sur xiph.org (consulté le ).
  22. (en) « ID registry », sur xiph.org (consulté le ).
  23. « ogg mapping »
  24. « Encapsulation of FLAC in ISO Base Media File Format »
  25. « Matroska Media Container Codec Specifications »

Annexes

Articles connexes

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.