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 !

Fairphone 6+ : son prix en France et sa fiche technique sont connus

Le Fairphone 6+ est le prochain mobile de la marque qui mise sur la modularité et la réparabilité pour séduire les utilisateurs. Voici ses caractéristiques et son prix. Fairphone se…

Revolut obtient enfin sa licence bancaire française, de nouveaux services arrivent

Revolut continue son ascension fulgurante. L’entreprise a validé sa licence bancaire française, lui permettant de proposer à ses clients bien plus de services. Revolut n’est plus une simple institution de…

Fuite de données chez Valve, vos informations sont compromises si vous utilisez ces produits Steam

Valve notifie ses clients européens qu’une fuite de données chez l’un de ses partenaires a compromis leurs informations personnelles. L’entreprise Valve, notamment connue pour sa plateforme gaming Steam, est en…

ASUS VivoBook 16 OLED : SSD 1 To, Intel Core 9, 24 Go de RAM, ce performant ultrabook chute à moins de 900 €, c’est une affaire !

Avec son VivoBook 16 OLED X1605, ASUS part en concurrence frontale face aux MacBook Air d’Apple. Et le moins que l’on puisse dire, c’est que la fiche de caractéristiques est…

Vous pouvez jouer à vos jeux PS Plus sur Steam Deck et Steam Machine en streaming, sans PS5

L’application Asobi Remote Play permet de streamer ses jeux PS Plus sur Steam Deck, Steam Machine et PC Linux. La diffusion est gérée par les serveurs PlayStation, il n’y a…

One UI 9.5 serait déjà en cours de développement, la première bêta pourrait sortir plus tôt que prévu sur les Galaxy S26

Il semblerait que Samsung travaille déjà sur One UI 9.5, la mise à jour qui suivra la version de la surcouche actuellement en bêta. Si la rumeur dit vrai, le…

Plus d’1 Français sur 3 utilise l’IA pour draguer sur les applications de rencontre

De plus en plus de Français confient la séduction sur les applications de rencontre à une IA. Et la plupart des utilisateurs n’assument pas. L’IA peut constituer un bon outil…

Bose SoundLink Flex II : l’enceinte portable avec son HiFi est à moins de 100 €, vite !

Bose est reconnue pour la qualité de ses appareils audio haut de gamme. Mais la marque américaine propose aussi des produits grand public à des prix beaucoup plus accessibles et…

Une phrase invisible sur une page web suffit à fausser la mémoire de votre assistant IA pendant des mois

Un assistant IA doté d’un accès au web lit chaque page dans son intégralité. Certains passages restent hors de portée du regard humain. Ces lignes finissent parfois dans sa mémoire…

Microsoft augmente le coût des licences Windows 11, le prix des PC va encore grimper

RAM, stockage, carte graphique… l’évolution du coût des composants a fait augmenter le tarif des PC ces derniers mois. Et la hausse du prix des licences Windows 11 facturées par…