
qmcdump 完整上手避坑指南qmcflac、qmc0、qmc3 转 flac/mp3 一次跑通【免费下载链接】qmcdump一个简单的QQ音乐解码qmcflac/qmc0/qmc3 转 flac/mp3仅为个人学习参考用。项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump上周整理硬盘里的老歌时我翻出一批从 QQ 音乐下载的文件后缀清一色是.qmcflac、.qmc0、.qmc3。双击打不开拖进剪辑软件也不认手动改后缀更是直接报格式损坏。后来我用 qmcdump 这个开源小工具前后不到十分钟就把整批文件全部转成了常规的 flac 和 mp3。这篇文章把我从编译、单文件转换到批量处理的全过程以及实际踩过的几个坑一次性讲清楚。 先说结论qmcdump 是做什么的qmcdump 是一个专门处理 QQ 音乐加密文件格式转换的开源命令行工具核心能力就一句话把.qmcflac、.qmc0、.qmc3还原成标准的 flac / mp3且不重新编码音频数据因此音质理论上与原始文件完全一致。输入扩展名输出扩展名常见场景.qmcflac.flac无损音频文件加密后的形态.qmc0.mp3较老的加密标识之一.qmc3.mp3另一种加密标识它有三个比较实在的特点本地处理所有操作都在你自己的机器上完成不涉及任何文件上传流式转换程序按 8KB 分块读取、处理、写出src/crypt.h中定义了BUFFER_SIZE 8192内存占用很低处理大文件也不会吃满内存体积不变只去掉加密层、不做重编码转出来的文件大小和原文件基本一致。顺便说明项目在 README 里明确写着仅为个人学习参考用把它当作一个学习加密原理的样例工程或者日常整理自己合法拥有的音乐文件的小工具都很合适。 第一步把源码变成可执行文件qmcdump 用 C17 编写构建方式很直接。先拉取源码git clone https://gitcode.com/gh_mirrors/qm/qmcdump cd qmcdump项目自带了makefile在 macOS / Linux 环境下直接执行make编译完成后当前目录下会出现qmcdump可执行文件。如果你希望它全局可用可以执行make install它会把这个二进制移动到/usr/local/bin之后在任何目录都能直接调用qmcdump命令。 第二步单文件转换两条命令就够工具的用法非常朴素只有两种形式qmcdump input_file_path [output_file_path] qmcdump input_directory [output_directory]方括号里的输出参数是可选的。先看单文件场景比如把测试音频里的song1.qmc0转成 mp3./qmcdump song1.qmc0 song1.mp3转换成功后终端会打印一行提示Dumped to song1.mp3表示处理完毕。这里有一个容易被忽略的细节输出参数可以省略。省略时程序会把输出文件写到源文件所在目录文件名保持不变、只替换扩展名。比如./qmcdump song1.qmc0等价于把song1.qmc0转成同目录下的song1.mp3原文件不会被覆盖。这个默认输出路径为源文件夹的行为在 README 里有明确说明如果你不想让转换结果和原始文件混在一起记得显式指定输出路径。 第三步批量转换整个文件夹qmcdump 在 12 月 23 日的更新中加入了整个文件夹的批量转换支持这是处理大量音乐文件时最实用的功能./qmcdump 输入文件夹/ 输出文件夹/程序会扫描输入目录中的.qmc0、.qmc3、.qmcflac文件逐一转换后写入输出目录文件名同步替换扩展名。批量模式有两个值得注意的行为输出目录不存在时会询问你。程序会打印Output path is not a directory.然后问你Create Directory xxx? [y/N]输入y后它会自动创建多级目录src/directory.cpp里的createMultiStageDir负责这件事再继续转换输入其他内容则直接结束。省略输出目录时结果会写回源目录。和单文件模式一样如果不传第二个参数转换产物会生成在输入目录里。批量处理前最好先确认这一点避免转换后的 flac / mp3 和原始加密文件混在一起之后不好清理。 踩坑笔记实际遇到的四个问题上手过程中我遇到的几个问题在这里集中列一下帮后来的人省点时间转换产物与源文件同目录单文件和目录模式都支持省略输出参数产物默认落在源目录。整理文件时建议统一加上输出参数养成习惯。输出目录的交互确认批量转换时如果输出目录不存在程序会停下来等y/N输入。在脚本里调用时要注意这一点提前把输出目录建好或者预判交互。未知扩展名会被强行转成 mp3如果传入的文件扩展名不在qmcflac、qmc0、qmc3之列程序会打印Warning: unknown extname (support: qmcflac, qmc0, qmc3).然后默认按 mp3 输出。看到这条警告时说明文件类型可能不在支持范围内。打不开文件时的报错输入文件不存在或没有读取权限时会输出opening file xxx failed.这样的提示。转换前先确认文件完整、目录有读写权限能避免大部分这类问题。 顺带看懂原理无损的秘密在哪儿好奇的话可以打开src/crypt.cpp看看它的实现逻辑其实很简洁程序维护了一张 256 字节的密钥表对文件从偏移 0 开始逐字节做异或XOR运算偏移量按读取长度递增。密钥值由公式key[(v * v 80923) % 256]计算得出偏移超过0x7FFF时会先取模再查表。因为加密本身是异或运算解密就是对同一个文件再做一次同样的异或数据不会被压缩或重编码所以转换前后的音频内容完全一致。整个转换过程按 8KB 分块流式读写这也是它处理大量文件时内存占用依然很低的原因。⚡ 效率小技巧让批量转换更顺手几个基于真实用法的建议先make install再干活安装到/usr/local/bin后就不必每次 cd 到项目目录任何位置都能直接执行qmcdump。转换前先备份虽然程序不会覆盖原文件但为了保险批量处理前把原始加密文件整体复制一份总没错。转换后抽样验证用支持 flac / mp3 的播放器抽查几个文件或者安装 ffmpeg 后用ffplay 输出文件.flac快速预览确认输出文件能正常播放。配合脚本批量调用把目录模式命令写进一个简单的 shell 脚本配合定时任务或文件整理流程可以省去大量手工操作。 收尾现在就动手试一次qmcdump 的整个使用链路很短clone 源码、make 编译、一条命令转换。对普通人来说它把QQ 音乐格式转换这件事压缩到了分钟级对喜欢研究代码的人而言src/crypt.cpp里那套异或查表逻辑也是理解加密解密原理的绝佳样例。打开终端按上面的步骤跑一遍十分钟内你就能拥有第一批可自由播放的 flac 和 mp3。最后提醒一句请只对自己拥有合法使用权的音乐文件进行操作支持正版才能让好音乐源源不断地出现。【免费下载链接】qmcdump一个简单的QQ音乐解码qmcflac/qmc0/qmc3 转 flac/mp3仅为个人学习参考用。项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考