Free Lossless Audio Codec
Un article de Wikipédia, l'encyclopédie libre.
Développeur | Xiph.org |
Dernière version | 1.2.1 (le 17 septembre 2007) |
Licence | GNU GPL |
Site web | flac.sourceforge.net |
Free Lossless Audio Codec (FLAC) est un codec libre de compression audio sans perte. À l'inverse de codecs tels que MP3 ou Vorbis, il n'enlève aucune information du flux audio.
Comme d'autres méthodes de compression, FLAC a pour principal avantage de réduire le débit ou la capacité de stockage nécessaire, sans perdre d'informations de la source audio (en anglais, lossless signifie « sans perte »). Par exemple, un enregistrement numérique (tel qu'un CD) encodé en FLAC peut être décompressé pour obtenir une copie identique des données audio. Les sources audio peuvent être encodées en FLAC pour permettre une réduction de taille de 30 à 70 %. La réduction de taille est dépendante de la source: plus le signal est constitué d'ondes régulières (sons naturels), meilleure est la compression. Par contre, un signal aléatoire (bruit) ne se compresse pas très bien. Ce phénomène se constate pour tous les formats de compression sans perte.
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 libre et open source ; ne nécessitant pas le paiement de redevances, il est bien supporté par de nombreux logiciels. Le support de la restitution de FLAC sur les appareils audio portables, et les systèmes audios dédiés est limité mais en progrès [1]. John Coalson est le premier auteur de FLAC.
Le 29 janvier 2003, Xiphophorus (appelée, en 2004, Xiph.org) annonce l'incorporation de FLAC sous la bannière de Xiph.org, rejoignant ainsi Ogg Vorbis, Ogg Theora et Speex.
Sommaire |
[modifier] Projet
Le projet FLAC est constitué de plusieurs éléments :
- le format de flux ;
- libFLAC, une bibliothèque de codage et décodage ainsi qu'une interface aux metadonné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...).
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.
[modifier] Comparaisons
FLAC se distingue d'algorithmes sans perte (tels que ZIP et gzip) en ce qu'il a été créé spécifiquement pour compresser des données audio. La méthode ZIP réduit la taille d'un fichier audio de qualité CD de 20 à 40 %, alors que FLAC obtient des taux de 30 à 70 %. Par ailleurs, un fichier FLAC est composé de blocs successifs d'environ 100 ms de données, et peut être décompressé à la volée durant la lecture, y compris par un système autonome équipé de peu de mémoire (platine CD FLAC, lecteur portable à disque dur ou mémoire Flash, lecteur autonome à disque dur pour chaîne Hi-Fi ou voiture).
Bien que des codecs à perte puissent atteindre des ratio de 80-90 %, voire plus, ils le font en éliminant des données du flux originel. FLAC utilise une technique similaire, mais il ajoute également des données « résiduelles » permettant de restaurer l'original sans déformation.
FLAC est disponible pour pratiquement tous les systèmes d'exploitation.
[modifier] Détails techniques
FLAC permet seulement les échantillons à virgule fixe, pas ceux à virgule flottante. Il peut manipuler n'importe quelles données audios PCM avec une profondeur d'échantillonnage de 4 à 32 bits par échantillon, n'importe quelle fréquence d'échantillonnage de 1 Hz à 1,048,570 Hz avec des incréments de 1 Hz, et n'importe quel nombres de canaux audio de 1 à 8. Les canaux peuvent être groupés comme dans le cas de la stéréo et des canaux 5.1 surround pour tirer parti de la corrélation intercanal pour augmenter la compression. FLAC utilise un CRC pour identifier les morceaux corrompus dans le cas de l'utilisation en streaming, mais aussi le hachage MD5 complet des données PCM brutes stockés dans leur en-tête de métadonnées STREAMINFO.
FLAC admet un paramètre de Golomb entre 0 et 16 pour le code de Rice, et jusqu'à 8 canaux audio et une large gamme de fréquence d'échantillonnage jusqu'à 192 KHz, avec des profondeurs d'échantillonnages variables. FLAC prend aussi en charge le Replay Gain.
FLAC est mis en œuvre dans libFLAC (une bibliothèque pour encoder & décoder). Le programme flac (utilisable en ligne de commande), est le programme de référence qui utilise l'API libFLAC. Ce codec API est aussi disponible en C++ sous le nom de libFLAC++.
L'implantation de référence de FLAC peut-être compilée sur de nombreuses plateformes, incluant la plupart des Unix (tel que Linux, * BSD, Solaris et Mac OS X), Windows, BeOS, et OS/2.
Pour les métadonnées, FLAC utilise le même système que les métadonnées du format Vorbis.
[modifier] Organisation de l'API
libFLAC API est organisé 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 de l'encodage/décodage en utilisant libFLAC à son niveau fichier.
L'API a subi des changements fondamentaux dans sa version 1.1.3 qui pose problème pour la compilation des lecteurs utilisant libFLAC. Personne ne sait à quelle vitesse les développeurs vont s'adapter à ces changements.
[modifier] Références
[modifier] Voir aussi
[modifier] Liens externes
- (en) Site officiel
- (en) Accueil du projet FLAC sur SourceForge
- (fr) Twixo.org : Site (non-officiel) dédié à la compression FLAC
- (fr) Lire Fichier : Page descriptive de l'extension .FLAC