一条命令把 NCM 转成 MP3:ncmdump 完整指南
【免费下载链接】ncmdumpncmdump - 网易云音乐NCM转换项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump
ncmdump 是一个开源的 NCM 转换工具,一条命令就能在本地把网易云音乐的 .ncm 加密文件还原成 MP3、FLAC 等通用格式,并自动写回歌名、歌手、封面等标签,全程离线、不上传。
.ncm 文件为什么在别的播放器上打不开
同一首歌,手机里用网易云播放正常,拷到车载 U 盘后屏幕提示"不支持的格式",换到电脑上的其他播放器也打不开。问题不在播放器:这类文件后缀是 .ncm,是网易云音乐专用的加密封装,只有它自家客户端认识。
还有一类情况更隐蔽:有的文件能播,但没有封面、没有标签,歌名是一串数字。这通常是别人"脱壳"后只存了音频流,文件里藏着的那份元数据(歌名、歌手、专辑、码率)被弄丢了。
常见的绕法有两条。一是装一些电脑端的"解密软件",不少捆绑广告,文件存在哪、改成什么名字也不透明;二是用在线转换,歌要先传到别人服务器上,涉及会员歌曲时,上传这个动作本身就冒险,音质和速度也看对方脸色。本地命令行工具一次性绕开这两个问题:文件始终留在自己的硬盘上,过程可以在终端里逐步看到,ncmdump 就是这类工具中依赖最少的一种。
NCM 解密原理,一句话讲清楚
把 NCM 文件理解成一个保险箱:里面装的还是普通音频,外面裹了加密壳,"钥匙"也被拆开放在箱子里面。ncmdump 要做的事,就是找出钥匙、开箱,顺便把箱底的"名片"(元数据)一起取出来。
核心流程在 src/main/java/io/qaralotte/ncmdump/dump 目录下的 NcmDump.java 里,一共四步:
- 验明正身:读文件头部的 8 字节魔数,与内置常量比对;不一致会打印 "Incorrect MAGIC",说明这个文件大概率不是合法的 NCM。
- 解开密钥:读出加密的密钥数据,逐字节异或 0x64 还原,再用内置的 AES-ECB 解密,经 RC4-KSA 组装出一个 RC4"密钥盒"。
- 解密音频:用这个密钥盒对整段音频主体做一次 RC4 解密,剩下的就是干净的音频流。
- 写回标签:从元数据段还原歌名、歌手、专辑、码率和封面,与解密后的音频一起按"歌手 - 歌名.格式"落盘,并把这些信息写进新文件的标签里。
最终是什么格式,由文件内原始音频决定,多数是 mp3 或 flac,mp4 也支持。
🎧 从零到第一次转换成功的最快路径
先检查环境,只要一行命令,确认 Java 可用即可(JDK 8 或更高):
java -version项目里没有现成 jar 时,把源码克隆下来并用 Maven 打包,fastjson2、jaudiotagger 等依赖会自动下载:
git clone https://gitcode.com/gh_mirrors/ncmdu/ncmdump cd ncmdump mvn clean package打包产物是 target/ncmdump-2.0.jar。挑一个你下载过的 .ncm 文件,直接运行:
java -jar target/ncmdump-2.0.jar 你的音乐文件.ncm - Start dumping .ncm - Verify .ncm MAGIC => Correct Read KEY data => Success ... => Music Name: 晴天 => Format: mp3 => Output file path: /你的目录/周杰伦 - 晴天.mp3输出文件放在原文件同目录,命名为"歌手 - 歌名.格式"。终端还会打印专辑、码率等信息,可以和原曲对一下。单曲转换通常几秒钟就结束。
⚡ 批量转换命令与进阶用法
程序支持一次传入多个文件参数、逐个处理(这个循环在 Main.java 里),所以批量转换不需要任何额外配置,常见用法见下表:
| 场景 | 运行方式 | 结果 |
|---|---|---|
| 整专辑批量转换 | java -jar target/ncmdump-2.0.jar 专辑目录/*.ncm | shell 把通配符展开传入,每首歌独立带上自己的标签 |
| 指定多首零散歌曲 | 命令行后跟多个 .ncm 路径 | 输出到各自原文件同目录 |
| 脚本串联归档 | 下方 for 循环 | 可接备份步骤,一次跑完一个目录 |
想固定处理某个目录、并和后续备份动作串起来,写一个三行的循环即可。每首歌都是一个独立的 Java 进程,某个文件转换失败不会卡住后面:
for f in /data/music/*.ncm; do java -jar target/ncmdump-2.0.jar "$f" done批转完成后,建议先抽查一两首的封面和标签是否正常,再把成品备份到移动硬盘或 NAS,最后才清理原始 NCM 文件。另外注意:如果歌名里带 / 或 \ 这类字符,输出文件名在某些系统上会写失败,极端情况先改名再转。
NCM 转换常见问题
提示 MAGIC 校验失败怎么办?
终端出现 "Error: Incorrect MAGIC",说明文件头与 NCM 规范对不上,多半是下载不完整或文件被改名、动过。程序仍会继续尝试,但结果通常是不可播放的,最稳妥的处理是重新下载原文件。
提示 No input .ncm File 怎么回事?
你什么都没传就运行了。检查命令后面是否跟了文件路径;路径带空格时要用引号整体包住;另外确认后缀确实还是 .ncm,没有被改成了 .mp3。
同目录同名文件会被覆盖吗?
会。输出文件名按"歌手 - 歌名.格式"生成,目录与原文件相同,如果该目录已有同名文件,新文件会直接覆盖它。转换前目录里有同名音频的话,先备份。
提示 Unsupported format 怎么办?
标签写回阶段只处理 flac、mp3、mp4 三种封装,NCM 内部的原始音频若是其他格式就会报这个错并停止。网易云下载的歌曲绝大多数就是这三者之一,实际很难遇到。
输出文件注释字段里为什么有一段"163 key"字符串?
工具会把文件里的元数据标识写进新文件的注释字段,那是网易云自带的标记串,不是转换出错。可以保留,也可以用任意标签编辑工具手动清掉。
ncmdump 与在线转换比一比
对于已经下载到本地的歌曲,本地转换相对在线站点有明显优势:
| 对比维度 | ncmdump | 在线转换站 |
|---|---|---|
| 是否联网 | 不需要联网,文件不出本机 | 需把歌曲上传到服务器 |
| 支持平台 | Windows、macOS、Linux,需 Java 8+ | 仅浏览器 |
| 标签与封面 | 自动写回歌名、歌手、专辑、封面 | 视站点而定,常见丢失封面 |
| 成本 | 免费开源,MIT 许可 | 部分需注册,有广告或质量限制 |
ncmdump 关键信息速览
| 项目 | 说明 |
|---|---|
| 工具名称 | ncmdump(网易云音乐 NCM 转换) |
| 开发语言 / 运行环境 | Java,JDK 8+,建议 Maven 打包 |
| 输入格式 | .ncm(网易云音乐加密格式) |
| 输出格式 | MP3 / FLAC / MP4,由原文件决定 |
| 是否本地运行 | 是,不联网、不上传 |
| 批量能力 | 支持一次传入多个文件参数,逐个处理 |
| 主要依赖 | fastjson2(JSON 解析)、jaudiotagger(音频标签) |
现在就可以挑一首你最喜欢的歌,把它扔进上面的命令里试跑一次。第一次转换跑通后,再把整张专辑按循环批量处理掉;使用中遇到问题可以提交 issue,也可以顺着 dump 目录里的解密流程试着提点改进,踩坑经验写出来,下一个用户就能少走弯路。
【免费下载链接】ncmdumpncmdump - 网易云音乐NCM转换项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考