首页 > 业界 > 关键词  > 音乐最新资讯  > 正文

Windows 10 BUG会破坏FLAC音频文件 现已修复

2021-06-02 10:22 · 稿源: cnbeta

如果你习惯从在线商城下载 FLAC(自由无损音频压缩编码)格式的音频文件,请不要使用 Windows10系统的资源管理器来编辑元数据。在 Windows10Version2004及更高版本中存在一个错误,如果使用资源管理器修改元数据,就有可能会损坏 FLAC 音频文件。

这个 BUG 影响 Windows10专业版、家庭版、企业版、工作站和其他 SKU 版本。根据本月早些时候发布的支持文件,Windows10的文件资源管理器的错误将破坏某些FLAC文件,这些文件在FLAC头之前包含一个ID3框架。ID3是一个框架,它负责存储信息,如音乐标题、艺术家、专辑、曲目编号等。

在 Windows10系统,FLAC处理程序忽略了ID3框架,因为它认为FLAC文件在开头使用4字节的fLaC。当音乐文件被用户编辑时,ID3框架被覆盖了,没有开始代码。因此,音乐播放器无法识别修改后的文件。如果音乐文件的标题、艺术家或其他元数据在文件资源管理器中被改变,音乐文件就不会播放或加载。

幸运的是,微软已经确定了根本原因,现在可以通过Windows Update进行修复。在 KB5003214更新的更新日志中,微软确认该错误已被修复,如果你改变了他们的标题、艺术家或其他元数据,自由无损音频编解码器(FLAC)音乐文件将不再变得无法播放。

对于那些有损坏的音乐文件,微软已经发布了一个新的PowerShell脚本,你可以运行它来使文件再次播放。然而,它不能恢复存储在ID3框架中的丢失的元数据。为了避免FLAC音乐文件在未来出现问题,微软建议应用本月的可选累积更新。

解决方案

1. 打开记事本

2. 将以下脚本代码复制到记事本中

# Copyright2021Microsoft

# This script will repair a FLAC file that has been corrupted by Media Foundation in reference to KB5003430.

# Refer to KB5003430for 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 -shr7) -ne0

$ blockType = $ blockType -band0x7F

if ($ blockType -ne0)

{

return $ false

}

$ blockSize = (($ stream.ReadByte() -shl16) -bor ($ stream.ReadByte() -shl8) -bor $ stream.ReadByte())

if ($ blockSize -lt34)

{

return $ false

}

$ minAudioBlockSize = ($ stream.ReadByte() -shl8) -bor $ stream.ReadByte()

$ maxAudioBlockSize = ($ stream.ReadByte() -shl8) -bor $ stream.ReadByte()

if ($ minAudioBlockSize -lt16-or $ maxAudioBlockSize -lt16)

{

return $ false

}

$ minFrameSize = (($ stream.ReadByte() -shl16) -bor ($ stream.ReadByte() -shl8) -bor $ stream.ReadByte())

$ maxFrameSize = (($ stream.ReadByte() -shl16) -bor ($ stream.ReadByte() -shl8) -bor $ stream.ReadByte())

$ sampleInfo = (($ stream.ReadByte() -shl24) -bor ($ stream.ReadByte() -shl16) -bor ($ stream.ReadByte() -shl8) -bor $ stream.ReadByte())

$ sampleRate = $ sampleInfo -shr12

$ channelCount = (($ sampleInfo -shr9) -band0x7) +1

$ bitsPerSample = (($ sampleInfo -shr4) -band0x1F) +1

[UInt64] $ sampleCount = (($ stream.ReadByte() -shl24) -bor ($ stream.ReadByte() -shl16) -bor ($ stream.ReadByte() -shl8) -bor $ stream.ReadByte())

$ sampleCount = (([UInt64] $ sampleInfo -band0xF) -shl32) -bor $ sampleCount

$ MD5HashBytes = New-Object byte[]16

$ stream.Read( $ MD5HashBytes,0, $ MD5HashBytes.Length)

$ MD5Hash = [Guid]( $ MD5HashBytes)

if ($ sampleRate -eq0)

{

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 "MD5Audio Sample Hash: $ MD5Hash"

return $ true

}

if ($ choice -eq0)

{

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() -eq0) {}

# 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 well seek back4bytes 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. 文件菜单上,点击保存。

4. 在 "另存为 "对话框中,找到你要保存PowerShell脚本的文件夹。

5. 在文件名框中,输入FixFlacFiles.ps1,将保存类型框改为文本文档(*.txt),然后点击保存。

6. 在Windows Explorer中,找到你保存的PowerShell脚本。

7. 右键单击该脚本,然后单击用PowerShell运行。

8. 当有提示时,输入无法播放的FLAC文件的文件名,然后按回车键。

举报

  • 相关推荐
  • Shure IntelliMix™ Room 会议套装正式入驻微软中国创新中心 Shure与微软开启声智体验之旅

    2025年11月11日,舒尔全新会议音频解决方案IntelliMix™ Room套件在微软北京创新中心完成安装并投入使用。该方案专为现代会议室设计,提供一站式高品质音频服务,集成卓越音质、简易设置及强大云管理能力。通过微软Teams认证,无缝接入MTR生态系统,支持端到端加密通信,确保会议安全。用户可远程管理系统,降低运维成本。舒尔与微软合作,共同提升企业协作效率,首批体验用户反馈语音清晰流畅,显著优化沟通质量。

  • TikTok Shop美区黑五重磅开启,黑五大战正式打响

    TikTok Shop美区黑五于11月13日启动,首次开展多市场联动大促。活动分三阶段:13-15日为开幕引爆期,16-27日为品类日蓄势期,28日至12月2日为冲刺高峰期。平台通过内容驱动增长,整合明星达人共创、千亿商品曝光及专项补贴资源,助力商家实现爆发。跨境与全托管模式提供结构化激励,多市场错峰接力延长热度,推动全球生意持续增长。

  • 张艺兴×全红婵集体打call!最嗨音乐班凭啥让明星排队合拍?

    ​最近,抖音上一个“音乐班”的视频突然爆火,原因无他——张艺兴和全红婵竟然同框打call了! 一个是国民级偶像,一个是奥运跳水冠军,看似毫无交集的两人,却在和同一个短视频合拍,为这段节奏感炸裂的音乐班表演疯狂喊麦。

  • 音乐节迎来消失潮,微博竟敢强势入局?

    2023年的报复性狂欢犹在眼前,2025年音乐节市场却迎来“消失潮“。 据不完全统计,今年1-7月,全国共有40场音乐节延期或取消,数量甚至超过了延期频发的2024年。更残酷的是,其中仅有2场音乐节最终复办,绝大多数所谓的“延期”,实则是无限期搁置的体面说辞。

  • OpenAI和微软的关系没那么糟,跟英伟达也没那么好

    OpenAI的动作比所有人想象的都要快。 上周二,OpenAI完成重组。其中一个重要变化是:彻底取消了与微软的排他性协议,结束了Azure长达六年的云服务独占模式。此前,OpenAI所有模型的训练、推理与部署都必须优先选择Azure,微软还享有优先购买权。 宣布与Azure“分手”后不到一周,OpenAI便火速宣布了与AWS的战略合作——双方达成一项价值380亿美元的云计算协议,OpenAI将全面接入

  • 新品预售 | Switch 2专属卡皇!佰维 ME300 Express高速存储卡首发

    随着Switch2性能提升,玩家对存储卡速度和容量需求升级。佰维推出专为Switch2设计的ME300 microSD+Express高速存储卡,采用SD7.1新标准,读取速度高达900MB/s,写入速度800MB/s,提供1TB超大容量。该卡能大幅缩短游戏安装、加载时间,确保流畅体验,支持4K输出和掌机模式高帧率渲染。ME300兼顾现有设备兼容性与未来扩展性,现已开启预售,提供三种容量选择。

  • 腾讯音乐Q3财报:反脆弱进化与全球生长力

    2025年,音乐行业站在了一个高速变化的十字路口。 一方面,技术浪潮席卷,AI降低了创作与传播门槛,推动内容生产与分发进入“超速时代”;另一方面,流量红利消退、用户增长趋缓,传统商业模式面临重构,平台的竞争焦点,正从用户规模的“量”转向用户价值的“质”。 在这个混沌的格局中,腾讯音乐娱乐集团(TME)Q3财报依然交出了一份稳健答卷:总收入与调整后净利

  • 微星银色战斧降临!X870E TOMAHAWK MAX WIFI PZ背插主板上线

    微星于11月7日推出MAG X870E TOMAHAWK MAX WIFI PZ战斧导弹主板,首发价3299元。该主板专为AMD AM5平台设计,支持Ryzen 9000系列处理器,采用纯银白色外观与背插式设计,将所有接口移至背面,实现正面简洁视觉效果。配备14+2+1相供电、4个M.2插槽(含2个PCIe 5.0)、双USB4接口及Wi-Fi 7,结合EZ快拆与Debug侦错灯等便捷功能,兼顾高性能与装机便利性,精准切入白色主题细分市场。

  • DTC2025|TCL华星印刷OLED小尺寸突破,全产业技术创新布局

    2025年11月14日,TCL华星在苏州举办全球显示生态大会(DTC2025),以“臻图视界,印韵生辉”为主题。大会展示了AI技术成果及多款LCD、OLED、MLED新品,发布《视觉健康白皮书2.0》。TCL华星强调AI与显示深度融合,推出“AI五星架构”及星智X-Intelligence 3.0大模型,推动产业升级。重点技术包括印刷OLED、Micro LED等创新产品,如全球首款Real Stripe RGB OLED手机显示。公司致力于通过绿色制造和视觉健康技术,打造可持续显示生态,与合作伙伴共促产业转型。

  • Creators’ App迎来重大更新

    索尼与分秒帧联合推出云端影像创作平台ICE-Cloud,集成索尼先进影像技术与高效云端协作能力,为创作者提供从拍摄到后期全流程赋能。平台支持移动端、PC端及网页应用,实现素材自动上传、云端管理、在线审片和项目协同,打破时空限制,提升创作效率。通过Creators’ App连接相机与云端,实现即拍即传、异地实时协作,致力于打造新一代创意工作流。

今日大家都在搜的词: