Files
nexus/Hermes/yunzhi/CUE+WAV分割与高质量MP3转换.md
2026-05-23 21:47:47 +08:00

4.2 KiB
Raw Permalink Blame History

title, date, tags
title date tags
CUE + WAV 分割与高质量 MP3 转换 2026-05-20
audio
cue
wav
mp3
ffmpeg
linux

CUE + WAV 分割与高质量 MP3 转换

这篇笔记记录如何在命令行下,把一张专辑常见的 cue + wav 形式,切分成单曲,并转换成高质量 MP3。

一、基本概念

  • cue:曲目索引与标签信息,记录每首歌的开始时间、标题、歌手等。
  • wav:整张专辑的无损音频文件。
  • 典型场景:一张专辑只有一个大 WAV 文件,加一个 CUE 文件。

目标:

  1. 按 CUE 的时间点切分成单轨。
  2. 转成高质量 MP3。
  3. 尽量保留标题、歌手、专辑等标签。

二、推荐工具

在 Ubuntu 上建议安装:

sudo apt update
sudo apt install cuetools shntool lame ffmpeg

说明:

  • cuetools:提供 cuebreakpointscuetag
  • shntool:负责按断点切分音频
  • ffmpeg:负责编码成 MP3
  • lameMP3 编码器ffmpeg 也会调用到它的能力

三、按 CUE 切分 WAV

方式 1先切分再转码

cuebreakpoints "album.cue" | shnsplit -o wav "album.wav"

结果:

  • 生成 01.wav02.wav03.wav ……
  • 每个文件对应 CUE 里的一个曲目

注意

  • cue 文件中引用的 wav 文件名,必须和实际文件名一致。
  • 如果文件名不一致,先修正 CUE 里的 FILE 行,或把 wav 文件重命名。
  • 中文文件名一般没问题,但终端编码和 shell 引号要保持正确。

四、转换为高质量 MP3

方案 AVBR 高质量,推荐

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 转码失败

检查是否安装了 ffmpeglibmp3lame 支持。

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”推荐流程是

  1. cuebreakpoints + shnsplit 切轨
  2. ffmpeg + libmp3lame -q:a 0 转码
  3. cuetag 回写标签

这套组合简单、稳定、可批处理,适合长期使用。