前言 2021年了,Hi-Res配信都早已流行起来。CD作为音乐载体、早已不再有优势 但是收藏价值还是有的,当然每次想听的时候、需要放入光驱也是挺麻烦的 这里介绍一下将实体CD转换到Lossless数字档案的方案
这里只推荐EAC/XLD两个抓轨软件,比较可靠,也被各个音乐分享站点公认 EAC (Exact Audio Copy) (https://www.exactaudiocopy.de/ ) XLD (X Lossless Decoder) (https://tmkk.undo.jp/xld/ ) 两个都是免费软件,EAC运行环境是Windows,XLD则是Mac OS
两个软件并不是简单到安装完直接可用,你必须正确的设置你的光驱一些特性 写这篇文章的目的也是做个笔记
EAC 安装 打开EAC官网、选择 Download
安装过程比较简单,Choose Components 这一步建议全部选择 关于这些 Components 后面会使用到
安装好后,请务必先配置下EAC,这样才能正确地抓出音频
设置 第一次启动可能弹出这个 (metadata provider) 选NO和YES都可以
第一次启动还会弹出设置向导,我们直接到设置里详细设置 直接Cancel就行
EAC提供了简体中文,你可以到设置里切换,方便你对软件更快速上手 按F9打开EAC选项 (EAC options),在常规 (General)选项卡最下面可以切换语言
接着我们对一些重要选项进行设置
EAC选项 -> 抓取 (Extraction) 不要勾选 删除头部及尾部静音块 (Delete leading and trailing slient blocks)勾选 用静音填充丢失的偏移采样 (Fill up missing offset samples with silence)
EAC选项 -> 常规 (General)
务必勾选 总是使用英语创建日志文件(Create log file always in english language)可以勾选 使用备用 CD播放方法 (Use altemate CD play routines)
EAC选项 -> 工具
勾选 创建CUE文件时寻找 UPC/ISRC代码(Retrieve UPC / ISRC codes in CUE sheet generation)勾选 创建CUE文件时使用 CD-Text信息(Use CD-Text infomation in CUE sheet generation)务必勾选 抓取完毕后自动生成状态报告(Automatically write status report extraction)务必勾选 增加校验至状态报告(Append checksum to status report)不要勾选 激活新手模式,禁用所有高级特性 (Activate beginner mode, disable all advanced features)
EAC选项 -> 标准化 (Nomalize)
不需要设置、请不要勾选 没提到的其他选项卡并不重要,默认即可
驱动器选项 (Drive Options)
按F10可以打开驱动器选项,接下来的设置比较重要
驱动器选项 -> 抓取模式 (Extration Method)
抓取模式务必 选择"安全模式" (Secure mode)
关于[精准流] 、 [缓存音频数据] 、 [C2错误报告能力]此部分争议比较大,先说结论 精准流,请点击左边的检测读取特性按钮,不同型号光驱不同,光驱支持即可勾选 缓存音频数据无论你光驱是否支持,请勾选 它C2错误报告能力无论你的光驱是否支持,请不要勾选 它
精准流
光驱支持的话,可以不必进行 jetter 纠错、根据光驱设置就行
缓存音频数据
EAC会多次读取每个扇区,结果一致才会读下一个 如果光驱有缓存的话、读取缓存会造成结果一定相同 所以必须勾上这个,勾上后表现为禁用缓存 (Defeat audio cache) 即使光驱不支持缓存,禁用缓存理应不会产生问题
C2错误报告能力
即使光驱支持,也不建议勾选 (普遍说法是部分光驱C2纠错固件有BUG)
如果中途让你把特性提交,点是即可
驱动器选项 -> 驱动器
勾选 抓取之前先转动驱动器 (Spin up drive before extraction)勾选 驱动器支持 CD-Text 读取 (CD-Text Read Capable driver)
驱动器选项 -> 偏移 / 速度 (Offset / Speed)
请务必正确设置 使用读取采样偏移矫正的值 设置方法有3种,推荐第2种
1.手动查询 AccurateRip 数据库 并设置
每个型号光驱都不同,可以参考AccurateRip 数据库 Ctrl+F 搜索你的光驱型号机型,比如我的hp BD CMB UJ160是+103
2.让EAC自动设置
当然EAC已经支持从AccurateRip自动获取采样偏移矫正值 (Use read sample offset correction) 了 勾上在驱动器上使用 AccurateRip 数据库 (Use AccurateRip with this drive) 即可,上面的设定会变成灰色并锁定推荐勾上这个
3.通过CD来计算出
当然你也可以插入一张CD,然后点检测读取采样偏移矫正按钮 前提是这张CD数据库里有,当然这种还是比较麻烦 的 (当然我试了几张手上的CD,CD偏移数据库都没有...)
至于检测特性时请不要装入盘片!(Do not produce load while detecting features !)这个是错误的翻译 大意为不要在EAC检测的时候再用其他软件读取光盘
驱动器选项 -> 间隙检测 间隙/索引寻获方式 (Gap / Index retrieval method):【A执行最快、B兼容性佳、C较慢】检测精确度 ( Detection accuracy):请设置到安全 (Secure)
元数据选项 -> FreeDB
请在freedb填写下邮箱
如果只抓取无压缩的WAV波形档案,压缩选项可以忽略
补全CD信息 插入一张CD后,CD的信息都没有补全,可能是这样的(没有曲目标题、作者信息等)
我们可以从公开的CD数据库获取信息(标题/作曲家等) 可选FreeDB、CUETools DB、MusicBrainz等,这些都是国外知名的免费CD数据库
以CUETools DB为例
如果找到了,选择一个即可。点击OK,信息就会被自动填充了
抓取单文件 wav+cue+log 抓取wav整轨的话、在菜单中选择抓取镜像并创建CUE目录文件 完成后连同log文件,应该有3个 分别是 wav audio、cue sheet、log file 其中logfile请不要做改动、cue文件如果是GBK编码、可以转换成UFT-8 with BOM
分割成多个音轨 / 抓取分割好的文件 如果你想创建分割的音频文件,可以抓好整轨后、用工具读取 cue sheet 然后切割就可以 推荐GUI工具:CUETools、Foobar2000
我不建议切割成wav分轨,wav对tag支持不太好。flac也是无损压缩编码,并且设备兼容性较好 同样不推荐有损压缩格式和不开源的无损压缩格式(ape/tta等)
当然也可以在EAC一步搞定 在这之前、需要先设置一下EAC压缩选项
压缩选项 -> 外部压缩程序
在附加的命令行选项填入内容
填这些参数的意义无非是:转换成FLAC时,把标题、作曲者封面等写入flac文件的tag内。参数可以自行更改 参数具体意义可以参考 flac documentation (https://xiph.org/flac/documentation_tools_flac.html )
这里给出几个举例
整轨用
1 -8 -V -T "ALBUM=%albumtitle%" -T "DATE=%year%" -T "TRACKNUMBER=%tracknr%" -T "GENRE=%genre%" -T "PERFORMER=%albuminterpret%" -T "COMPOSER=%composer%" %haslyrics%--tag-from-file=LYRICS="%lyricsfile%"%haslyrics% -T "ALBUMARTIST=%albumartist%" -T "DISCNUMBER=%cdnumber%" -T "TOTALDISCS=%totalcds%" -T "TOTALTRACKS=%numtracks%" -T "COMMENT=%comment%" %hascover%--picture=||||"%coverfile%"%hascover% --cuesheet="%artist% - %albumtitle%.cue" %source% -o %dest%
多音轨用
1 -8 -V -T "ARTIST=%artist%" -T "TITLE=%title%" -T "ALBUM=%albumtitle%" -T "DATE=%year%" -T "TRACKNUMBER=%tracknr%" -T "GENRE=%genre%" -T "PERFORMER=%albuminterpret%" -T "COMPOSER=%composer%" %haslyrics%--tag-from-file=LYRICS="%lyricsfile%"%haslyrics% -T "ALBUMARTIST=%albumartist%" -T "DISCNUMBER=%cdnumber%" -T "TOTALDISCS=%totalcds%" -T "TOTALTRACKS=%numtracks%" -T "COMMENT=%comment%" -T "DISCID=%cddbid%" %hascover%--picture=||||"%coverfile%"%hascover% %source% -o %dest%
设置好后可以尝试抓取,要抓取flac分割的成品、选择抓取所选范围音轨->已压缩
成品大概是这样的
一份较好 EAC log 示范 抓轨log自动保存,请不要改动删除它 它是你正确使用EAC的最好证据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 Exact Audio Copy V1.6 from 23. October 2020 EAC extraction logfile from 7. March 2021, 19:48 凋叶棕 / 宴 Used drive : hp BD CMB UJ160 Adapter: 1 ID: 0 Read mode : Secure Utilize accurate stream : Yes Defeat audio cache : Yes Make use of C2 pointers : No Read offset correction : 103 Overread into Lead-In and Lead-Out : No Fill up missing offset samples with silence : Yes Delete leading and trailing silent blocks : No Null samples used in CRC calculations : Yes Used interface : Native Win32 interface for Win NT & 2000 Used output format : Internal WAV Routines Sample format : 44.100 Hz; 16 Bit; Stereo TOC of the extracted CD Track | Start | Length | Start sector | End sector --------------------------------------------------------- 1 | 0:00.00 | 5:42.03 | 0 | 25652 2 | 5:42.03 | 6:14.03 | 25653 | 53705 3 | 11:56.06 | 5:16.03 | 53706 | 77408 4 | 17:12.09 | 5:43.05 | 77409 | 103138 5 | 22:55.14 | 4:31.45 | 103139 | 123508 6 | 27:26.59 | 4:12.03 | 123509 | 142411 7 | 31:38.62 | 4:30.59 | 142412 | 162720 8 | 36:09.46 | 5:50.03 | 162721 | 188973 9 | 41:59.49 | 4:48.03 | 188974 | 210576 10 | 46:47.52 | 5:24.03 | 210577 | 234879 11 | 52:11.55 | 3:13.48 | 234880 | 249402 Range status and errors Selected range Filename F:\CDRip\凋叶棕\宴\RDWL-0001.wav Peak level 100.0 % Extraction speed 4.2 X Range quality 100.0 % Copy CRC 8AD7EDF2 Copy OK No errors occurred AccurateRip summary Track 1 accurately ripped (confidence 2) [DD636071] (AR v2) Track 2 accurately ripped (confidence 2) [0C6FA8B9] (AR v2) Track 3 accurately ripped (confidence 2) [ECFE2AF4] (AR v2) Track 4 accurately ripped (confidence 2) [E6F0835D] (AR v2) Track 5 accurately ripped (confidence 2) [A063BF27] (AR v2) Track 6 accurately ripped (confidence 2) [C0EF54E0] (AR v2) Track 7 accurately ripped (confidence 2) [E88F4926] (AR v2) Track 8 accurately ripped (confidence 2) [7AB8EDB3] (AR v2) Track 9 accurately ripped (confidence 2) [898E5AD5] (AR v2) Track 10 accurately ripped (confidence 2) [2B7BF79A] (AR v2) Track 11 accurately ripped (confidence 2) [5A4B14B7] (AR v2) All tracks accurately ripped End of status report ---- CUETools DB Plugin V2.1.6 [CTDB TOCID: HBFiB3CptZA6LyLN9Kn1aRh7H.Y-] found Submit result: HBFiB3CptZA6LyLN9Kn1aRh7H.Y- has been confirmed Track | CTDB Status 1 | (65/65) Accurately ripped 2 | (65/65) Accurately ripped 3 | (64/65) Accurately ripped 4 | (64/65) Accurately ripped 5 | (65/65) Accurately ripped 6 | (65/65) Accurately ripped 7 | (65/65) Accurately ripped 8 | (64/65) Accurately ripped 9 | (64/65) Accurately ripped 10 | (64/65) Accurately ripped 11 | (61/65) Accurately ripped ==== Log checksum C9294F4F0FBEB55D2A34159AC6C2EC5832937D1CB717F83CAC1B25BAF1F0D5A1 ====
校验 EAC Log EAC提供的校验程式在安装目录下,要想校验log必须用到它
按住shift右键,打开任意一个命令行
后面跟上log文件路径即可校验
log完好: 1. Log entry is fine! log被修改过: 1. Log entry was modified, checksum incorrect! log校验码不存在: 1. Log entry has no checksum!
将LOG检验程式关联到上下文菜单 校验每次要打开终端比较麻烦,这里介绍一个技巧,可以直接关联到上下文菜单
效果如下
会直接弹出校验结果
实现方法
直接改注册表比较麻烦,这里推荐一个开源的GUI工具
BluePointLilac / ContextMenuManagerhttps://github.com/BluePointLilac/ContextMenuManager
选择文件类型、自选格式、筛选扩展名:"log"
新建一个项目,菜单类型选择shell
菜单文本:Check This Log File 菜单参数:cmd 命令参数:"cmd" "/k ""E:\Program Files\Exact Audio Copy\CheckLog.exe" "%1"""
好了后可以测试下,只有特定后缀名才会有效果
原理
有兴趣的话可以打开regedit看下,原理并不复杂
XLD
官网:https://tmkk.undo.jp/xld/index_e.html
找到Download,获取编译好的xld-xxxxxx.dmg 下面还有个Log checker plugin,请一同下载
打开dmg文件,将XLD拖到桌面或应用程序,即可完成安装
如果无法打开,在系统设置偏好->安全与隐私->仍要打开即可
启动XLD,按【⌘ ,】(Command + ,) 打开设置页面
XLD预置 -> 通用
导出格式可选音频编码/封装格式:建议选择 FLACCuesheet 的字符编码:请选择 Unicode (UTF-8)存储 Cue Sheet 时前置BOM:请勾上
XLD预置 -> 抓取 CD
Ripper Mode (抓取模式):XLD Secure Ripper
读取样本偏离修正值如果是0的话,请对照 AccurateRip 数据库 设置一下 这边勾选了自动设置,XLD已经帮我设置好了(103) 每个光驱的偏移值都不同 ,你的不一定是103!
Save Log File:总是Save Cue Sheet:仅单一文件时
验证可疑选区:请打勾
安装 Log checker plugin
从官网下载插件,得到一个zip压缩包 解压后得到XLDLogChecker.bundle
把这个文件移动到~/Library/Application Support/XLD/PlugIns 提示一下,这个目录是在Finder中隐藏的,你可以在设置显示或使用Terminal移动
Library (资源库) 显示方法:
放入重启XLD即可生效,不需要额外设置
抓取光盘
【⌘ + ⇧ + O 】(Command + Shift + O) 或者在 顶部菜单选择打开音乐CD
检查好后,点击右上角的Get Metadata,会从数据库获取光盘信息
左上角可以选择单一文件(整轨)或分轨导出 我个人推荐单一的flac+cue,如需分轨之后单独切割也很方便
点击 Extract 就可以开始抓取了 完成后会弹出抓取日志,如果开了自动保存、就不用另存为了 如果你正确安装log插件,日志结尾还有校验码
检查log
从菜单中打开 Log Checker
把log文件拖到这个窗口即可
正确的Log: OK 没有校验码:Not signed 改动过的:Malformed
示例 XLD Log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 X Lossless Decoder version 20210101 (153.1) XLD extraction logfile from 2021-03-29 16:02:59 +0800 交響アクティブNEETs / 東方フィルハーモニー交響楽団10 秘 Used drive : hp BD CMB UJ160 (revision 1.00) Media type : Pressed CD Ripper mode : XLD Secure Ripper Disable audio cache : OK for the drive with a cache less than 1375KiB Make use of C2 pointers : NO Read offset correction : 103 Max retry count : 20 Gap status : Analyzed, Appended TOC of the extracted CD Track | Start | Length | Start sector | End sector --------------------------------------------------------- 1 | 00:00:00 | 04:08:52 | 0 | 18651 2 | 04:08:52 | 04:21:47 | 18652 | 38273 3 | 08:30:24 | 03:43:27 | 38274 | 55025 4 | 12:13:51 | 04:42:10 | 55026 | 76185 5 | 16:55:61 | 04:26:30 | 76186 | 96165 6 | 21:22:16 | 03:46:08 | 96166 | 113123 7 | 25:08:24 | 04:20:68 | 113124 | 132691 AccurateRip Summary (DiscID: 000816c8-003093c9-3f06e907) Track 01 : OK (v2, confidence 8/8) Track 02 : OK (v2, confidence 8/8) Track 03 : OK (v2, confidence 8/8) Track 04 : OK (v2, confidence 8/8) Track 05 : OK (v2, confidence 8/8) Track 06 : OK (v2, confidence 8/8) Track 07 : OK (v2, confidence 8/8) ->All tracks accurately ripped. All Tracks Filename : /Users/ame/Documents/neets/東方フィルハーモニー交響楽団10 秘.flac CRC32 hash : D3A17DF5 CRC32 hash (skip zero) : EDCADE1A Statistics Read error : 0 Jitter error (maybe fixed) : 0 Retry sector count : 0 Damaged sector count : 0 Track 01 Pre-gap length : 00:02:00 CRC32 hash : D5FC16D2 CRC32 hash (skip zero) : 17CC2160 AccurateRip v1 signature : 1BD13610 AccurateRip v2 signature : 42F3317A ->Accurately ripped (v2, confidence 8/8) Statistics Read error : 0 Jitter error (maybe fixed) : 0 Retry sector count : 0 Damaged sector count : 0 Track 02 Pre-gap length : 00:03:02 CRC32 hash : 8629994C CRC32 hash (skip zero) : 2C5DA75E AccurateRip v1 signature : 612E1BCC AccurateRip v2 signature : E8CC0263 ->Accurately ripped (v2, confidence 8/8) Statistics Read error : 0 Jitter error (maybe fixed) : 0 Retry sector count : 0 Damaged sector count : 0 Track 03 Pre-gap length : 00:04:51 CRC32 hash : 617394BB CRC32 hash (skip zero) : 64C7835F AccurateRip v1 signature : A37A7F63 AccurateRip v2 signature : FE920DBD ->Accurately ripped (v2, confidence 8/8) Statistics Read error : 0 Jitter error (maybe fixed) : 0 Retry sector count : 0 Damaged sector count : 0 Track 04 Pre-gap length : 00:05:56 CRC32 hash : 764E61E4 CRC32 hash (skip zero) : 7EEB84A9 AccurateRip v1 signature : CD723063 AccurateRip v2 signature : D733D5D2 ->Accurately ripped (v2, confidence 8/8) Statistics Read error : 0 Jitter error (maybe fixed) : 0 Retry sector count : 0 Damaged sector count : 0 Track 05 Pre-gap length : 00:03:22 CRC32 hash : A2752115 CRC32 hash (skip zero) : 1C037DD2 AccurateRip v1 signature : 9D224B3F AccurateRip v2 signature : F6595FA3 ->Accurately ripped (v2, confidence 8/8) Statistics Read error : 0 Jitter error (maybe fixed) : 0 Retry sector count : 0 Damaged sector count : 0 Track 06 Pre-gap length : 00:02:24 CRC32 hash : 37146110 CRC32 hash (skip zero) : 56A450AF AccurateRip v1 signature : AB54FDCC AccurateRip v2 signature : 028326DE ->Accurately ripped (v2, confidence 8/8) Statistics Read error : 0 Jitter error (maybe fixed) : 0 Retry sector count : 0 Damaged sector count : 0 Track 07 Pre-gap length : 00:04:20 CRC32 hash : 74CACBE2 CRC32 hash (skip zero) : 224429C9 AccurateRip v1 signature : 88CDDA91 AccurateRip v2 signature : 5DDFCF6A ->Accurately ripped (v2, confidence 8/8) Statistics Read error : 0 Jitter error (maybe fixed) : 0 Retry sector count : 0 Damaged sector count : 0 No errors occurred End of status report -----BEGIN XLD SIGNATURE----- Q8VOo.s2P7HP1vzBiQ4MhBXDD_8fgpQNDJsLalN_pS8dXJ8Zj2yVgJdAVXck21Py.zDkFzAbkws3vUwd0L5BI.E_6p06pDeVqtx_B9m -----END XLD SIGNATURE-----
检测音频文件CRC32 一个音频文件包含了头部标签(标题、封面、作曲家信息等)要正确计算你需要把wav/flac头部头部标签去掉,只计算音频部分 所以你怎么改动专辑标题、艺术家信息,音频部分 CRC32是不会变的
所以还是比较麻烦的,也有人写过专门计算的工具,比如wavcrc32 不过已经非常老了,我也不再推荐
个人推荐还是利用foobar2000的File Integrity Verifier组件 无论是单轨还是整轨、各种封装格式都支持
组件可以在foorbar2000官网获取
Ctrl + F 搜索
下载后可以获得Verifier.fb2k-component,在foorbar2000内安装即可
重启后即可生效
如果音频部分没有改动 (比如有损转码),那校验出的结果是一致的