diff --git a/Hermes/xingzhi/musicbrainz_api_test.py b/Hermes/xingzhi/musicbrainz_api_test.py new file mode 100644 index 00000000..04bf0bde --- /dev/null +++ b/Hermes/xingzhi/musicbrainz_api_test.py @@ -0,0 +1,25 @@ +import requests + +# 获取曲目信息的函数 + +def get_recording_info(mbid): + url = f'https://musicbrainz.org/ws/2/recording/{mbid}?fmt=json' + response = requests.get(url) + if response.status_code == 200: + return response.json() # 返回曲目信息 + else: + return {'error': 'Not Found', 'status_code': response.status_code} + +# 测试 MBID 列表 +mbids = [ + 'a34ecc5d-388e-40fb-a2a2-5354db8fdfaa', # 示例 MBID + 'c6f24108-1f3f-4bf7-a52d-818ec956c2de', + 'cd2d5cc0-7cfa-4f7c-99f5-4fd05b07873c' +] + +# 循环查询每个 MBID +for mbid in mbids: + info = get_recording_info(mbid) + print(f'情報for MBID {mbid}:') + print(info) + print('-' * 40) # 分隔线 diff --git a/Hermes/yunzhi/CUE+WAV分割与高质量MP3转换.md b/Hermes/yunzhi/CUE+WAV分割与高质量MP3转换.md new file mode 100644 index 00000000..9a35553b --- /dev/null +++ b/Hermes/yunzhi/CUE+WAV分割与高质量MP3转换.md @@ -0,0 +1,193 @@ +--- +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` 回写标签 + +这套组合简单、稳定、可批处理,适合长期使用。