Prijavite se pomoću Microsofta
Prijavi se ili izradi račun.
Zdravo,
Odaberite drugi račun.
Imate više računa
Odaberite račun putem kojeg se želite prijaviti.

Sažetak

Ovo ažuriranje rješava problem kodiranja metapodataka koji uzrokuje da se glazbene datoteke besplatnog audiokodatoteka (FLAC- a) ne mogu igrati ako se promijeni njihov naslov, izvođač ili drugi metapodaci. 

Uzrok

Taj se problem može pojaviti kada FLAC datoteke sadrže okvir ID3 ispred zaglavlja FLAC-a. Okvir ID3 sadrži metapodatke kao što su naslov i izvođač. Rukovatelj svojstvom FLAC pretpostavio je da su sve FLAC datoteke počele s početnim kodom od 4 bajta fLaC i nisu uzimale u obzir okvir ID3 na početku datoteke. Stoga bi se okvir ID3 prebrisao bez prikaza fLaC koda za pokretanje datoteke koja se ne može prikazati.

Rješenje

Da biste spriječili taj problem za buduće glazbene datoteke sustava FLAC, instalirajte 25. svibnja 2021. – KB5003214 (međuverzije OS-a 19041.1013, 19042.1013 i 19043.1013).

Da biste popravili zahvaćene FLAC glazbene datoteke, pokrenite sljedeću skriptu komponente PowerShell.

Važno: Skripta neće vratiti izgubljene metapodatke pohranjene u okviru ID3. No datoteka se ponovno može reproducirati.

  1. Otvorite Blok za pisanje.

  2. Kopirajte i zalijepite sljedeću skriptu u blok za pisanje:

    # Copyright 2021 Microsoft

    # Ova skripta popravit će FLAC datoteku koju je media Foundation oštetio u odnosu na KB5003430.

    # Dodatne informacije potražite u članku KB5003430

    param(

    [parameter(Obavezno=$true,

    HelpMessage="Put do FLAC datoteke koju je oštetio Media Foundation",

    ValueFromRemainingArguments=$true)]

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

    [Niz]$File

    )

    # Moramo napraviti back-up trenutnu datoteku u kazu da imamo bilo kakve pogreške

    $FileDirectory = Split-Path -Resolve $File

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

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

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

    $BackupLocation = Join-Path $FileDirectory $Filename

    Write-Output "Microsoft FLAC Repair Tool. Alat će popraviti FLAC audiodatoteke oštećene prilikom uređivanja detalja."

    Write-Output "Zahvaćena datoteka: $FullPath"

    Write-Output "Stvorit će se sigurnosna kopija datoteke: $BackupLocation"

    Write-Output "Želite li nastaviti?"

    $choice=$host.ui.PromptForChoice("Popravljanje SKRIPTE ZA FLAC", "Želite li nastaviti", ('&Da', '&Ne'), 1)

    funkcija 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

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

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

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

    if ($sampleRate -eq 0)

    {

    return $false

    }

    # Prenošenje tih provjera znači da vjerojatno imamo zaglavlje podataka o strujanje i možemo ponovno izgraditi datoteku

    Write-Output "File Stream Information" (Podaci o strujanje datoteka)

    Write-Output "Sample Rate: $sampleRate"

    Write-Output "Audio kanali: $channelCount"

    Write-Output "Dubina uzorka: $bitsPerSample"

    Write-Output "MD5 Audio Sample Hash: $MD 5Hash"

    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)

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

    # Sada moramo otkriti gdje počinje valjani okvir metapodataka za FLAC

    # Vjerojatno ćemo upućivate na zadnji bajt člana veličine pa ćemo potražiti 4 bajta i ponovno pokušati

    $flacDataStartPosition = $stream. Položaj - 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)

    [bajt[]]$startCode = [char[]]('f', 'L', 'a', 'C');

    $fixedStream.Write($startCode, 0, $startCode.Length)

    $stream. CopyTo($fixedStream)

    $stream. Zatvori()

    $fixedStream.Close()

    Move-Item -Force "$FullPath.tmp" $FullPath

    }

  3. Na izborniku Datoteka kliknite Spremi.

  4. U dijaloškom okviru Spremanje u obliku pronađite mapu u koju želite spremiti skriptu komponente PowerShell.

  5. U okvir Naziv datoteke upišite FixFlacFiles.ps1, promijenite okvir Spremi kao vrstu u Tekstni dokumenti (*.txt), a zatim kliknite Spremi.

  6. U Windows Explorer pronađite skriptu komponente PowerShell koju ste spremili.

  7. Desnom tipkom miša kliknite skriptu, a zatim kliknite Pokreni pomoću komponente PowerShell.

  8. Kada se to od vas zatraži, upišite naziv datoteke FLAC datoteke koja se ne može igrati, a zatim pritisnite Enter.

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?
Ako pritisnete Pošalji, vaše će se povratne informacije iskoristiti za poboljšanje Microsoftovih proizvoda i usluga. Vaš će IT administrator moći prikupiti te podatke. Izjava o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

×