Le fichier WAV est signalé comme endommagé

Quand un lecteur qualifie un WAV d'endommagé, refuse de l'ouvrir ou l'affiche avec une durée de zéro seconde, les échantillons eux-mêmes sont généralement toujours sur le disque. Ce qui a cassé, c'est le petit groupe de champs de taille de l'en-tête — les valeurs que l'enregistreur écrit en dernier et corrige à la fermeture. Reconstruire cet en-tête autour du PCM survivant n'exige pas de téléverser votre audio.

Votre fichier ne quitte jamais votre appareil — la réparation s'exécute dans votre navigateur. 0 octet téléversé.

Your data is the big block — usually intact. What breaks is the small index. Repair rebuilds it.

Drop a file here or browseTap to choose a file

ZIP · Office · PDF · video · JPG · PNG · RAR/7z · SQLite — repaired right here in your browser. Nothing is uploaded

0 bytes uploadedFree: 3 repairs/day — up to 500 MB video, 100 MB docs & archives, 50 MB photos. Free download. Single repair €5.90. No account required.

Réparer maintenant

  1. Déposez le fichier
  2. La réparation s'exécute en local
  3. Téléchargez le résultat

Un WAV est l'un des conteneurs audio les plus simples qui soient, et c'est justement pour cela qu'une erreur de deux ou quatre octets dans son en-tête peut faire passer tout un enregistrement pour mort. Le fichier est une enveloppe RIFF : l'étiquette ASCII RIFF, une taille de 4 octets en little-endian, l'étiquette WAVE, puis une série de fragments (chunks) — chacun composé d'un nom de 4 octets, d'une taille de 4 octets et d'un corps. Les deux qui comptent sont fmt (remarquez l'espace final), qui déclare la fréquence d'échantillonnage, le nombre de canaux et la profondeur de bits, et data, qui contient les échantillons PCM bruts. Si la taille RIFF à l'offset 4 ou la taille du fragment data est incorrecte — un enregistreur qui s'est arrêté avant de les corriger, un transfert qui a tronqué la fin, un fichier qui a dépassé la limite de taille sur 32 bits — le lecteur se fie au nombre cassé et signale le fichier comme endommagé alors que chaque échantillon est toujours là. Déposez le .wav ci-dessus et l'outil recherche les vrais marqueurs fmt et data dans votre navigateur, recalcule les tailles à partir de ce qui est réellement présent et réécrit un en-tête canonique propre autour de votre PCM intact — sans que rien ne quitte jamais votre appareil.

Pourquoi un WAV est signalé comme endommagé alors que le PCM est intact

Un WAV canonique commence par un prologue de 12 octets — l'étiquette ASCII RIFF, un nombre de 32 bits en little-endian censé être égal à la taille totale du fichier moins 8, et l'étiquette ASCII WAVE — suivi des fragments. Chaque fragment est un nom de 4 octets, une taille de 4 octets en little-endian, puis ce nombre d'octets de corps. Le fragment fmt porte un corps de 16 octets : une étiquette de format à l'offset 0 (1 = PCM, 3 = virgule flottante IEEE, 0xFFFE = WAVE_FORMAT_EXTENSIBLE, 0x11 = IMA ADPCM), puis les canaux (offset 2), la fréquence d'échantillonnage (offset 4), le débit d'octets (offset 8), l'alignement de bloc (offset 12) et les bits par échantillon (offset 14). Le fragment data n'est que son en-tête de 8 octets suivi des échantillons entrelacés. Toute la « carte » menant à des heures d'audio tient dans ces quelques dizaines d'octets.

Cette fragilité est tout le problème. Un enregistreur qui écrit sur le disque au fil de l'eau ne connaît pas la durée finale tant que vous n'avez pas appuyé sur stop, il écrit donc un marqueur de réservation dans la taille RIFF (offset 4) et dans la taille data — souvent 0 ou 0xFFFFFFFF — et réécrit les vraies valeurs en dernière étape, à la fermeture du fichier. Fermez l'application brutalement, coupez le courant, retirez la carte ou plantez le système avant cette correction finale, et le PCM est entièrement écrit mais les tailles disent toujours que le fichier est vide. Les lecteurs croient l'en-tête : Windows Media Player renvoie 0xC00D36C4, la libsndfile d'Audacity signale File contains data in an unknown format (« le fichier contient des données dans un format inconnu ») ou le rejette comme « pas un fichier WAV ou AIFF », et ffmpeg affiche Invalid data found when processing input (« données invalides trouvées lors du traitement de l'entrée »), parfois après avoir averti RIFF size ... bigger than resulting file size (« taille RIFF ... supérieure à la taille réelle du fichier »).

D'autres causes du quotidien aboutissent au même endroit. Une copie ou une synchronisation qui s'est arrêtée trop tôt tronque le corps data, de sorte que sa taille déclarée dépasse les octets présents. Un enregistrement qui a dépassé environ 4 Gio déborde les champs de taille RIFF/data sur 32 bits, si bien que les compteurs bouclent et que la fin paraît illisible. Un fragment de métadonnées égaré écrit avant fmt , ou un décalage dans l'ordre des octets, peut détourner un analyseur naïf des vrais fragments. Dans chacun de ces cas, les échantillons sont intacts — c'est la comptabilité qui ment.

Comment le navigateur reconstruit RIFF/fmt/data sans toucher aux échantillons

La réparation est une reconstruction structurelle de l'en-tête et s'exécute comme du TypeScript pur dans votre onglet. Elle lit le fichier entier (un WAV valide a besoin d'au moins l'en-tête minimal de 44 octets), puis, au lieu de se fier à la taille RIFF de l'offset 4, elle recherche les octets ASCII littéraux fmt n'importe où dans le fichier. C'est le geste clé : une taille maîtresse à zéro, en marqueur de réservation ou débordée ne peut pas l'arrêter, car elle ne lit jamais ce champ pour se repérer. Du corps fmt , elle ne prend que les quatre valeurs dont elle a vraiment besoin — l'étiquette de format, le nombre de canaux (offset 2), la fréquence d'échantillonnage (offset 4) et les bits par échantillon (offset 14). Si les canaux, la fréquence d'échantillonnage ou la profondeur de bits valent zéro, elle s'arrête honnêtement avec un résultat bad-fmt-params au lieu d'émettre du bruit.

Elle recalcule ensuite elle-même les deux champs dérivés — l'alignement de bloc comme canaux × (bits par échantillon ÷ 8), et le débit d'octets comme fréquence d'échantillonnage × alignement de bloc — de sorte qu'un débit d'octets ou un alignement de bloc erronés dans l'en-tête d'origine sont tout simplement écartés et remplacés par l'arithmétique correcte. Elle recherche ensuite l'étiquette data. Si la taille data déclarée est supérieure aux octets réellement présents (le cas de la troncature), elle conserve tout ce qui reste et marque le résultat truncated-data ; s'il n'y a pas d'en-tête data du tout, elle traite les octets situés juste après le corps fmt de 16 octets comme du PCM et le marque no-data-header. Le PCM est alors rogné à un nombre entier de trames d'échantillon pour qu'une dernière trame écrite à moitié ne provoque pas de claquement.

Enfin, elle écrit un nouvel en-tête canonique de 44 octets : RIFF avec une taille corrigée de 36 + longueur du PCM, WAVE, un fragment fmt propre de 16 octets avec le format/canaux/fréquence/bits récupérés ainsi que le débit d'octets et l'alignement de bloc recalculés, puis data avec la vraie longueur du PCM, et vos échantillons copiés tels quels à partir de l'octet 44. Il n'y a ni rééchantillonnage ni réencodage — les octets audio sont exactement ceux que vous avez enregistrés, la réparation est donc sans perte. L'outil indique la fréquence d'échantillonnage, le nombre de canaux, la profondeur de bits et le nombre d'octets de PCM qu'il a récupérés, ainsi qu'une classe de dommage header (une réussite propre) ou truncated-data/no-data-header (un résultat partiel). Rien de tout cela ne touche le réseau — vous pouvez ouvrir l'onglet Réseau et confirmer que pas un octet du fichier n'est envoyé.

Quand elle ne peut pas reconstruire — et ce qu'elle abandonne

Cette réparation atteint ce qui survit ; elle ne peut pas inventer un format qu'elle ne peut plus lire. Elle dépend de la présence du fragment fmt : si fmt est absent ou écrasé, l'outil s'arrête avec un résultat no-fmt plutôt que de deviner, car la fréquence d'échantillonnage, le nombre de canaux et la profondeur de bits ne peuvent pas être déduits du PCM brut — une mauvaise supposition lirait l'audio à la mauvaise vitesse ou comme du bruit entrelacé. Contrairement à une vidéo sans atome moov, aucun fichier de référence sain n'est utilisé ici, donc si l'en-tête de format a disparu, le format a disparu. Un fichier de moins de 44 octets renvoie too-small, et si le rognage aux trames entières ne laisse rien, il renvoie no-pcm.

Comme elle émet un en-tête canonique de 44 octets, les fragments auxiliaires sont abandonnés : les métadonnées de radiodiffusion (bext/BWF avec code temporel et informations d'origine), les points de repère (cue ), les fragments de liste de lecture et d'étiquettes, les balises LIST/INFO (artiste, commentaire), le fragment fact et l'extension de WAVE_FORMAT_EXTENSIBLE (le cbSize, les bits valides, le masque de canaux et le GUID de sous-format). L'audio revient ; ces métadonnées non. La reconstruction suppose aussi des trames d'échantillon de taille constante, si bien qu'un WAV compressé dont l'alignement de bloc n'est pas simplement canaux × octets par échantillon — IMA/MS ADPCM, GSM 6.10 — sera mal décrit par l'alignement de bloc recalculé et risque de ne pas se décoder ; l'outil vise le PCM et la virgule flottante IEEE, où cette arithmétique est exacte.

Deux limites honnêtes de plus. La sortie est un RIFF standard sur 32 bits, donc un PCM de plus d'environ 4 Gio ne peut pas être exprimé dans le champ de taille — cette échelle nécessite RF64/BW64 ou Wave64 (.w64) de Sony, un conteneur différent. Et les échantillons qu'un disque ou une carte défaillants ont écrasés avec des zéros ou du silence ne sont plus sur le disque pour être récupérés ; récupérez d'abord les octets bruts au niveau du stockage, puis reconstruisez l'en-tête. Ce que vous récupérez de façon fiable, c'est le PCM intact, correctement décrit, dans un fichier qu'un lecteur ouvrira vraiment.

Ce que cela peut et ne peut pas réparer

Peut réparer

  • Les WAV où un enregistreur s'est arrêté avant de corriger la taille finale de RIFF/data (marqueur de réservation 0 ou 0xFFFFFFFF) et qui apparaissent avec une durée nulle ou comme endommagés
  • Un fragment data dont la taille déclarée dépasse les octets présents (copie/synchronisation tronquée) — conserve chaque échantillon arrivé sur le disque
  • Un débit d'octets ou un alignement de bloc erroné ou incohérent dans le fragment fmt — les deux sont recalculés à partir des canaux, de la fréquence d'échantillonnage et de la profondeur de bits
  • Un en-tête de fragment 'data' manquant — les octets après le corps fmt sont traités comme du PCM et réenveloppés
  • Une taille maîtresse RIFF absurde à l'offset 4 — totalement ignorée, car l'outil recherche les marqueurs 'fmt ' et 'data' à la place
  • Les WAV PCM entier standard et à virgule flottante IEEE (mono ou multicanal), reconstruits sans perte avec les échantillons copiés octet par octet

Ne peut pas réparer

  • Les fichiers sans fragment 'fmt ' — la fréquence d'échantillonnage, les canaux et la profondeur de bits ne peuvent pas être devinés à partir du PCM brut, donc il s'arrête (signalé comme 'no-fmt')
  • Le WAV compressé (IMA/MS ADPCM, GSM) dont l'alignement de bloc n'est pas canaux × octets par échantillon — l'en-tête recalculé le décrirait mal
  • Radiodiffusion/BWF (bext), points de repère (cue), balises LIST/INFO et l'extension fmt EXTENSIBLE — abandonnés lors de l'écriture de l'en-tête canonique de 44 octets
  • Le PCM de plus de ~4 Gio — une taille RIFF sur 32 bits ne peut pas le contenir ; cela nécessite RF64/BW64 ou Wave64 (.w64)
  • Les échantillons qu'un disque ou une carte défaillants ont écrasés avec des zéros/du silence — récupérez d'abord les octets bruts au niveau du stockage, puis reconstruisez
  • Un fichier de moins de 44 octets, ou un fichier où aucune trame d'échantillon entière ne survit (signalé comme 'too-small' ou 'no-pcm')

Si une réparation échoue, nous vous expliquons pourquoi (données manquantes ou structure endommagée), et vous n'êtes jamais facturé pour une réparation échouée.

Questions fréquentes

Mon WAV s'ouvre en silence ou le lecteur dit qu'il est endommagé — l'enregistrement est-il perdu ?

Presque jamais. Ces symptômes signifient généralement que les champs de taille de l'en-tête sont incorrects — le plus souvent parce que l'enregistreur s'est arrêté avant d'écrire les tailles finales de RIFF et data — et non que les échantillons ont été effacés. Une fois l'en-tête reconstruit autour du PCM survivant, le fichier se lit à nouveau.

Pourquoi Audacity ou ffmpeg rejettent-ils le fichier ?

Ils lisent d'abord l'en-tête. Quand les tailles déclarées sont un marqueur de réservation ou dépassent les données réelles, la libsndfile d'Audacity signale File contains data in an unknown format et ffmpeg affiche Invalid data found when processing input. La réparation ignore ces champs de taille cassés, trouve les vrais marqueurs fmt et data, et recalcule les tailles à partir des octets réellement présents.

Reconstruire l'en-tête réencode-t-il l'audio ou fait-il perdre en qualité ?

Non. C'est une correction structurelle sans perte : les échantillons PCM sont copiés octet par octet dans un fichier doté d'un en-tête de 44 octets corrigé. Il n'y a ni rééchantillonnage ni étape de décodage puis réencodage, donc l'audio est exactement celui que vous avez enregistré.

Il a échoué avec 'no fmt chunk' — pourquoi ne pouvez-vous pas simplement le reconstruire ?

Le fragment fmt est le seul endroit où la fréquence d'échantillonnage, le nombre de canaux et la profondeur de bits sont enregistrés. Sans lui, le PCM brut n'est qu'une suite de nombres — deviner lirait l'audio à la mauvaise vitesse ou brouillerait les canaux. Plutôt que de vous remettre un fichier plausible mais faux, l'outil s'arrête honnêtement.

Le fichier est-il téléversé pour être réparé ?

Non. Le WAV est lu depuis votre disque et reconstruit dans l'onglet de votre navigateur ; toute la réparation est du TypeScript pur, sans aucun aller-retour au serveur. Vous pouvez ouvrir l'onglet Réseau et confirmer que pas un octet du fichier ne quitte votre machine.

Associés : Le MP3 ne se lit pas (synchro de trame / ID3) · "Format non pris en charge" (0xc00d5212) · "Invalid data found when processing input" · Vérifier la promesse zéro téléversement