You have multiple accounts
Choose the account you want to sign in with.

Összefoglalás

Ez a frissítés egy metaadat-kódolási problémát javít, amelynek következtében a szabad veszteségmentes audiokodekek (FLAC) zenefájlok lejátszhatatlanná válnak, ha címük, előadójuk vagy más metaadataik megváltoznak. 

A probléma oka

Ez a probléma akkor fordulhat elő, ha a FLAC-fájlok a FLAC fejléc előtt egy ID3 kerettel ékezetet tartalmaznak. Az ID3-keret metaadatokat, például címet és előadót tartalmaz. A FLAC tulajdonságkezelője azt feltételezte, hogy minden FLAC-fájl a 4 bájtos fLaC kóddal indult el, és nem vette figyelembe az ID3 keretet a fájl elején. Ezért az ID3-keret felülíródik az fLaC indítási kód nélkül, így a fájl nem lesz lejátszható.

Megoldás

A jövőbeli FLAC-zenefájlokra vonatkozó probléma megelőzéséhez telepítse a 2021. május 25. – KB5003214 (az operációs rendszer 19041.1013-as, 19042.1013-as és 19043.1013-as buildjét) –előzetes verzió.

Az érintett FLAC-zenefájlok javításához futtassa az alábbi PowerShell-parancsprogramot.

Fontos: Ez a parancsfájl nem fogja visszaállítani az ID3 keretben tárolt elveszett metaadatokat. A fájl azonban ismét lejátszható lesz.

  1. Nyissa meg a Jegyzettömb alkalmazást.

  2. Másolja és illessze be az alábbi parancsfájlt a jegyzettömbbe:

    # Copyright 2021 Microsoft

    # Ez a parancsprogram kijavítja a MEDIA Foundation által a KB5003430-re való hivatkozással sérült FLAC-fájlt.

    # További információért lásd: KB5003430

    paraméter(

    [parameter(Mandatory=$true;

    HelpMessage="A Media Foundation által sérült FLAC-fájl elérési útja"

    ValueFromRemainingArguments=$true)]

    [ValidateScript({ -not [String]::IsNullOrEmpty($_) -and (Test-Path $_) })]

    [Karakterlánc]$File

    )

    # Biztonsági mentése az aktuális fájlról a hibák miatt

    $FileDirectory = Split-Path -Resolve $File

    $Filename = Split-Path -Levél -Feloldása $File

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

    $Filename = [Karakterlánc]::Format("Backup_{0:yyyyMMdd_hhmmss}_{1}", [DateTime]::Now, $Filename)

    $BackupLocation = Join-Path $FileDirectory $Filename

    Write-Output "Microsoft FLAC javítóeszköz. Ez az eszköz kijavítja a FLAC hangfájlt, amely a részletek szerkesztésekor sérült."

    Write-Output "Érintett fájl: $FullPath"

    Write-Output "A fájlról biztonsági másolat készül: $BackupLocation"

    Write-Output a "Szeretné folytatni?" kérdést.

    $choice=$host.ui.PromptForChoice("A FLAC-parancsprogram rögzítése", "Kíván folytatni", ('&Igen', '&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)

    {

    vissza $false

    }

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

    if ($blockSize -lt 34)

    {

    vissza $false

    }

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

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

    if ($minAudioBlockSize -lt 16 -vagy $maxAudioBlockSize -lt 16)

    {

    vissza $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 byte[] 16

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

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

    if ($sampleRate -eq 0)

    {

    vissza $false

    }

    # Ezeknek az ellenőrzéseknek az átadása azt jelenti, hogy valószínűleg van egy adatfolyam-adatfejléc, és újraépíthetjük a fájlt

    Write-Output "Fájladatfolyam-információk"

    Write-Output "Mintadíj: $sampleRate"

    Write-Output "Hangcsatornák: $channelCount"

    Write-Output "Mintamélység: $bitsPerSample"

    Write-Output "MD5 Audio Sample Hash: $MD 5Hash" (MD5 hangminta kivonat): $MD 5Hash"

    vissza $true

    }

    if ($choice -eq 0)

    {

    Copy-Item $FullPath -Destination $BackupLocation -Force

    $stream = [System.IO.File]::Open($FullPath, [System.IO.FileMode]::Open)

    $stream. Keresés(4; [System.IO.SeekOrigin]::Begin)

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

    # Most ki kell derítenünk, hol kezdődik egy érvényes FLAC metaadatkeret

    # Valószínűleg a méret tag utolsó bájtjára mutatunk, ezért vissza fogunk keresni 4 bájtot, és újra próbálkozunk

    $flacDataStartPosition = $stream. Pozíció – 4

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

    while (-not(ParseStreamInfoMetadataBlock($stream)))

    {

    $flacDataStartPosition = $flacDataStartPosition + 1

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

    }

    # A start kód beszúrása

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

    [bájt[]]$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

    }

  3. Kattintson a Fájl menü Mentés parancsára.

  4. A Mentés másként párbeszédpanelen keresse meg azt a mappát, amelybe menteni szeretné a PowerShell-parancsprogramot.

  5. A Fájlnév mezőbe írja be a FixFlacFiles.ps1szöveget, a Fájltípus mezőben módosítsa a Szövegdokumentumok (*.txt) szöveget, majd kattintson a Mentés gombra.

  6. A Windows Explorerben keresse meg a mentett PowerShell-parancsprogramot.

  7. Kattintson a jobb gombbal a parancsfájlra, és válassza a Futtatás PowerShell használatával parancsot.

  8. Amikor a rendszer kéri, írja be a nem lejátszható FLAC-fájl nevét, majd nyomja le az Enter billentyűt.

További segítségre van szüksége?

Ismeretek bővítése
Oktatóanyagok megismerése
Új szolgáltatások listájának lekérése
Csatlakozás a Microsoft Insiderek

Hasznos volt az információ?

Mennyire elégedett a fordítás minőségével?
Mi befolyásolta a felhasználói élményét?

Köszönjük a visszajelzését!

×