想象一下,你正站在互联网的浩瀚星海边缘,手里握着一把能瞬间抓住任何闪烁视频的魔法钥匙。这把钥匙不是传说中的神器,而是真实存在的命令行工具——yt-dlp。它继承了youtube-dl的血脉,却在无数夜晚的锤炼中进化得更强大、更灵活、更聪明。今天,我们就一起踏上这场下载冒险,探索这把钥匙如何打开视频宇宙的大门。
🌟 起源与使命:从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 验证,一切就绪。
🔄 更新:永远保持最新状态
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" # 按文件大小从小到大 -
特殊名称:
best、worst、bv(最佳纯视频)、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 旧行为
📚 参考文献
- yt-dlp 官方 GitHub 仓库. https://github.com/yt-dlp/yt-dlp
- 支持的网站列表. https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md
- yt-dlp Wiki 主页. https://github.com/yt-dlp/yt-dlp/wiki
- FFmpeg 自定义构建(推荐). https://github.com/yt-dlp/FFmpeg-Builds
- SponsorBlock 项目主页. https://sponsor.ajay.app
现在,你已经掌握了这把通往视频宇宙的超级钥匙。去吧,用 yt-dlp 收集属于你的数字宝藏!✨
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。