--- title: CUE + WAV 分割与高质量 MP3 转换 date: 2026-05-20 tags: [audio, cue, wav, mp3, ffmpeg, linux] --- # CUE + WAV 分割与高质量 MP3 转换 这篇笔记记录如何在命令行下,把一张专辑常见的 `cue + wav` 形式,切分成单曲,并转换成高质量 MP3。 ## 一、基本概念 - `cue`:曲目索引与标签信息,记录每首歌的开始时间、标题、歌手等。 - `wav`:整张专辑的无损音频文件。 - 典型场景:一张专辑只有一个大 WAV 文件,加一个 CUE 文件。 目标: 1. 按 CUE 的时间点切分成单轨。 2. 转成高质量 MP3。 3. 尽量保留标题、歌手、专辑等标签。 ## 二、推荐工具 在 Ubuntu 上建议安装: ```bash sudo apt update sudo apt install cuetools shntool lame ffmpeg ``` 说明: - `cuetools`:提供 `cuebreakpoints`、`cuetag` - `shntool`:负责按断点切分音频 - `ffmpeg`:负责编码成 MP3 - `lame`:MP3 编码器,ffmpeg 也会调用到它的能力 ## 三、按 CUE 切分 WAV ### 方式 1:先切分,再转码 ```bash cuebreakpoints "album.cue" | shnsplit -o wav "album.wav" ``` 结果: - 生成 `01.wav`、`02.wav`、`03.wav` …… - 每个文件对应 CUE 里的一个曲目 ### 注意 - `cue` 文件中引用的 wav 文件名,必须和实际文件名一致。 - 如果文件名不一致,先修正 CUE 里的 `FILE` 行,或把 wav 文件重命名。 - 中文文件名一般没问题,但终端编码和 shell 引号要保持正确。 ## 四、转换为高质量 MP3 ### 方案 A:VBR 高质量,推荐 ```bash for f in *.wav; do ffmpeg -y -i "$f" -codec:a libmp3lame -q:a 0 "${f%.wav}.mp3" done ``` 说明: - `-q:a 0` 表示最高质量的 VBR 档位之一 - 一般适合日常听歌和保留尽可能好的音质 ### 方案 B:固定 320k ```bash for f in *.wav; do ffmpeg -y -i "$f" -codec:a libmp3lame -b:a 320k "${f%.wav}.mp3" done ``` 说明: - 码率固定,体积更可预测 - 如果你偏好统一规格,可以选这个 ## 五、把 CUE 标签写回 MP3 切分并转码后,可以把 CUE 里的标签批量写进 MP3: ```bash cuetag "album.cue" *.mp3 ``` 通常会把以下信息写入: - 曲名 - 专辑名 - 歌手 - 轨道号 ## 六、一键脚本 下面是一个可直接使用的一键脚本: ```bash #!/usr/bin/env bash set -euo pipefail CUE="$1" WAV="$2" OUTDIR="${3:-output}" mkdir -p "$OUTDIR" cd "$OUTDIR" cuebreakpoints "$CUE" | shnsplit -o wav "$WAV" for f in *.wav; do ffmpeg -y -i "$f" -codec:a libmp3lame -q:a 0 "${f%.wav}.mp3" done cuetag "$CUE" *.mp3 ``` 用法: ```bash chmod +x split_cue_to_mp3.sh ./split_cue_to_mp3.sh "album.cue" "album.wav" ``` ## 七、实战建议 ### 1. 先保留无损源文件 MP3 即使是高质量编码,依然是有损格式。建议保留: - 原始 WAV - 原始 CUE - 转换后的 MP3 ### 2. 输出目录独立管理 不要直接在源目录操作,建议每张专辑一个输出目录,便于回溯。 ### 3. 中文文件名注意引号 所有路径都用双引号包裹: ```bash "我的专辑.cue" "我的专辑.wav" ``` ### 4. 出现标签错位时先检查 CUE 如果曲名或分轨偏移不对,先检查: - `INDEX 01` 时间点是否正确 - `FILE` 行是否指向正确的 wav 文件 - wav 是否已经被裁剪过 ## 八、常见问题 ### 1. cuebreakpoints 报错找不到文件 说明 CUE 中的文件名和实际文件名不一致。 ### 2. shnsplit 生成的文件顺序不对 先检查 CUE 时间轴是否写错,或者原始 WAV 是否有静默开头/结尾。 ### 3. ffmpeg 转码失败 检查是否安装了 `ffmpeg` 和 `libmp3lame` 支持。 ### 4. cuetag 没有写入标签 确认: - CUE 文件语法正确 - MP3 文件名和轨道对应关系未被破坏 ## 九、推荐命令组合 如果只想快速执行,最常用的组合是: ```bash cuebreakpoints "album.cue" | shnsplit -o wav "album.wav" for f in *.wav; do ffmpeg -y -i "$f" -codec:a libmp3lame -q:a 0 "${f%.wav}.mp3"; done cuetag "album.cue" *.mp3 ``` ## 十、结论 如果目标是“命令行下稳定地把 cue+wav 专辑切成高质量 mp3”,推荐流程是: 1. `cuebreakpoints + shnsplit` 切轨 2. `ffmpeg + libmp3lame -q:a 0` 转码 3. `cuetag` 回写标签 这套组合简单、稳定、可批处理,适合长期使用。