Windows 10 : un bug corrompt les fichiers FLAC audio, mais il y a une astuce et un patch

Les versions de Windows 10 2004 et ultérieures sont frappées par un bug qui corrompt les fichiers FLAC audio dès que leurs métadonnées sont modifiées. Microsoft reconnaît un problème en lien avec l'Explorateur de Fichiers Windows. Le correctif KB5003214 résout totalement le problème sur les PC affectés. 

flac audio windows 10 bug

Des utilisateurs de Windows 10 2004 et versions ultérieures ont rapporté un bug étrange qui survient avec certains fichiers FLAC. Après l'édition des métadonnées les fichiers sont corrompus – impossible de les lire quel que soit le programme, y compris dans VLC. Le problème est lié à un bug de l'Explorateur de Fichiers. Lorsque l'utilisateur édite les métadonnées d'un fichier FLAC, le programme ajoute de manière erronée des données avant les premiers bits qui permettent normalement aux programmes de reconnaître le fichier.

Du coup lors de l'ouverture aucun programme ne reconnaît la présence de données structurées selon le format FLAC et du coup la lecture ne se lance pas et un erreur apparaît. Microsoft a identifié la cause du problème et a publié un correctif KB5003214 qui corrige, en prime, d'autres bugs. Si vous avez corrompu quelques fichiers FLAC par mégarde, sachez également qu'une astuce est disponible. Microsoft vient en effet de publier un script PowerShell qui répare les fichiers corrompus. Notez néanmoins que le script ne répare pas les métadonnées.

Windows 10 : comment récupérer les fichiers FLAC audio corrompus

Pour cela, c'est relativement simple :

  • Ouvrez Notepad
  • Copiez-collez le code suivant :

# Copyright 2021 Microsoft
# This script will repair a FLAC file that has been corrupted by Media Foundation in reference to KB5003430.
# Refer to KB5003430 for further information
param(
[parameter(Mandatory=$true,
HelpMessage="The path to the FLAC file that has been corrupted by Media Foundation",
ValueFromRemainingArguments=$true)] [ValidateScript({ -not [String]::IsNullOrEmpty($_) -and (Test-Path $_) })] [String]$File
)
# We need to back up the current file incase we have any errors
$FileDirectory = Split-Path -Resolve $File
$Filename = Split-Path -Leaf -Resolve $File
$FullPath = Join-Path -Resolve $FileDirectory $Filename
$Filename = [String]::Format("Backup_{0:yyyyMMdd_hhmmss}_{1}", [DateTime]::Now, $Filename)
$BackupLocation = Join-Path $FileDirectory $Filename
Write-Output "Microsoft FLAC Repair Tool. This tool will repair a FLAC audio file that was corrupted when editing its details."
Write-Output "Affected File: $FullPath"
Write-Output "A backup of the file will be made: $BackupLocation"
Write-Output "Do you wish to continue?"
$choice=$host.ui.PromptForChoice("Fixing FLAC Script", "Do you wish to continue", ('&Yes', '&No'), 1)
function ParseStreamInfoMetadataBlock([System.IO.FileStream]$stream)
{
$blockType = $stream.ReadByte()
$lastBlock = ($blockType -shr 7) -ne 0
$blockType = $blockType -band 0x7F
if ($blockType -ne 0)
{
return $false
}
$blockSize = (($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())
if ($blockSize -lt 34)
{
return $false
}
$minAudioBlockSize = ($stream.ReadByte() -shl 8) -bor $stream.ReadByte()
$maxAudioBlockSize = ($stream.ReadByte() -shl 8) -bor $stream.ReadByte()
if ($minAudioBlockSize -lt 16 -or $maxAudioBlockSize -lt 16)
{
return $false
}
$minFrameSize = (($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())
$maxFrameSize = (($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())
$sampleInfo = (($stream.ReadByte() -shl 24) -bor ($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())
$sampleRate = $sampleInfo -shr 12
$channelCount = (($sampleInfo -shr 9) -band 0x7) + 1
$bitsPerSample = (($sampleInfo -shr 4) -band 0x1F) + 1
[UInt64]$sampleCount = (($stream.ReadByte() -shl 24) -bor ($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())
$sampleCount = (([UInt64]$sampleInfo -band 0xF) -shl 32) -bor $sampleCount
$MD5HashBytes = New-Object byte[] 16
$stream.Read($MD5HashBytes, 0, $MD5HashBytes.Length)
$MD5Hash = [Guid]($MD5HashBytes)
if ($sampleRate -eq 0)
{
return $false
}
# Passing these checks means that we likely have a stream info header and can rebuild the file
Write-Output "File Stream Information"
Write-Output "Sample Rate: $sampleRate"
Write-Output "Audio Channels: $channelCount"
Write-Output "Sample Depth: $bitsPerSample"
Write-Output "MD5 Audio Sample Hash: $MD5Hash"
return $true
}
if ($choice -eq 0)
{
Copy-Item $FullPath -Destination $BackupLocation -Force
$stream = [System.IO.File]::Open($FullPath, [System.IO.FileMode]::Open)
$stream.Seek(4, [System.IO.SeekOrigin]::Begin)
while ($stream.ReadByte() -eq 0) {}
# We now need to figure out where a valid FLAC metadata frame begins
# We are likely pointing to the last byte of the size member so we'll seek back 4 bytes and retry
$flacDataStartPosition = $stream.Position - 4
$stream.Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)
while (-not(ParseStreamInfoMetadataBlock($stream)))
{
$flacDataStartPosition = $flacDataStartPosition + 1
$stream.Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)
}
# Insert the start code
$stream.Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)
if (Test-Path "$FullPath.tmp")
{
Remove-Item "$FullPath.tmp"
}
$fixedStream = [System.IO.File]::Open("$FullPath.tmp", [System.IO.FileMode]::CreateNew)
[byte[]]$startCode = [char[]]('f', 'L', 'a', 'C');
$fixedStream.Write($startCode, 0, $startCode.Length)
$stream.CopyTo($fixedStream)
$stream.Close()
$fixedStream.Close()
Move-Item -Force "$FullPath.tmp" $FullPath
}

  • Enregistrez le fichier avec le nom “FixFlacFiles.ps1” en vérifiant que le type de document est bien “texte” dans Type
  • Retrouvez le fichier que vous avez enregistré et faites un clic droit dessus
  • Cliquez sur Exécuter avec PowerShell
  • Lorsque le script vous le demande, entrez le nom du fichier FLAC corrompu pour le réparer et appuyez sur Entrée

Lire également : Windows 10 – la mise à jour KB5003214 fait buguer la barre des tâches, comment corriger le problème

Vous avez été touché par le problème ? La méthode décrite pour rendre les fichiers corrompus de nouveau jouables a fonctionné ? Partagez votre retour dans les commentaires de cet article !


Réagissez à cet article !

Demandez nos derniers articles !

Microsoft simplifie Edge en supprimant une fonction appréciée, mais pas Copilot

Le navigateur Edge est trop encombré selon Microsoft. Une fonctionnalité utilisée par de nombreux utilisateurs fait donc ses adieux. En revanche, l’IA Copilot reste en place. Difficile pour un navigateur…

L’application Gemini change de design sur iOS, voici à quoi elle ressemble

Google prépare depuis quelques mois une refonte complète de son application Gemini. Nous avons désormais les premières images du nouveau design sur iOS et en effet, ça change. Faire évoluer…

IA

Ce système de conduite autonome chinois inquiète Tesla, et un premier test le confirme

La Chine vient de présenter son rival le plus sérieux au FSD de Tesla. Le système VLA 2.0 de Xpeng a été testé en conditions réelles par des journalistes occidentaux….

Proton Mail évolue pour vous faire oublier Gmail, voici les nouveautés

La messagerie Proton, qui mise sur la sécurité et la confidentialité des données de ses utilisateurs, gagne plusieurs fonctionnalités. Parmi elles, une transition facilitée depuis Gmail pour vous inciter à…

Le Galaxy Book 4 Edge passe à moins de 624 € : l’ultrabook Samsung certifié Copilot+ est à moitié prix

Alors qu’il est affiché à 1 299 € sur le site de Samsung, le Galaxy Book 4 Edge 15,6″ passe à moins de 650 € sur Amazon pour la French…

Choice Day AliExpress : les offres à ne pas rater en mai 2026

Comme chaque mois, AliExpress débute de mai avec son opération Choice Day qui fait chuter les prix sur toute la boutique. C’est le moment idéal pour réaliser d’importantes économies sur…

Ces étoiles géantes simulent leur propre mort, et les astronomes viennent de comprendre pourquoi

Des étoiles géantes capables de simuler leur propre mort intriguent les astronomes depuis des années. Les modèles informatiques butaient sur un paramètre impossible à calibrer. Une équipe de Harvard vient…

Les French Days se terminent chez Boulanger : derniers jours pour profiter des meilleures offres

Les French Days de printemps chez Boulanger se terminent le 5 mai 2026. Il ne reste plus que quelques heures pour en profiter. On a fait le tri pour vous…

Plex augmente le prix de l’abonnement pour regarder vos propres médias

Comme prévu, le Remote Watch Pass de Plex devient plus cher. La formule sert uniquement à regarder vos films et séries en dehors de chez vous en permettant l’accès à…

Amazon brade le DJI Mini 4K à moins de 175 € (-42%) : le meilleur drone pour débuter sans se prendre la tête

Pour les French Days, Amazon casse le prix du DJI Mini 4K. Le drone léger et compact passe à 174 € au lieu de 300 € habituellement. Une économie de…