CHD格式转换完整流程:ISO转CHD省一半空间
2026/9/13 3:42:42 网站建设 项目流程

CHD格式转换完整流程:ISO转CHD省一半空间

【免费下载链接】rommA beautiful, powerful, self-hosted ROM manager and player.项目地址: https://gitcode.com/GitHub_Trending/rom/romm

如果你的游戏库被 ISO 文件塞满了,游戏ROM压缩是最直接的瘦身方式。MAME 项目自带的 chdman 就是做 CHD 格式转换的工具:把整张光盘镜像压成模拟器能直接读取的 CHD 文件,空间一般能省下一半。下面从该不该转、怎么转到批量处理,一次讲完。

从一个真实痛点说起

打开游戏库文件夹看看:PS1、PS2、Dreamcast 三个目录,几百个 ISO 堆在一起,单个 600MB 到 1.3GB,整个文件夹轻松吃掉 400GB。但光盘镜像是把整张碟原样搬过来的——真正被游戏读到的数据往往不到一半,剩下的是预留扇区、冗余轨道和从没写满的空间。💾 硬盘不是仓库,别什么都原样存着。拿《最终幻想VII》这种 PS1 大作举例,原始 ISO 大约 1.3GB,用 chdman 转成 CHD 后通常只剩 500MB 上下,同一批游戏能腾出差不多一半的空间,而模拟器读取时按需解压,实际加载速度基本不受影响。

先判断:你的情况该不该转

不是所有文件都值得动,先对号入座:

  • 如果你玩的是 PS1、PS2、Dreamcast 这类光盘平台,且模拟器支持 CHD(RetroArch、DuckStation、PCSX2 都可以),就选 CHD——对绝大多数模拟器玩家来说,CHD 是压缩率和兼容性之间最省心的选项。
  • 如果你主要玩卡带平台(GBA、N64、GB 等),文件本来就几 MB 到几十 MB,压它属于没事找事,原样存着就行。
  • 如果你的模拟器是只认原始 ISO 的老核心,那部分游戏保留 ISO,别硬转。
  • 如果是 Sega CD 这类多轨碟片(CUE+BIN),只转 BIN、CUE 原样保留,细节放到批量章节里说。
格式适用场景
ISO老模拟器、需要原始镜像的场景
CHDPS1/PS2/Dreamcast 等光盘平台的主力选择
CUE+BINSega CD 等多轨碟片,CUE 保留、BIN 可转

补充一点:CHD 内部数据块走 LZMA 压缩,音频轨道走 FLAC 无损压缩,通常还能再省三四成,音质没有任何损失。

五分钟上手:装好就能转

先装工具,三个平台各一行:

sudo apt install mame-tools # Debian / Ubuntu brew install mame # macOS sudo pacman -S mame-tools # Arch Linux

然后一条命令完成单文件转换:

chdman createcd -i game.iso -o game.chd -c 5 chdman verify -i game.chd

参数一句话带过:-i输入、-o输出、-c压缩级别(1-9,日常用 5 就行),第二行是转换后的完整性校验。

转完怎么确认没坏

chdman verify通过只说明文件结构没坏,不算完。把 CHD 扔进模拟器实机跑 10 分钟:能过第一关、能正常存档、退出重进不报错,才算真正通过。另外 CHD 文件头里嵌着原始碟片的 SHA-1,RomM 这类 ROM 管理器扫描时就是拿它匹配元数据的,转完库不会"失忆"。提取逻辑在:

backend/utils/archives.py

⚠️ 装完先跑chdman --version确认命令可用。如果提示"命令未找到",是 PATH 没配对:Windows 上把 mame 安装目录加进环境变量之后,记得重新开一个终端再试。

批量转换:一个脚本搞定

一个目录里要转几十个 ISO 时,别手动敲。下面这个 bash 脚本在 ISO 所在目录里运行,逻辑是:转完立刻校验,校验失败就删掉坏 CHD、保留原 ISO:

for f in *.iso; do out="${f%.iso}.chd" chdman createcd -i "$f" -o "$out" -c 5 if chdman verify -i "$out"; then echo "OK: $out" else rm -f "$out"; echo "校验失败,保留 $f" fi done

跑完看日志里"校验失败"的那几条,通常是源文件本身就有问题,单独处理即可,不影响其余文件。

哪些碟片要小心

  • Sega CD:CUE 文件原样保留,只转 BIN,索引丢了多轨游戏会认不出来。
  • 多光盘游戏:统一命名,比如Final Fantasy VII (Disc 1).chdFinal Fantasy VII (Disc 2).chd,方便模拟器识别成套。
  • PS2:少数游戏依赖原始目录结构,批量转之前先拿一两个单文件 CHD 实测能不能跑。

什么时候不值得转 + 行动清单

CHD 不是万能药,这几种情况建议原样存着:

  • 只玩一次的游戏:转换本身要几分钟到十几分钟,省下的空间可能通关一次就清零了。
  • 依赖原始光盘目录结构的冷门模拟器或老核心:CHD 直接打不开,硬转只会多一个用不了的文件。
  • 需要频繁在多台设备间传输、协作备份的场景:CHD 每次读取都要解压,跨设备同步不如直接拷 ISO 省事。

RomM 识别 CHD 靠的是文件头里嵌入的原始碟片哈希,字段定义在:

backend/models/rom.py

想动手的话,按这个顺序来:

  • □ 挑 2-3 个最大的 ISO 先试转,跑通"转换 + verify + 模拟器实机"全流程
  • □ 批量前把脚本里的-c 5调成你能接受的速度,压缩级别和时间自己取舍
  • □ 用chdman verify把已转的文件整体过一遍,失败的单独重转
  • □ 全库转完后在 RomM 里重新扫描,确认封面和元数据没丢

先拿最大的几个文件验证流程,确认没问题再放开批量跑,省下的空间是实打实的。

【免费下载链接】rommA beautiful, powerful, self-hosted ROM manager and player.项目地址: https://gitcode.com/GitHub_Trending/rom/romm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询