静态缓存页面 · 查看动态版本 · 登录
智柴论坛 登录 | 注册
← 返回列表

视频宇宙的超级钥匙:yt-dlp的下载魔法传奇

✨步子哥 @steper · 2026-01-08 08:24 · 40浏览

想象一下,你正站在互联网的浩瀚星海边缘,手里握着一把能瞬间抓住任何闪烁视频的魔法钥匙。这把钥匙不是传说中的神器,而是真实存在的命令行工具——yt-dlp。它继承了youtube-dl的血脉,却在无数夜晚的锤炼中进化得更强大、更灵活、更聪明。今天,我们就一起踏上这场下载冒险,探索这把钥匙如何打开视频宇宙的大门。

!yt-dlp banner

🌟 起源与使命:从youtube-dl到yt-dlp的进化之旅

yt-dlp 是 youtube-dl 的一个活跃分支,融合了 youtube-dlc 的精华,并在此基础上加入了大量新功能。它支持数千个网站(具体列表见 supportedsites.md),从 YouTube、Vimeo 到 Bilibili、Twitch,几乎涵盖了所有主流视频平台。

与老前辈相比,yt-dlp 不仅修复了大量已失效的提取器,还新增了 SponsorBlock 章节标记、多线程分片下载、章节分割、时间段下载等强大功能。更重要的是,它默认的格式排序策略更智能——优先选择更高分辨率和更好编码,而不是单纯追求高码率。这就像一个经验丰富的探险家,不再盲目追逐“越大越好”,而是懂得在画质、文件大小和兼容性之间找到最佳平衡。

> 什么是“提取器”(Extractor)? > 每个网站都有自己的视频播放逻辑,yt-dlp 为每个网站编写了一个“提取器”,负责解析网页、找到真正的视频链接。yt-dlp 目前维护着数千个提取器,且仍在持续更新。

🛠️ 安装:三分钟让魔法钥匙到手

yt-dlp 的安装极其简单,官方提供了多种方式:

  • 推荐方式(跨平台):
  • Windows 用户直接下载 yt-dlp.exe
  • macOS 用户下载 yt-dlp_macos
  • Linux/BSD 用户下载通用二进制 yt-dlp
  • 通过 pip 安装(适合开发者):
  python3 -m pip install -U yt-dlp
  
  • 其他平台变体:还有针对 arm、musl、32位 Windows 等架构的专用版本,详见发布页的“Release Files”表格。
安装完成后,运行 yt-dlp --version 验证,一切就绪。

!Windows badge !Linux badge !MacOS badge

🔄 更新:永远保持最新状态

yt-dlp 自带自动更新功能:

yt-dlp -U                  # 更新到当前通道的最新版(默认 stable)
yt-dlp --update-to nightly # 切换到每日构建的 nightly 通道(推荐普通用户)
yt-dlp --update-to master  # 切换到每次提交都构建的 master 通道(最新但可能不稳定)

如果你使用 pip 安装,只需重新运行安装命令即可。

🧰 依赖:让魔法更强大的助手们

yt-dlp 本身是纯 Python 编写,但以下外部工具能大幅提升体验:

  • 强烈推荐
  • ffmpeg/ffprobe:合并音视频、转码、嵌入字幕、提取音频等几乎所有后期处理都依赖它。建议使用 yt-dlp 官方提供的自定义构建
  • yt-dlp-ejs + JavaScript 运行时(deno/node/bun/QuickJS):用于解析 YouTube 的 n/sig 签名。
  • 网络相关(可选但有用):
  • certifi、brotli、websockets、requests、curl_cffi(用于模拟浏览器指纹绕过 TLS 检测)
  • 元数据相关
  • mutagen(嵌入缩略图)、AtomicParsley(mp4/m4a 缩略图备用)
所有标有 * 的依赖已内置在官方二进制中,无需额外安装。

📝 配置:让yt-dlp记住你的习惯

yt-dlp 支持多层配置文件,按优先级从高到低加载。你可以在以下任意位置放置 yt-dlp.conf

  • --config-locations 指定的路径
  • 可执行文件同目录(便携式推荐)
  • 用户配置目录(如 ~/.config/yt-dlp/ 或 Windows 的 %APPDATA%
  • 系统目录 /etc/yt-dlp/
配置文件就是普通的命令行参数,每行一个。例如:

-x                    # 总是提取音频
--mtime               # 保留原始修改时间
-o ~/Videos/%(title)s.%(ext)s

🔧 输出模板:给每个视频取一个独一无二的名字

-o 参数决定了文件名格式,支持强大的 Python 风格占位符:

-o "%(title)s [%(id)s].%(ext)s"            # 默认模板
-o "%(uploader)s/%(playlist)s/%(playlist_index)02d - %(title)s.%(ext)s"
-o "%(upload_date>%Y-%m-%d)s/%(title)s.%(ext)s"  # 按上传日期分类

还可以为不同类型文件指定独立模板:

-o "thumbnail:%(title)s/cover.%(ext)s"     # 缩略图单独存放
-o "subtitle:%(title)s/%(title)s.%(ext)s"  # 字幕单独存放

高级技巧:使用 %(field>strftime)s 格式化日期、%(field&replacement|default)s 提供默认值、%(field.0)s 遍历列表等。

🎨 格式选择:精准拿到你想要的画质与音质

这是 yt-dlp 最强大的功能之一。

  • 默认行为:bv*+ba/b → 优先合并最佳画质+最佳音质,若无则选择最佳单文件。
  • 使用 -f 指定格式:
  -f "bestvideo[height<=1080]+bestaudio/best"   # 最高1080p合并
  -f "bv*[ext=mp4]+ba[ext=m4a]/best"            # 强制mp4容器
  
  • 使用 -S 自定义排序规则:
  -S "res:720,fps:60,vcodec:avc,acodec:aac"     # 优先720p 60fps H264 AAC
  -S "+filesize"                                # 按文件大小从小到大
  
  • 特殊名称:bestworstbv(最佳纯视频)、ba(最佳纯音频)等。
🔧 元数据修改:让文件信息更完美

使用 --parse-metadata--replace-in-metadata 可以从现有字段提取或修改信息:

--parse-metadata "title:%(artist)s - %(track)s"      # 将标题解析为艺术家-曲目
--replace-in-metadata "title" "[ _]" "-"             # 替换空格和下划线为短横线

嵌入元数据使用 --embed-metadata(默认开启),可配合 --add-chapters 嵌入章节。

🔌 插件系统:无限扩展的可能性

yt-dlp 支持加载外部提取器和后处理器插件。只需将插件包放入指定目录(如 ~/.config/yt-dlp/plugins/),即可自动加载。详见官方插件开发指南。

🌍 与youtube-dl的区别:为什么选择yt-dlp

  • 默认排序更科学(分辨率>编码>码率)
  • 新增 SponsorBlock、章节分割、时间段下载、多线程分片等
  • 支持浏览器 cookies 自动导入
  • 更活跃的维护与更多新站点支持
  • 可通过 --compat-options 恢复 youtube-dl 旧行为
📚 参考文献

1. yt-dlp 官方 GitHub 仓库. https://github.com/yt-dlp/yt-dlp 2. 支持的网站列表. https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md 3. yt-dlp Wiki 主页. https://github.com/yt-dlp/yt-dlp/wiki 4. FFmpeg 自定义构建(推荐). https://github.com/yt-dlp/FFmpeg-Builds 5. SponsorBlock 项目主页. https://sponsor.ajay.app

现在,你已经掌握了这把通往视频宇宙的超级钥匙。去吧,用 yt-dlp 收集属于你的数字宝藏!✨

讨论回复 (0)