在视频内容主导互联网的时代,从 YouTube、TikTok 到 Bilibili,用户对“离线观看”“音频提取”“批量存档”的需求日益增长。而在这类工具中,yt-dlp 已成为开源社区中最强大、最活跃的技术标杆。

它不仅是一个 youtube-dl 的替代品,更是一次全面进化——由开发者社区驱动,持续对抗平台反爬机制,支持超过 1000 个网站,提供精细化控制能力,是开发者、研究者和高级用户的首选媒体获取工具。
⚠️ 提示:本文不鼓励侵犯版权或违反服务条款的行为。yt-dlp 的设计初衷是为合法用途(如个人存档、教育使用)提供技术支持。
起源:一次必要的分支
yt-dlp 源自对原项目 youtube-dl 发展停滞的回应。
- youtube-dl 自 2006 年诞生以来,一直是命令行下载领域的开创者。
- 然而,随着 RIAA 等组织提出 DMCA 下架请求,GitHub 曾短暂移除该项目,导致开发放缓。
- 社区尝试通过多个分支(如
youtube-dlc)延续维护,但各自为政。
2021 年,yt-dlp 正式从这些分支中整合而来,目标明确:
✅ 统一代码库
✅ 加快更新频率
✅ 引入现代化特性
如今,项目托管于 GitHub,已获得 超 13 万星标 和 1 万个分叉,拥有数百名贡献者,每周都有新提交,确保能快速应对网站变更。
核心优势:为什么选择 yt-dlp?
| 特性 | 说明 |
|---|---|
| 🌐 支持超 1000 个站点 | 包括 YouTube、Twitch、Vimeo、SoundCloud、TikTok、Bilibili 等主流平台,甚至部分成人内容站(需过滤) |
| 🔧 高度可定制 | 可指定格式、分辨率、编码、字幕、元数据等 |
| ⚡ 多线程加速 | 使用 --concurrent-fragments 实现分片并行下载,显著提升大文件速度 |
| 🎞️ SponsorBlock 集成 | 自动跳过 YouTube 中的广告、赞助片段、片头动画等非必要内容 |
| 📦 插件系统 | 支持外部提取器和后处理器,无需修改核心代码即可扩展功能 |
| 🔄 持续更新 | 每日发布“nightly”构建版本,快速修复兼容性问题 |
功能详解
1. 精细的格式选择
yt-dlp 允许你精确控制下载内容的质量与组合方式。
# 下载最佳音视频流并合并
yt-dlp -f "bestvideo+bestaudio" [URL]
# 仅下载最高质量的音频(可用于转 MP3)
yt-dlp -f "bestaudio" --extract-audio --audio-format mp3 [URL]
# 按偏好排序:优先 AV1 编码 > 分辨率 > 文件大小
yt-dlp -S "vcodec:av01,ext:mp4,res,fps" [URL]
2. 自动化与脚本集成
支持嵌入 Python 脚本作为后处理钩子,适合自动化流水线:
# 示例:下载完成后自动重命名并移动文件
def hook(d):
if d['status'] == 'finished':
print(f"下载完成: {d['filename']}")
配合 --exec 或 --postprocessor-args 可实现复杂逻辑。
3. 字幕与元数据处理
- 自动拉取内嵌或外挂字幕(SRT、VTT)
- 支持多语言字幕下载
- 可结合 Whisper 自动生成字幕(需额外模型)
yt-dlp --write-sub --sub-lang en,zh --embed-subs [URL]
4. 网络增强功能
--proxy http://127.0.0.1:8080:使用代理绕过地理限制--cookies-from-browser firefox:直接复用浏览器登录状态--no-check-certificate:应对自签名证书环境
5. 直播与动态内容支持
yt-dlp 对直播流的支持远超同类工具:
# 从直播开始处录制(防止错过前半段)
yt-dlp --live-from-start [LIVE_URL]
# 下载 YouTube Shorts、Clips、Stories
yt-dlp [SHORTS_URL]
安装方式(跨平台支持)
yt-dlp 支持所有主流操作系统,安装简单:
✅ 推荐方式:使用 pip
pip install --upgrade yt-dlp
其他方式:
| 平台 | 安装命令 |
|---|---|
| Windows | 下载 .exe 二进制文件,无需 Python |
| macOS | brew install yt-dlp 或下载通用包 |
| Ubuntu/Debian | sudo apt install yt-dlp(部分发行版可用) |
| 手动安装 | 从 GitHub Releases 下载静态二进制 |
🔐 验证完整性:官方提供 SHA256 校验和 和 GPG 签名,建议验证后再使用。
更新机制:稳定 vs 前沿
yt-dlp 提供三种更新通道,满足不同需求:
| 通道 | 特点 | 使用场景 |
|---|---|---|
| Stable(稳定版) | 经测试,推荐生产环境使用 | 日常下载 |
| Nightly(每夜版) | 每日自动构建,包含最新修复 | 应对突发网站变更 |
| Master(主干版) | 推送即构建,可能不稳定 | 开发调试 |
切换命令:
yt-dlp --update-to nightly
与 youtube-dl 的关键差异
尽管功能相似,yt-dlp 在多个方面进行了现代化重构:
| 功能 | yt-dlp | youtube-dl |
|---|---|---|
| Python 版本要求 | 3.9+ (CPython), 3.11+ (PyPy) | 支持 Python 2.6+ |
| 默认输出模板 | 包含视频 ID,避免重名覆盖 | 简单命名,易冲突 |
| 格式排序 | 支持 -S 参数,灵活排序 | 固定逻辑,难以调整 |
| SponsorBlock 集成 | 原生支持 | 不支持 |
| 多线程下载 | 支持 --concurrent-fragments | 仅基础分块 |
| Cookie 导入 | --cookies-from-browser chrome | 需手动导出 |
| 插件系统 | 支持外部提取器/后处理器 | 无 |
| 错误容忍性 | 默认 --no-abort-on-error,继续后续任务 | 出错即中断 |
💡 总结:yt-dlp 更现代、更健壮、更适合长期维护。
技术依赖与生态集成
yt-dlp 本身轻量,但部分功能需要外部依赖:
| 依赖项 | 作用 |
|---|---|
| FFmpeg | 合并音视频流、转码、提取音频、处理字幕 |
| pycryptodomex | 解密 DASH 流中的加密内容 |
| curl_cffi | 模拟浏览器行为,绕过 Cloudflare 防护 |
| Whisper / vosk | 自动生成语音字幕(需额外配置) |
此外,它已被广泛集成到其他开源项目中:
- GUI 工具(如 Media Downloader)
- 自动化工作流(CI/CD、爬虫系统)
- VRChat 视频解析插件















