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

194 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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
### 方案 AVBR 高质量,推荐
```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` 回写标签
这套组合简单、稳定、可批处理,适合长期使用。