如何将QQ音乐QMC格式一键转回FLAC与MP3:QMCDecode解码引擎完整指南
如何将QQ音乐QMC格式一键转回FLAC与MP3QMCDecode解码引擎完整指南【免费下载链接】QMCDecodeQQ音乐QMC格式转换为普通格式(qmcflac转flacqmc0,qmc3转mp3, mflac,mflac0等转flac)仅支持macOS可自动识别到QQ音乐下载目录默认转换结果存储到~/Music/QMCConvertOutput,可自定义需要转换的文件和输出路径项目地址: https://gitcode.com/gh_mirrors/qm/QMCDecode副标题从环境配置到批量转换实战三步解锁你的本地音频文件QMCDecode是一个面向 macOS 的QMC 格式转换工具用来把 QQ 音乐下载的加密音频.qmcflac、.qmc0、.qmc3、.mflac等还原成 flac、mp3、ogg 这类通用格式。如果你遇到过歌只能在 QQ 音乐里听、拷出来全是乱码文件的窘境这篇文章会告诉你它如何工作、怎么在十分钟内跑起来以及踩坑时如何自救。全文基于项目当前源码梳理涉及的文件均可在仓库对应路径找到。 它到底是什么一句话定位可以把 QMCDecode 理解成一位加密音频翻译官QQ 音乐的下载文件相当于用专属暗号写成的密信普通播放器读不懂QMCDecode 负责破译暗号把内容翻译成 flac、mp3 这类普通话。它只认 macOS 平台会自动找到 QQ 音乐的缓存目录默认把转换结果吐到~/Music/QMCConvertOutput/。 核心原理拆解密钥藏在文件尾巴里加密文件的结构QMC 文件并不是整包加密而是音频数据 尾部密钥的组合。解密的第一步就是从文件尾部把密钥捞出来。// QMDecoder.swift 中的密钥定位逻辑已精简 try fileHandle.seek(toOffset: UInt64(originFileLength - 4)) // 跳到文件最后4字节 let lastFourBytes try fileHandle.readToEnd() if String(bytes: lastFourBytes, encoding: .utf8) QTag { // 移动端下载文件以 QTag 结尾前面4字节记录密钥长度 // 于是 realAudioSize 文件总长 - 密钥长度 - 8 } else { // PC/macOS 端下载最后4字节是密钥长度小端 // 密钥长度小于 0x300 时从文件尾部按长度截取否则走内置固定密钥 }关键点在于realAudioSize它标出了真实音频数据的长度后续解密只处理这段数据尾部密钥不会混进输出文件。密钥派生一段 TEA 旅程捞出的原始密钥是 Base64 编码的还要经过一层处理才真正可用。QMCKeyDecoder用TEA 分组加密一个古老但轻量的对称加密算法做派生核心思路是把 Base64 解码后的字节拆开前 8 字节与一个tan函数生成的简单密钥交错组合成 16 字节的 TEA 密钥再对剩余部分做 CBC 模式的 TEA 解密。// QMCKeyDecoder.swift 派生密钥已精简 let simpleKey simpleMakeKey(seed: 106, length: 8) // 用 tan() 生成8字节种子 for index in 0..8 { teaKey[index 1] simpleKey[index] // 偶数位放种子 teaKey[(index 1) 1] base64DecodedKey[index] // 奇数位放原始字节 } let subBuffer try decryptTencentTea(inBuffer: ..., key: teaKey) // TEA解密三套解密器按格式分发派生出的密钥长度超过 300 字节走 RC4否则走映射。整个体系通过QMCipher协议统一收口任何解密器都只暴露一个方法qmDecrypt(data:offset:)传入数据块和起始偏移返回还原后的字节。解密器算法特征典型用途QMStaticCipher固定密钥查表异或最快.qmc0、.qmc3等旧格式QMMapCipher查表后做位旋转防御性稍强.qmcflac、.qmflacQMRC4Cipher分段 RC4 流式解密.mflac、.mflac0、.mgg映射类解密的核心其实是一行异或// QMMapCipher.qmDecrypt 的核心运算已精简 for (index, byte) in data.enumerated() { resultArray[index] byte ^ getMask(offset: offset index) // 每个字节与一个伪随机掩码异或掩码来自 key 的查表 位旋转 }异或XOR是加解密里最朴素的技巧A ^ B C再用C ^ B就能还原出A。QMCDecode 的聪明之处在于掩码随偏移变化同一密钥加密出的文件不同位置用不同掩码破解难度因此上升但解密依旧轻量。 快速上手指南十分钟跑通第 1 步准备环境操作系统macOS 10.13 或更高版本开发工具Xcode 11.0内置 Swift 5 工具链无需单独装语言一台能正常登录的 QQ 音乐 mac 客户端用于产生待转换文件第 2 步克隆并打开项目git clone https://gitcode.com/gh_mirrors/qm/QMCDecode cd QMCDecode open QMCDecode.xcodeproj 提示克隆地址就是官方镜像仓库若网络不稳定可重试或使用代理仓库很小只有几个 Swift 源文件下载几乎瞬间完成。第 3 步编译并运行在 Xcode 里按Cmd B编译再按Cmd R运行。预期输出应用启动后自动扫描 QQ 音乐的下载目录文件列表里出现你下载过的 QMC 歌曲界面下方显示默认输出路径~/Music/QMCConvertOutput/点击 Start 按钮转换完成的文件出现在该目录扩展名已变为flac或mp3。如果列表为空通常意味着你的 QQ 音乐版本缓存路径与程序内置路径不一致直接点 Choose File 手动选择文件或文件夹即可详见后文避坑与问答。 实战场景演示整张专辑 qmcflac 批量转 flac假设你下载了一张 12 首歌的专辑全部是.qmcflac格式目标是把它们一次性还原成无损 flac 并拷进自己的音乐库。① 输入确认文件列表中的 12 个.qmcflac文件程序默认已扫描出 QQ 音乐目录下的全部加密文件。② 处理点击 Start。程序按 CPU 物理核心数建立多个并发队列把文件分发到各队列并行解密。每个文件内部走完定位尾部密钥 → TEA 派生 → 按格式选择解密器 → 逐字节异或还原的完整链路最后以原子写入方式落盘。③ 输出~/Music/QMCConvertOutput/下出现 12 个.flac文件文件名与原文件一致可直接用任何支持 flac 的播放器打开。⚠️ 注意事项转换是新文件写到输出目录不会改动原始加密文件可以放心反复实验。️ 进阶与定制改配置、扩格式、做集成修改默认输出目录默认路径写在QMCDecode/ViewController.swift的outputFolderURL惰性属性里NSHomeDirectory() /Music/QMCConvertOutput/改动后重新编译即可当然更简单的方式是运行时用 Output Folder 按钮现场指定。注册新的加密格式所有格式映射集中在QMCDecode/Constants.swift的encryptExtDictionary// 以 qmc0 为例加密后缀 → 输出后缀 → 加密版本 qmc0: ExtensionAndVersion(ext: mp3, version: .v1), mflac: ExtensionAndVersion(ext: flac, version: .v2),新增格式只需仿照此表加一行再确认对应版本的解密器能处理即可。注意字典里还有几个十六进制后缀如666c6163对应 flac这类格式用文件头标识而非扩展名别漏掉。把解码核心集成进自己的 App解码逻辑与 UI 是解耦的QMDecoder负责读取与密钥搜索QMCipher负责解密。你完全可以只引用QMDecoder.swift、QMCKeyDecoder.swift、QMCipher.swift、TeaCipher.swift这四个文件在自己的 macOS 工程里直接调用let decoder try QMDecoder(originFilePath: 输入路径, outputDirectory: 输出目录) try decoder.decryptAndWriteToFile() // 一步完成解密与落盘 集成时注意QMCipher的解密接口是qmDecrypt(data:offset:)offset 用于流式分段解密连续调用时务必保持偏移累加否则分段处会解出乱码。⚠️ 避坑与问答问 1启动后文件列表是空的扫不到歌现象打开应用列表空白下方目录看起来也不对。原因程序内置的 QQ 音乐缓存路径~/Library/Containers/com.tencent.QQMusicMac/.../iQmc/是固定写死的不同 QQ 音乐版本或系统迁移后路径可能变化。解法直接用 Choose File 手动选择缓存目录或单个 QMC 文件若不确定缓存位置可在 QQ 音乐客户端设置 → 下载设置里查看下载目录。问 2转换成功但文件打不开 / 播放报错现象输出目录有文件双击无法播放。原因大概率是密钥定位失败导致realAudioSize计算错误把尾部密钥一起解了出来也可能是原始文件下载不完整。解法确认源文件大小正常几 MB 起步几百 KB 的多半是残缺文件重新下载后再转若仍失败把该文件单独放一个文件夹转换观察控制台输出的错误信息。问 3转换后的音乐标签歌手、专辑乱码或丢失现象能播放但歌曲信息错乱。原因QMC 文件本身往往不带完整 tag还原出的裸流自然缺元数据这是格式本身的问题不是转换 bug。解法用 kid3 这类批量标签工具补全信息可以选中整个输出目录一次性处理再顺手重命名文件名。问 4转换时界面卡住、转大文件很慢现象几十 MB 的 flac 文件转换时窗口无响应。原因程序按 CPU 核心数建了多个并发队列尽量跑满 CPU老旧机器可能因此吃紧另外单文件解密是同步操作。解法一次少选几个文件在系统活动监视器确认 CPU 占用若持续 100% 属正常现象稍候即可不追求极限吞吐时可手动把queueArray的核心数改小。问 5.mflac转出来是乱码流现象输出 flac 文件播放器能识别但全是噪音。原因RC4 解密器的分段逻辑依赖偏移对齐如果调用方没有正确传递累计偏移分段衔接处就会解错。解法确认使用的调用方式与QMDecoder一致从 offset 0 开始、单次读完realAudioSize集成到自研代码时检查是否对同一个 cipher 实例传入了错误的 offset。 收尾延伸边界、源码与下一步适用边界QMCDecode 只支持 macOS只处理 QQ 音乐系 QMC 加密音频.qmcflac、.qmc0/.qmc2/.qmc3、.mflac/.mflac0、.mgg/.mgg1、.qmcogg、.bkcmp3/.bkcflac等转换后不保留原始加密文件两者独立存在。项目采用 MIT 协议请仅用于个人合法获得的音频文件遵守相关版权法规。相关源码位置仓库内路径解密协议与三种实现QMCDecode/QMCipher.swift主解码器与密钥定位QMCDecode/QMDecoder.swiftTEA 密钥派生QMCDecode/QMCKeyDecoder.swift、QMCDecode/TeaCipher.swift格式映射表与内置固定密钥QMCDecode/Constants.swift界面与并发调度QMCDecode/ViewController.swift下一步行动建议先把仓库克隆下来编译跑通一个文件再试着在encryptExtDictionary里注册一个你自己遇到的加密后缀动手改一次代码你对这套尾部密钥 异或还原的设计会有更直观的体感。如果手头有大量需要批量补 tag 的转换产物记得搭配 kid3 一起使用能省下大量手工操作。【免费下载链接】QMCDecodeQQ音乐QMC格式转换为普通格式(qmcflac转flacqmc0,qmc3转mp3, mflac,mflac0等转flac)仅支持macOS可自动识别到QQ音乐下载目录默认转换结果存储到~/Music/QMCConvertOutput,可自定义需要转换的文件和输出路径项目地址: https://gitcode.com/gh_mirrors/qm/QMCDecode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PullToMakeSoup 不止于 UITableView:在 UICollectionView 中集成下拉刷新的实战教程

PullToMakeSoup 不止于 UITableView:在 UICollectionView 中集成下拉刷新的实战教程

PullToMakeSoup 不止于 UITableView:在 UICollectionView 中集成下拉刷新的实战教程 【免费下载链接】PullToMakeSoup Custom animated pull-to-refresh that can be easily added to UIScrollView 项目地址: https://gitcode.com/gh_mirrors/pu/PullToMakeSoup …

2026/8/18 18:32:57 阅读更多 →
OBS Virtual Cam 虚拟麦克风完全指南:把 OBS 声音伪装成系统设备的底层原理一次讲透

OBS Virtual Cam 虚拟麦克风完全指南:把 OBS 声音伪装成系统设备的底层原理一次讲透

OBS Virtual Cam 虚拟麦克风完全指南:把 OBS 声音伪装成系统设备的底层原理一次讲透 【免费下载链接】obs-virtual-cam obs-studio plugin to simulate a directshow webcam 项目地址: https://gitcode.com/gh_mirrors/ob/obs-virtual-cam 你可能想不到&…

2026/8/18 18:32:57 阅读更多 →
10分钟快速上手希腊神话读书笔记:用Obsidian打开神话宇宙的完整新手教程

10分钟快速上手希腊神话读书笔记:用Obsidian打开神话宇宙的完整新手教程

10分钟快速上手希腊神话读书笔记:用Obsidian打开神话宇宙的完整新手教程 【免费下载链接】graph-note-of-greek-myth 希腊神话读书笔记 项目地址: https://gitcode.com/gh_mirrors/gr/graph-note-of-greek-myth 你是否曾在读《荷马史诗》《神谱》时被错综复杂…

2026/8/18 18:32:57 阅读更多 →

最新新闻

KKManager:专为Illusion游戏打造的模组管理神器,5分钟搞定更新与冲突排查

KKManager:专为Illusion游戏打造的模组管理神器,5分钟搞定更新与冲突排查

KKManager:专为Illusion游戏打造的模组管理神器,5分钟搞定更新与冲突排查 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager 当你的游戏…

2026/8/18 23:29:14 阅读更多 →
为通用智能体构建结构化元认知:实现深度推理与自我调节

为通用智能体构建结构化元认知:实现深度推理与自我调节

1. 项目概述:当通用智能体开始“思考”自己的“思考”最近和几个做智能体(Agent)的朋友聊天,大家普遍有个感觉:现在的智能体框架,无论是基于LLM的AutoGPT、LangChain,还是更底层的ReAct、COT&am…

2026/8/18 23:29:14 阅读更多 →
CTF入门教程:从零构建网络安全实战技能体系

CTF入门教程:从零构建网络安全实战技能体系

这次我们来看一个CTF夺旗赛的入门教程资源。这个标题指向的是一套号称“2026最新”、“从零基础到精通”的100集CTF学习教程。对于想进入网络安全领域,特别是对CTF竞赛感兴趣的新手来说,一套系统、完整且紧跟技术发展的教程至关重要。它能帮你绕过盲目自…

2026/8/18 23:29:14 阅读更多 →
放大器失真全解析:从原理、分类到实战诊断与优化

放大器失真全解析:从原理、分类到实战诊断与优化

1. 从一次“听感不对”的调试经历说起最近在调试一个前级放大电路时,遇到了一个挺典型的问题:输入一个干净的正弦波,输出波形看起来大体上还是正弦波,但仔细看,波形的顶部和底部似乎被“削平”了一点点,同时…

2026/8/18 23:29:14 阅读更多 →
嵌入式Linux Shell脚本进阶:资源受限环境下的高效自动化实践

嵌入式Linux Shell脚本进阶:资源受限环境下的高效自动化实践

1. 项目概述:嵌入式Linux下的Shell脚本进阶之路 如果你已经能写一些简单的Shell脚本来完成文件备份、日志清理,那么恭喜你,你已经迈出了自动化运维的第一步。但在嵌入式Linux的世界里,脚本的使命远不止于此。当你的开发板资源捉襟…

2026/8/18 23:29:14 阅读更多 →
中小企业数字资产管理系统选型与成本优化指南

中小企业数字资产管理系统选型与成本优化指南

1. 中小企业数字资产管理痛点解析 当企业规模发展到20-50人阶段,员工电脑里的设计稿、合同文档、产品照片开始呈现指数级增长。我见过最典型的案例是某电商公司,运营人员每周要花3小时在微信群里翻找三个月前的产品主图,设计师的PSD版本混乱到…

2026/8/18 23:28:13 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →