Auto-sync
This commit is contained in:
25
Hermes/xingzhi/musicbrainz_api_test.py
Normal file
25
Hermes/xingzhi/musicbrainz_api_test.py
Normal file
@@ -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) # 分隔线
|
||||
193
Hermes/yunzhi/CUE+WAV分割与高质量MP3转换.md
Normal file
193
Hermes/yunzhi/CUE+WAV分割与高质量MP3转换.md
Normal file
@@ -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` 回写标签
|
||||
|
||||
这套组合简单、稳定、可批处理,适合长期使用。
|
||||
Reference in New Issue
Block a user