LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


multimedia:format:wav

Wav

Le format wav signifie Waveform audio vector, il a été developpé par Microsoft et IBM. Il est donc très répandu sur les systèmes Windows mais aussi dans le monde de gnu / Linux.

Ce n'est pas véritablement un format audio mais un conteneur de format audio. En effet, le wav peut contenir des format compressés tels que mp3, pcm, wma etc…

Par conséquent il s'agit bien d'un support qui peut être destructeur, contrairement à ce que l'on pourrait croire.

historique

Le format wav découle du format RIFF (Resource Interchange File Format) développé par Microsoft et IBM en août 1991 sous Windows 3.1. Cette version de Windows fut enrichie d'extensions multimédia et notament du format .wav. Mais ces spécifications définitives on été validées en 1994, ou elles deviennent un standard (Multimedia Data Standards Update April 15, 1994)

Le format audio .WAV

Comme nous l'avons vu, il s'agit d'un conteneur de format audio, cependant il se présente toujours de la façon suivante:

  • Une entête de fichier
  • Les donnés audio

Utilisation

Son utilisation est ancienne et c'est un format désuet aujourd'hui. Néanmoins, le format WAV reste incontournable sous la plate-forme Windows. Il s'agit probablement du format de stockage audio le plus répandu étant donné qu'il s'agit du format natif des sons du système d'exploitation Microsoft Windows.

En effet, il possède de nombreuses limitations dont sa taille maximum limité à 2 Go qui est atteinte avec à peine 20 minutes d'informations au format 5.1 en 24 bit/96 kHz (source Wikipedia).

Les formats .wav rencontrés sous Microsoft servent souvent à transporter de la musique codée en PCM avec une qualité sonore excellente (proche des cd audio) mais avec une taille de fichier énorme, non propice à sa diffusion via les réseaux Internet, ni a une utilisation d'encodage de grande quantité de musique.

De plus, il possèdent un fichier d'en-tête très rudimentaire et n'autorisant pas la gestion de grandes bibliothèques de fichier.

technique et fonctionnement

Souvent considéré (à tort) comme un format non destructeur, car la majorité des fichiers que l'on trouve se servent du format .wav pour transporter des formats non compressés à la base tel que le PCM.

En effet, le format PCM est le codage le plus couramment utilisé, ce qui confère au format wav un encodage et un décodage immédiats, sans compression, avec une qualité sonore par conséquent excellente mais la taille des fichiers est très importante.

Néanmoins, il peut aussi contenir des format mp3 ou d'autres qui eux sont destructeur de la qualitée sonore.

taux de compression et qualitée

Il est toutefois possible de compresser un format wav en changeant son bitrate et notament via Audacious le logiciel libre, mais la qualité ainsi obtenue est bien souvent médiocre !

Logiciels permettant de crée des .WAV sous linux

Liens vers page du soft lp

Logiciels permettant de lire des .WAV sous linux

Liens vers page du soft lp

comment graver des .WAV sous linux

Structures d'un fichier .WAV

source pour la section structure uniquement: www.commentcamarche.net sous licence creatice common

L'en-tête d'un fichier WAV commence dès le premier octet (offset 0). Il a une taille de 44 octets, et est constitué des champs suivants (listés dans l'ordre) :

   TAG1       (4 octets) : Constante « RIFF »         (0x52,0x49,0x46,0x46)
   SIZE1      (4 octets) : Taille du fichier moins 8 octets
   FORMAT     (4 octets) : Format = « WAVE »      (0x57,0x41,0x56,0x45)
   TAG2       (4 octets) : Identifiant « fmt »   (0x66,0x6D,0x74,0x20)
   LGDEF      (4 octets) : Nombre d'octets utilisés pour définir en détail le contenu
   FORMAT     (2 octets) : Format de fichier (1: PCM,  ...)
   NBCANAUX   (2 octets) : Nombre de canaux (1 pour mono ou 2 pour stéréo)
   FREQ       (4 octets) : Fréquence d'échantillonnage (en Hertz)
   BYTEPERSEC (4 octets) : Nombre d'octets par seconde de musique
   NBRBYTE    (2 octets) : Nombre d'octets par échantillon
   NBBITS     (2 octets) : Nombre de bits par donnée
   TAG3       (4 octets) : Constante « data »                  (0x64,0x61,0x74,0x61)
   SIZE2      (4 octets) : Taille du fichier moins 44 octets

Structure

Le format WAV définit une structure de données permettant d'accueillir des données audio sous forme de morceaux (en anglais chunks). Il s'agit de structures de données imbriquées, à la manière de poupées russes.

La structure globale du fichier est la suivante :

Adresse (octet)NomTaille (oct.)Description
00hrID4hMot «RIFF»
04hrLen4hTaille du morceau de données (chunk)
08hrDatarLenMorceau de données (chunk)

La section rData contient le chunk, codé sous la forme suivante :

Adresse (octet)NomTaille (octet)Description
00hwID4Terme “WAVE”
04hFormat Chunk18Format utilisé
1ChWAVE Data Chunk?Données

Format Chunk :

Décalage (octet)NomTaille (octet)Description
00hfId4Terme «fmt » (l'espace est nécessaire)
04hfLen4??
08hwFormatTag2Format (en général 1 pour le format Microsoft Pulse Code Modulation)
0AhnChannels2Nombre de canaux (1=mono, 2=stéréo)
0ChnSamplesPerSec4Fréquence d'échantillonage (en Hz)
10hnAvgBytesPerSec4nChannels * nSamplesPerSec * (nBitsPerSample/8)
Permet d'estimer la taille du tampon nécessaire
14hnBlockAlign2nChannels * (nBitsPerSample / 8)
Permet l'alignement du tampon
16hFormatSpecific2Longueur d'un échantillon en bits (8 ou 16)

Le WAVE Data Chunk :

Adresse (octet)NomTaille (octet)Description
00hdId4Terme «data»
04hdLen4Longueur du champ dData (en octets)
08hdDatadLenDonnées du son échantillonné

Le champ dData est formatté comme suit :

  • En mono 8 bits: chaque octet représente un échantillon,
  • En stéréo 8 bits: 2 octets pour chaque échantillon (canal gauche, canal droit),
  • En mono 16bits chaque mot (octet faible, octet fort) représente un échantillon
  • En stéréo 16 bits: 2 mots pour chaque échantillon (gauche faible, gauche fort, droit faible, droit fort)
multimedia/format/wav.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1