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