Se connecter avec Microsoft
S'identifier ou créer un compte.
Bonjour,
Sélectionnez un autre compte.
Vous avez plusieurs comptes
Choisissez le compte avec lequel vous voulez vous connecter.

Résumé

Cette mise à jour résout un problème de codage de métadonnées qui entraîne la modification des fichiers de musique FLC (Free Lossless Audio Codec) si leur titre, leur artistes ou d’autres métadonnées sont modifiés. 

Cause

Ce problème peut se produire lorsque les fichiers FLAC contiennent un cadre ID3 avant l’en-tête FLAC. Le cadre ID3 contient des métadonnées telles que le titre et l’artiste. Le responsable de la propriété FLAC a supposé que tous les fichiers FLAC démarrés avec le code de démarrage de 4 codés sur 4 codés sur ce nombre n’avaient pas pris en compte le cadre ID3 au début du fichier. Par conséquent, la trame ID3 serait écrasée sans que le code de début fLaC rende le fichier non lisible.

Résolution

Pour éviter ce problème pour les fichiers de musique FLC à venir, installez le 25 mai 2021 — KB5003214 (builds du système d’exploitation 19041.1013, 19042.1013 et 19043.1013) Preview.

Pour réparer les fichiers de musique FLAC affectés, exécutez le script PowerShell suivant.

Important : Ce script ne restaure pas les métadonnées perdues qui ont été stockées dans le cadre ID3. Toutefois, il rend le fichier à nouveau lisible.

  1. Ouvrez le Bloc-notes.

  2. Copiez-collez le script suivant dans le Bloc-notes :

    # Copyright 2021 Microsoft

    # Ce script répare un fichier FLAC endommagé par Media Foundation en référence à KB5003430.

    # Reportez-vous à KB5003430 pour plus d’informations

    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 $_) })]

    [Chaîne]$File

    )

    # Nous devons récupérer le fichier en minuscules. Nous avons des erreurs

    $FileDirectory = Split-Path -Resolve $File

    $Filename = Split-Path -Leaf -Resolve $File

    $FullPath = Join-Path -Resolve $FileDirectory $Filename

    $Filename = [Chaîne]::Format(« Backup_{0:yyyyMMdd_hhmmss}_{1} », [DateTime]::Maintenant, $Filename)

    $BackupLocation = Join-Path $FileDirectory $Filename

    Write-Output « Outil de réparation Microsoft FLAC. Cet outil répare un fichier audio FLAC endommagé lors de la modification de ses détails. »

    Write-Output « Fichier affecté : $FullPath »

    Write-Output « Une sauvegarde du fichier est effectué : $BackupLocation »

    Write-Output « Voulez-vous continuer ? »

    $choice=$host.ui.PromptForChoice(« Résolution du script FLAC », « Voulez-vous continuer » ('&Oui', '&Non'), 1)

    fonction ParseStreamInfoMetadataBlock([System.IO.FileStream]$stream)

    {

    $blockType = $stream. ReadByte()

    $lastBlock = ($blockType -shr 7) -ne 0

    $blockType = $blockType-band 0x7F

    if ($blockType -ne 0)

    {

    retour $false

    }

    $blockSize = (($stream. ReadByte() -shl 16) -bor ($stream. ReadByte() -shl 8) -bor $stream. ReadByte())

    if ($blockSize -lt 34)

    {

    retour $false

    }

    $minAudioBlockSize = ($stream. ReadByte() -shl 8) -bor $stream. ReadByte()

    $maxAudioBlockSize = ($stream. ReadByte() -shl 8) -bor $stream. ReadByte()

    si ($minAudioBlockSize -lt 16 -ou $maxAudioBlockSize -lt 16)

    {

    retour $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

    $MD 5HashBytes = New-Object octet[] 16

    $stream. Read($MD 5HashBytes, 0, $MD 5HashBytes.Length)

    $MD 5Hash = [Guid]($MD 5HashBytes)

    if ($sampleRate -eq 0)

    {

    retour $false

    }

    #Passage de ces vérifications signifie que nous avons probablement un en-tête d’informations de flux et que nous pouvons reconstruire le fichier

    Write-Output « Informations sur le flux de fichiers »

    Write-Output « Taux d’échantillonnage : $sampleRate »

    Write-Output « Canaux audio : $channelCount »

    Write-Output « Exemple de profondeur : $bitsPerSample »

    Write-Output " Exemple de hachage audio MD5 : $MD 5Hash »

    retour $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)

    pendant ($stream. ReadByte() -eq 0) {}

    # Nous devons maintenant déterminer l’endroit où commence un cadre de métadonnées FLAC valide

    # Nous pointons probablement sur le dernier octet du membre de la taille. Nous allons donc récupérer 4 octets et réessayer.

    $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)

    }

    # Insérer le code de démarrage

    $stream. Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)

    if (Chemin d’accès test « $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. Fermer()

    $fixedStream.Close()

    Move-Item la force « $FullPath.tmp » $FullPath

    }

  3. Dans le menu Fichier, cliquez sur Enregistrer.

  4. Dans la boîte de dialogue Enregistrer sous, recherchez le dossier dans lequel vous voulez enregistrer le script PowerShell.

  5. Dans la zone Nom de fichier, tapez FixFlacFiles.ps1, changez la zone Type de fichier en Documents texte (*.txt), puis cliquez sur Enregistrer.

  6. Dans Windows Explorer, recherchez le script PowerShell que vous avez enregistré.

  7. Cliquez avec le bouton droit sur le script, puis cliquez sur Exécuter avec PowerShell.

  8. À l’invite, tapez le nom de fichier du fichier FLAC non lisible, puis appuyez sur Entrée.

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?
En cliquant sur Envoyer, vos commentaires seront utilisés pour améliorer les produits et services de Microsoft. Votre administrateur informatique sera en mesure de collecter ces données. Déclaration de confidentialité.

Nous vous remercions de vos commentaires.

×