yt-dlp 是一个功能完整的命令行音视频下载器,支持数千个站点,采用 Unlicense 许可。项目由社区维护,是 youtube-dl 的分支,代码基础来自已经停止活跃的 youtube-dlc。和图形下载器相比,它更像一条可以脚本化、可重复执行的下载流水线。
命令行里的下载流水线
图形工具通常围绕“粘贴链接、点下载”设计,遇到需要选清晰度、只取音轨、批量归档或跳过已下载文件时就会受限。yt-dlp 把这些操作拆成参数:格式选择、输出命名、字幕、元数据、后处理各管一段,可以组合进脚本,也可以写进配置文件反复使用。
项目本身用 Python 编写,支持 Python 3.11 及以上版本。真正下载时还依赖外部工具,README 把 ffmpeg 和 ffprobe 列为强烈推荐:合并分离的视频流和音频流、转封装、嵌入缩略图都要用到。
格式、命名与字幕
常用参数不多,但足够覆盖大部分归档需求:
# 先列出站点提供的格式,确认是否有分离的音视频流 |
-o 的输出模板可以带标题、站点、上传者、视频 ID 等字段,批量下载时用统一的命名规则能省掉后续整理。--download-archive archive.txt 会把已下载的视频 ID 记进文件,下次运行时自动跳过,适合定期同步一个频道或播放列表。
需要登录才能访问的内容,可以用 --cookies-from-browser 从本机浏览器读取 Cookie。Cookie 等同于登录凭据,不要把导出的文件提交到仓库或发给别人。
安装、依赖与更新
可以下载官方独立二进制,也可以用 pip 安装。README 特别说明发布通道:stable 更新较慢,站点一改就可能失效;nightly 是给普通用户的推荐通道;master 跟随每次提交,适合愿意承担回归风险的人。
# pip 安装,需要 Python 3.11 及以上 |
如果通过 pip 安装,更新时重跑同一条安装命令,而不是依赖 -U。完整 YouTube 支持还需要 yt-dlp-ejs 和一个受支持的 JavaScript 运行时,README 推荐 deno,也支持 Node.js、bun 和 QuickJS。以下命令按官方 README 整理,未在本机完整实测。
批量归档场景
假设你要保存自己上传的课程视频,或者有授权的一批公开讲座。先建一个归档文件,再让 yt-dlp 按播放列表逐条处理;已经下载过的条目自动跳过,新增条目补进来。配上 --write-info-json 可以保留标题、上传日期和简介,配上字幕参数可以一起收走字幕。整个过程可以放进定时任务,失败了下次重跑即可。
和 youtube-dl、图形下载器的区别
youtube-dl 是这一脉的源头,yt-dlp 则从已停止活跃的 youtube-dlc 分支继续开发,新站点适配和修复更及时。图形下载器把参数藏进界面,遇到站点改版时同样会失效,却少了命令行排查和脚本化的余地。浏览器扩展则更适合偶尔存一个文件,不适合批量归档。
版权、失效与维护
工具本身不判断内容授权。下载什么、能不能再分发,取决于平台条款和当地法律,README 不提供这方面的许可。站点改版会让提取器失效,这也是官方建议普通用户使用 nightly 的原因。需要登录、验证码或地区限制的内容,失败原因往往在账号或网络,而不在参数。
把下载任务交给脚本后,还要留意磁盘空间、并发数和请求频率。对站点造成过大压力,既可能触发限流,也可能让账号被限制。
适用人群
适合熟悉命令行、需要批量处理或把下载接进自动化流程的人,也适合要归档自己作品、且有明确授权的创作者。偶尔下载一个文件、不想读参数的人,用图形工具更直接。
官方资料
- 仓库:yt-dlp/yt-dlp
- 文档与常见问题:yt-dlp Wiki
- 支持站点列表:supportedsites.md
- 许可:Unlicense;部分打包二进制因包含 GPLv3+ 代码,按 GPLv3+ 分发
