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

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文件的文件名,然后按回车键。

举报

  • 相关推荐
  • 大家在看
  • KaraboAI:为您的业务创建自定义的AI聊天机器人

    KaraboAI Custom ChatGPT Chatbots是一个用于网站的自定义AI聊天机器人平台。您可以在2分钟内创建定制的AI聊天机器人,并嵌入到您的网站中。该聊天机器人可以根据您的业务需求执行各种复杂任务,如知识检索、商务咨询、数据收集、预约日历、电子商务、报价生成和预订管理等。它提供方便的上游数据集成和下游聊天机器人部署集成,支持多种功能和定价选项。

  • Studia AI:使用AI创建您自己的课程

    Studia AI是一个使用人工智能生成学习步骤的平台。它可以帮助用户创建自己的课程,包括功能丰富的学习步骤生成、个性化定制、智能推荐等。定价根据不同的套餐和功能进行收费。

  • Filmora:易於使用的影片編輯軟體

    Wondershare Filmora是一款簡單易用的影片編輯器,可讓您在Windows和Mac上編輯影片和音訊。Filmora提供了豐富的功能和創意視覺效果,讓您可以創建令人驚嘆的影片。它定位於個人和小型企業用戶,並有多個定價方案供選擇。

  • Dreamora: AI解梦

    Dreamora是一款基于人工智能技术构建的解梦应用,提供准确全面的梦境解释。它包含了从伊本·西里恩(Ibn Sirin)和阿尔·纳布尔西(Al-Nabulsi)等主要解梦师那里得出的所有梦境解释,还有最新的信息和持续更新。只需将您的梦境输入应用程序,人工智能将在几秒钟内提供准确的解释。最重要的是,使用这个应用程序完全免费。

  • Suinfy:AI-powered YouTube视频摘要器

    Suinfy是一个AI-powered YouTube视频摘要器,提取长视频中的关键思想和见解。节省您的时间,提高您的生产力。

  • Amplifiles:转化PDF为动态体验

    Amplifiles可以将PDF转化为动态体验,为销售和营销专业人员提供AI语音解说、自定义CTA、CRM集成等功能,提升销售效果。详细定价和功能列表请访问官网了解。

  • ImageAI.QA:100%免费AI图片描述生成器

    AI图片描述生成器是一个能够使用人工智能自动生成图片描述的工具。它可以帮助艺术家、设计师等创作者揭示他们作品背后的隐藏细节、情感和含义。该工具提供全新的视角,让人们可以更深入地理解和欣赏艺术作品。AI图片描述生成器是一个早期测试版本,部分功能可能还不稳定。如果您在使用过程中遇到任何问题或有任何建议,请随时与我们联系。您的反馈对我们非常重要,将帮助我们改进该工具。

  • SpeedProof:快速修改、检查语法、翻译、解释、总结

    SpeedProof: One-Click AI Text Edit是一个一键式的AI文本编辑插件,可以快速修改、检查语法、翻译、解释和总结所选文本。只需选中文本,点击SpeedProof插件图标,选择所需操作即可使用ChatGPT进行修改。支持检查语法、总结、翻译、重新表达等功能,可在任何语气下进行操作。

  • AI Detector:检测AI生成的内容

    AI Detector是一个在线工具,使用先进的算法和机器学习来检测文本是否由AI生成。它可以分析写作风格和句子结构,判断内容是否由ChatGPT、GPT 4、Bard、Claude或人类创作。您可以免费使用AI Detector,每次最多检测1000个字,并获得95%的准确率。

  • WitChat:AI支持的最佳客户服务系统

    WitChat是一款具有AI集成的客户服务系统。我们的软件通过文本、手机、电话、电子邮件、聊天和社交媒体等多种渠道增强客户互动体验。

  • editoReview.com:基于AI的论文和应用界面的同行评审

    editoReview是一个为学术编辑和营销代理提供咨询服务的平台,旨在评估研究文章或服务插件API在AI界面上的可搜索性和可用性。用户可以通过AI聊天记录或模板文档开始新的评审,引用参考文献或应用程序以与作者或开发者安排会议,支付咨询费用,并发布可共享的评审记录。editoReview通过智能搜索和智能使用的方式帮助编辑和营销人员明确论文或服务插件在界面上的可行性,并在arXiv文献和Zapier市场的其他论文和应用上进行了整合。

  • Draph Art:AI生成的背景去除和高质量产品图片

    Draph Art是一款能够自动生成背景去除、道具、光照、阴影和模特等所有元素的AI产品。无需专业技术,任何人都可以制作出吸引人的产品图片。通过Draph Art,您可以使用相关的产品照片来吸引顾客的注意力。从一张原始照片到多种主题的产品照片,只需告诉我们您想要的主题,AI将分析上传照片的背景氛围和颜色,然后为所选择的主题生成多张照片。

  • 百度文库-智能漫画·智能画本:一站式智能漫画创作工具,从创意到作品一键实现

    百度文库推出的智能漫画创作工具,具有以下优势:1.一站式创作流程,从创意到成品无缝衔接。2.多种漫画风格可选,如韩系卡通、浪漫厚涂等。3.人物形象、表情、场景等描绘精细生动,媲美漫画家水准。4.内置智能编辑器,可对细节进行精修。5.无需专业绘画技能,有创意即可创作。6.目前处于公测阶段,可关注公众号预约体验。

  • 星辰语义大模型-TeleChat:星辰语义大模型,智能对话助手

    TeleChat是由中电信人工智能科技有限公司研发的星辰语义大模型,具备强大的对话生成能力,支持多轮对话,适用于多种场景的智能问答和内容生成。模型经过大量高质量中英文语料训练,具备优秀的通用问答、知识类、代码类、数学类问答能力。

  • Live2D Virtual Human for Chatting based on Unity:基于Unity的Live2D虚拟人实时聊天系统

    AI女友是一款基于Unity开发的Live2D虚拟人实时聊天系统,它利用Live2D技术提供动态的虚拟人形象,结合Unity的实时渲染功能,实现与用户的动态交互和聊天。主要功能包括Live2D虚拟人形象集成、实时聊天、图像处理和人脸检测,支持高清分辨率显示,并且可自定义和扩展。

  • School AI:个性化AI学习助手,提升学习效率

    School AI是一个专为K12学生设计的AI平台,提供个性化学习体验和即时反馈,支持多语言环境,帮助学生以母语进行互动,增强教育的普遍性和包容性。平台对教师免费开放,内置监控和控制工具,帮助教育工作者设计更好、更个性化的课堂体验。

  • MetaAI:使用 Meta AI 助手完成任务、创建免费 AI 生成图像和获取任何问题的答案

    Meta AI 是一款功能强大的 AI 助理,建立在 Meta 的先进 AI 技术之上。它可以帮助您完成各种任务,如创建备忘单、润色电子邮件写作、回答问题等。同时它还具有图像生成功能,可以根据您的文字描述生成相应的图像。Meta AI 免费使用,致力于为用户提供高效、智能、多功能的 AI 体验。

  • Meta Llama 3:Meta 新一代开源大型语言模型,性能卓越

    Meta Llama 3是Meta公司推出的新一代开源大型语言模型,性能卓越,在多项行业基准测试中表现出色。它可支持广泛的使用场景,包括改善推理能力等新功能。该模型将在未来支持多语种、多模态,提供更长的上下文窗口和整体性能提升。Llama 3秉承开放理念,将被部署在主要云服务、托管和硬件平台上,供开发者和社区使用。

  • HuggingChat App:连接先进AI与用户的革命性平台

    HuggingChat是一款iOS应用程序,旨在促进用户与多家提供商(如Mistral AI、Meta和Google)的多个顶尖大型语言模型之间的无缝沟通。它可以满足多种场景需求:激发创意,提供专家指导,促进教育与自我提升,提高工作效率,快速响应日常问题等。作为变革性AI技术的先锋采用者,HuggingChat将让您体验与先进大语言模型对话的无限可能。

  • SpeedLegal:个人AI合同谈判助手

    SpeedLegal是一个利用机器学习技术(特别是深度学习、大型语言模型和通用AI)来突出合同中的条款和关键风险的技术初创公司。我们分析您的文档并发送给您一个简化的报告,以便您在签名前做出更明智的决策。

今日大家都在搜的词: