跳到正文
yt-dlp

用 yt-dlp 把 YouTube 转成 MP3

生成那条能把 YouTube 视频变成带标签和封面的 MP3 的 yt-dlp 命令。

怎么得到一个真正好用的 MP3

提取音频是一次转换,所以必须有 ffmpeg —— 这就是命令在全新安装上失败的原因。最佳(VBR)是正确的默认:它的体积与质量之比最好,而更高的固定 bitrate 也无法补上源里本来就没有的质量。

封面和元数据能把一个装满无名文件的目录,变成音乐播放器可以整理的东西。这里的命名模板把艺术家放在前面,标签里没有艺术家时退回用上传者。

--audio-quality 0 是最多人理解错的设置。它不是"零质量"——它是可变比特率里最好的一档,平均大约 245 kbps,而且这条刻度是反着走的:0 最好,9 最差。可变比特率会把更多比特花在音乐密集的段落、在安静处少花,所以同样大小的文件,VBR 通常比固定比特率更好听。如果某个设备非要固定比特率不可,就直接写明——--audio-quality 320K——而不是在 0–9 这条刻度上猜一个数字。

更值得问的是:到底要不要转换。YouTube 提供的音频是 Opus 或 AAC,两者都不是 MP3,所以要 MP3 就一定意味着重新编码:文件被解码再压缩一次,每转一次都会损失一些质量。如果你手上没有哪样东西非要 .mp3 这个扩展名不可,就选"最佳(不转换)"。它更快,完全用不到 ffmpeg,而且结果比任何一个 MP3 版本都更接近源文件。只有当车载音响、DJ 软件或旧手机不给你别的选择时才去转。

要整个播放列表的话,打开播放列表并加上归档文件。归档会记录已经下载过什么,所以下周再跑同一条命令时只会取新增的部分,而不是从头再来一遍——再配合"出错继续",一首地区受限或已删除的曲子就不会把其余两百首一起拖垮。如果曲目顺序重要,就在输出模板里加上播放列表序号;不加的话播放器会按字母顺序排列文件夹,整张专辑的次序就乱了。

可选。留空的话命令会以 URL 结尾,由你自己填。

你的命令

yt-dlp -x --audio-format mp3 --audio-quality 0 --no-playlist --embed-thumbnail --embed-metadata -o '%(artist,uploader)s - %(title)s.%(ext)s' 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
基本

仅音频会提取声音轨并丢弃视频流。

音频

音频要转换成的文件类型。

VBR 的体积与质量之比最好;固定 bitrate 更容易预估大小。

播放列表与频道

当网址同时属于一个视频和一个播放列表时该怎么做。

范围和列表都可以,例如 1-10,15,或者用 -5::2 表示从末尾开始每隔一项取一项。

高级选项(1)

记下已经下过的项,于是重新运行会跳过它们。这就是让一个频道保持同步的办法。

元数据与封面
高级选项(3)
文件与目录

字段名写在 %(...)s 里。斜杠会创建目录。

高级选项(4)

文件写到哪里。配合上面的模板可以生成子目录。

文件名最大长度,按字符计。

故障绕行
高级选项(3)

已弃用,应改用 --add-headers。之所以保留,是因为很多旧教程还在用它。

已弃用,应改用 --add-headers。

按站点区分的专用选项,例如 youtube:player_client=web。

重置

常见问题

该选哪种 MP3 质量?
多数情况下选最佳(VBR)—— 它的体积与质量之比最好。只有当下游某个环节坚持要固定 bitrate 时,320 kbps 才有意义。两者都不会增加源里本来没有的质量。
为什么提取 MP3 会失败?
转换音频需要 ffmpeg。装好后用 ffmpeg -version 检查。
VBR 还是固定 bitrate?
VBR 把码率花在真正需要的地方,在听感相同的情况下体积更小。只有设备或软件强制要求时才用固定 bitrate。
能把整个播放列表转成 MP3 吗?
能 —— 音频输出加上整个播放列表模式。再加上记录文件,这样重新运行不会把转换重做一遍。