2026-06-08 22:09:35 +08:00
2026-06-08 18:02:54 +08:00
2026-06-08 22:09:35 +08:00
2026-06-08 22:09:35 +08:00
2026-06-08 18:02:54 +08:00
2026-06-08 22:09:35 +08:00
2026-06-08 22:09:35 +08:00
2026-06-08 22:09:35 +08:00
2026-06-08 22:09:35 +08:00
2026-06-08 18:02:54 +08:00
2026-06-08 22:09:35 +08:00
2026-06-08 22:09:35 +08:00
2026-06-08 22:09:35 +08:00
2026-06-08 18:02:54 +08:00
2026-06-08 18:02:54 +08:00
2026-06-08 18:02:54 +08:00
2026-06-08 22:09:35 +08:00

ncmdump-go

基于 ncmdump 的 Golang 移植版,支持网易云音乐 .ncm 文件解密为 MP3 / FLAC。

提供两种使用方式:Web 图形界面命令行工具

Web 界面(WASM,推荐)

所有加解密在浏览器本地完成,不会上传你的文件到任何服务器。解密引擎使用 Go 编译为 WebAssembly,性能接近原生。

使用

  1. 打开网页
  2. 选择包含 .ncm 文件的输入文件夹
  3. 选择输出文件夹
  4. 点击「开始转换」

歌曲名、歌手、专辑信息以及封面图片会自动写入转换后的文件中。

要求:Chrome / Edge 浏览器,通过 localhost 或 HTTPS 访问。

Docker 部署

docker compose up -d --build

然后浏览器访问 http://localhost:8080

本地开发

./build-wasm.sh    # 编译 WASM + 前端 + 服务器
./ncmdump-web --port 8080

命令行

安装

go install git.taurusxin.com/taurusxin/ncmdump-go@latest

使用

# 单文件
ncmdump-go song.ncm

# 批量处理目录(不递归子目录)
ncmdump-go -d source_dir

# 递归处理 + 指定输出目录
ncmdump-go -d source_dir -r -o output_dir

作为库使用

go get -u git.taurusxin.com/taurusxin/ncmdump-go
import "git.taurusxin.com/taurusxin/ncmdump-go/ncmcrypt"

ncm, _ := ncmcrypt.NewNeteaseCloudMusic("song.ncm")
ncm.Dump("/path/to/output")
ncm.FixMetadata(true)
fmt.Println(ncm.GetDumpFilePath())

项目结构

├── main.go                 # CLI 命令行入口
├── ncmcrypt/               # 核心加解密库
│   ├── ncmcrypt.go          #   NCM 格式解析 / RC4 解密
│   ├── metadata.go          #   元数据解析(歌名/歌手/封面URL)
│   └── embed.go             #   内存写入 ID3 / FLAC 标签
├── utils/                  # AES / 文件工具
├── cmd/
│   ├── wasm/main.go         # WASM 编译入口(浏览器端)
│   └── server/main.go       # 静态文件服务器
├── web/                    # 前端(React + Tailwind
└── Dockerfile              # 多阶段构建

License

MIT

S
Description
基于 ncmdump 的 Golang 移植版,支持网易云音乐 .ncm 文件解密为 MP3 / FLAC。
Readme MIT 71 KiB
Languages
Go 51.3%
TypeScript 38.7%
Shell 3.6%
JavaScript 2.1%
Dockerfile 1.8%
Other 2.5%