日韩一区二区三区在线免费观看-开心久久婷婷综合中文字幕-欧美激情91-久久国产福利-欧美日韩日本国产亚洲在线-国产精品极品国产中出

首頁 > 新聞 > IT資訊 > 正文

微軟官方公布Win10 Bug 或導致音頻損壞

2021-06-03 10:48:25來源:太平洋電腦網   

如果你是一名音樂發燒友,那么應該知道Flac這種常見的無損音樂格式。Flac音樂文件支持metadata,用戶可以編輯metadata,讓音樂文件帶有藝術家、所屬專輯、音軌等等信息。

通常來說,metadata和音頻數據并不相關,修改metadata并不會影響音頻本身。

但是,近日微軟官方公布了Win10中存在一個Bug,在Win10中用資源管理器修改Flac文件的metadata,竟會導致音頻的損壞!

根據Windows Latest的報道,微軟最新發布的一份支持文件披露,如果在Win10的2004或者更高版本中,使用文件資源管理器修改Flac音樂文件的metadata,就會損耗Flac音頻文件。

這個Bug在Win10專業版、家庭版、企業版、工作站版乃至其他版本的Win10中均有出現。

根據微軟本月早些時候發布的支持文件,Win10的文件資源管理器導致了這個錯誤,它破壞了Flac文件頭包含的ID3框架也就是metadata,而這個ID3框架負責存儲音頻的注釋,例如音樂標題、藝術家、專輯、曲目編號等。

在Win10上,Flac的處理程序忽視了ID3框架,該程序認為Flac文件在使用4字節的文件頭,當Flac文件被Win10編輯的時候,ID3框架被覆蓋了,導致沒有了開始代碼,導致了音樂播放器無法識別被修改后的文件。

因此,在Win10中,如果你直接用文件資源管理器修改Flac音樂文件的標題、藝術家等metadata,會導致該文件無法播放。

幸運的是,微軟已經確定了Bug的根本原因,用戶可以通過Windows Update升級KB5003214補丁進行修復。

在KB5003214補丁中,微軟確認了上文提到的錯誤已經被修復,修改了Flac的標題、藝術家等metadata后,Flac不會再變得無法播放。

而對于已經損壞了的Flac文件,微軟則發布了一個PowerShell腳本來進行修復,運行該腳本后Flac文件即可重新播放,不過已經從ID3框架中丟失了的metadata信息并不能恢復。

下面是利用PowerShell腳本修復Flac文件的具體方法。

1、開啟記事本;

2、復制以下字符,粘貼到記事本中:

# 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

}

3、保存文件,在“另存為”對話框中,將目錄定位到你想要保存PowerShell腳本的位置;

4、在文件名輸入框中,輸入“FixFlacFiles.ps1”,將另存為文件的類型更改為Text Documents (*.txt);

5、進入到你保存該PowerShell腳本的目錄;

6、右鍵點擊剛剛保存的腳本,然后選擇“使用PowerShell運行”;

7、出現提示時,輸入無法播放的Flac文件的文件名,然后按下回車鍵。

微軟建議大家安裝本月推送的可選累積更新,以避免修改Flac文件metadata出現的問題。

責任編輯:hnmd003

相關閱讀

推薦閱讀

日日av拍夜夜添久久免费| 午夜国产精品视频免费体验区| 久久中文在线| 国产午夜一区| 久久日文中文字幕乱码| 国产精品x453.com| 日本女优在线视频一区二区| 欧美激情15p| 蜜桃一区二区三区在线| 久久尤物视频| 精品视频黄色| 天堂√8在线中文| 国产精品免费精品自在线观看| 91精品国产91久久久久久密臀 | 久久一区二区三区电影| 国产精品精品国产一区二区| 日本成人在线不卡视频| 欧美福利在线播放网址导航| 伊人情人综合网| 午夜影院日韩| 日本aⅴ免费视频一区二区三区| 青青草97国产精品麻豆| 中文字幕一区久| 日韩高清一区| 在线男人天堂| 久久伊人精品| 国产网站在线| 香蕉大人久久国产成人av| 丝袜亚洲另类欧美综合| 亚洲影视一区| 夜久久久久久| 国产精区一区二区| 亚洲一区国产一区| 成人在线啊v| 先锋影音国产一区| 国产精品久久久久久av公交车| 9国产精品视频| 你懂的视频一区二区| 亚洲黄色在线| 国模大尺度视频一区二区| 午夜在线一区二区| 国产一区99| 日本在线播放一二三区| 9国产精品午夜| 亚洲不卡系列| 六月丁香久久丫| 久久精品国产亚洲aⅴ| 久久婷婷蜜乳一本欲蜜臀| 日本欧美一区二区| 香蕉亚洲视频| 日韩精品免费视频一区二区三区| 日韩久久综合| 女同一区二区三区| 麻豆精品一区二区三区| 亚洲一区二区三区免费在线观看| 亚洲亚洲免费| 69堂精品视频在线播放| 成人久久电影| 久久精品国产久精国产| 99在线精品免费视频九九视| 国产综合久久久| 欧美日韩精品一区二区三区视频| 亚洲成人99| 国产精区一区二区| 亚洲天堂免费电影| 国产在线日韩| 亚洲裸色大胆大尺寸艺术写真| 亚洲欧美小说色综合小说一区| 美女网站色精品尤物极品姐弟| 欧美日韩99| 在线视频cao| 欧美精品一区二区久久| 国产麻豆精品久久| 99久久er| 蜜桃精品视频在线观看| 99精品在线观看| 日韩电影在线观看完整免费观看| 性欧美videohd高精| 欧美伦理在线视频| 久久久久九九精品影院| 麻豆传媒一区二区三区| 四季av一区二区凹凸精品| 秋霞影院一区二区三区| 9999精品免费视频| 国产69精品久久| 久久久久久久高潮| 亚洲一区二区成人| 97青娱国产盛宴精品视频| 国产欧美一区二区色老头| 美女网站久久| 91精品精品| 日韩有吗在线观看| 999久久久国产999久久久| 先锋影音一区二区| 91亚洲人成网污www| 天天影视欧美综合在线观看| 亚洲精品观看| 国产一区网站| 欧美日韩1区| 国产精品久久乐| 亚洲深夜视频| 成人一区二区| 国产视频亚洲| 亚洲精品小说| 亚洲第一在线| 天堂资源在线亚洲| 色天天色综合| 国产主播性色av福利精品一区| 国产亚洲欧美日韩在线观看一区二区 | 少妇精品久久久| 久久久久影视| 99精品视频网| 国产原创一区| 日韩三级一区| 久久精品72免费观看| 亚洲精品大片| 青青青国产精品| 91综合国产| 日本美女久久| 国产精品蜜月aⅴ在线| 亚洲精品tv| 久久国产麻豆精品| 日韩综合在线视频| 免费亚洲一区| 日韩高清不卡一区二区三区| 一本综合久久| 麻豆精品精品国产自在97香蕉| 日韩国产欧美一区二区三区| 国产精品尤物| 亚洲毛片视频| 欧美视频三区| 日韩动漫一区| 99精品在免费线中文字幕网站一区 | 日韩激情综合| 高潮久久久久久久久久久久久久 | 亚洲国产最新| 日韩黄色一级片| 中文字幕亚洲在线观看| 狠狠一区二区三区| 久久精品成人| 欧美高清不卡| 免费看的黄色欧美网站 | 欧美高清hd| 日韩成人午夜精品| 精品亚洲二区| 欧美日韩精品一区二区三区在线观看| 国产福利一区二区精品秒拍| 精品福利网址导航| 欧美性感美女一区二区| 欧美精品一区二区久久| 亚洲一区久久| 三级在线看中文字幕完整版| 欧洲一级精品| 久久精品不卡| 亚洲三级观看| 久久精品日韩欧美| 亚洲图片小说区| 日韩成人久久| 亚洲天堂激情| 欧美资源在线| 午夜精品久久久久久久久久蜜桃| 成人久久网站| 欧美激情aⅴ一区二区三区| 国产成人视屏| 欧美日韩夜夜| 久久国产精品99国产| 热三久草你在线| 欧美96一区二区免费视频| 国产亚洲精品美女久久久久久久久久| 国产精品视频3p| 中文一区二区| 亚洲美女炮图| 欧美黄色一区二区| 欧美三级在线| 日韩午夜精品| 日韩在线电影| 亚洲ab电影| 精品中文字幕一区二区三区av| 欧美激情理论| 影音先锋亚洲一区| 成人h动漫精品一区二区器材| 一本一本久久a久久综合精品| 中文字幕成在线观看| 麻豆精品国产91久久久久久| av不卡一区| 人人精品人人爱| 免费亚洲一区| 精品久久久久久久| 欧美专区18| www一区二区三区| 日日天天久久| www.youjizz.com在线| 久久久免费毛片| 91精品国产自产在线观看永久∴ | 日本成人中文字幕在线视频| 成人三级av在线| 免费观看在线色综合| 日韩国产精品久久| 精品一区二区三区的国产在线观看| 手机精品视频在线观看|