16 万 Star 的开源神器 yt-dlp:一个命令下载全网视频,安装到进阶使用全教程
科技宅大龙
2026年05月11日 10:27
收录于文集
共4篇

在视频下载工具里,yt-dlp 基本属于“命令行神器”级别。它是一个功能非常丰富的音视频下载工具,支持大量视频网站,并且是 youtube-dl 的社区继任者:官方 README 明确说明,yt-dlp 是基于 youtube-dlc、从 youtube-dl 分叉而来的命令行音视频下载器。当前 GitHub 页面显示它已经有 16 万+ Star,属于开源工具里的顶流项目。

不过在正式开始前先说一句:请只下载你有权保存、备份或离线观看的内容,并遵守所在平台的服务条款与当地法律。yt-dlp 是工具,不是版权豁免卡。

一、yt-dlp 为什么值得用?

很多视频平台都会把视频拆成分片,甚至把视频流和音频流分开提供。普通下载器经常遇到下载不全、画质不高、音画分离、文件名乱码等问题,而 yt-dlp 的优势就在于:它把“解析视频地址、选择最佳格式、下载分片、合并音视频、嵌入字幕/封面/元数据”等流程都封装好了。

官方支持站点列表里有大量 extractor,不过官方也提醒:网站经常变动,列表里的站点不保证永远可用,最可靠的办法还是亲自试一下。

和老牌 youtube-dl 相比,yt-dlp 的几个亮点很明显:

第一,默认会尽量下载最佳画质。官方文档说明,不传格式参数时,yt-dlp 通常会尝试下载最佳可用质量,接近 bestvideo*+bestaudio/best 的策略。

第二,支持多线程分片下载。yt-dlp README 中提到,它支持 m3u8/mpd 分片并行下载,可用 -N 或 --concurrent-fragments 设置线程数。

第三,支持从浏览器导入 Cookie。对于你已经登录、且有权限访问的视频,可以用 --cookies-from-browser 读取浏览器 Cookie。官方列出的浏览器包括 brave、chrome、chromium、edge、firefox、opera、safari、vivaldi、whale 等。

第四,支持 SponsorBlock、章节分割、字幕、音频提取、Python 嵌入等高级功能。SponsorBlock 可以给 YouTube 视频中的赞助、片头、片尾等片段打章节标记或移除;Python 项目里也可以直接调用 yt_dlp.YoutubeDL()。

二、yt-dlp 背后的开源故事

yt-dlp 的故事绕不开 youtube-dl。2020 年,youtube-dl 曾因 RIAA 的 DMCA 通知被 GitHub 下架;GitHub 后来收到更多信息后恢复了该仓库,并在官方博客中说明,该项目具有许多合法用途。

EFF 当时也为 youtube-dl 维护者发声,指出 youtube-dl 可用于记者保存证据、YouTuber 备份自己上传的视频、教育用途以及在网络较差环境下离线观看等场景。EFF 的信中还说明,youtube-dl 并不解密 Netflix 等商业 DRM 技术保护的视频流。 后来,youtube-dl 的开发逐渐放缓,而 yt-dlp 作为更活跃的分支接过了接力棒。今天如果你还在使用 youtube-dl,绝大多数情况下都可以考虑切换到 yt-dlp。

三、安装前准备:yt-dlp + FFmpeg

yt-dlp 本体负责解析和下载,FFmpeg / ffprobe 负责音视频合并、转码、提取音频、嵌入封面和字幕等后处理。官方 README 明确说,ffmpeg 和 ffprobe 对合并分离的音视频流以及许多后处理任务是必需的;并特别提醒:你需要的是 FFmpeg 可执行文件,不是 PyPI 上同名的 Python 包。

官方文档还说明,yt-dlp 可以通过官方二进制文件、pip 或第三方包管理器安装;Windows 推荐 yt-dlp.exe,macOS 推荐 yt-dlp_macos,Linux/BSD 推荐平台无关的 yt-dlp 文件。

四、Windows 安装教程

方法一:下载官方 exe

到 yt-dlp 的 GitHub Release 页面,下载:

代码块
js
自动换行
复制代码
yt-dlp.exe
复制成功

然后建议新建一个目录,例如:

代码块
makefile
自动换行
复制代码
C:\Tools\yt-dlp\
复制成功

把 yt-dlp.exe 放进去。

接着下载 FFmpeg,把解压后的 bin 目录加入系统环境变量 Path。最终你应该能在任意终端里运行:

代码块
CSS
自动换行
复制代码
yt-dlp --version
ffmpeg -version
ffprobe -version
复制成功

不建议把这些 exe 直接丢进 C:\Windows\System32,虽然这样也能运行,但后续管理、升级和排查问题都不方便。

方法二:使用 winget / Scoop / Chocolatey

官方安装 Wiki 也列出了 Windows 包管理器方式:

代码块
Nginx
自动换行
复制代码
winget install yt-dlp
复制成功

或者:

代码块
Nginx
自动换行
复制代码
scoop install yt-dlp
复制成功

或者:

代码块
Nginx
自动换行
复制代码
choco install yt-dlp
复制成功

这些方式的好处是升级简单,比如 winget 可以用:

代码块
Nginx
自动换行
复制代码
winget upgrade yt-dlp
复制成功

五、macOS 安装教程

macOS 用户最简单的方式是 Homebrew:

代码块
Nginx
自动换行
复制代码
brew install yt-dlp
brew install ffmpeg
复制成功

yt-dlp 官方 Wiki 也列出了 Homebrew 安装方式:

代码块
Nginx
自动换行
复制代码
brew install yt-dlp
brew upgrade yt-dlp
复制成功

安装完成后验证:

代码块
CSS
自动换行
复制代码
yt-dlp --version
ffmpeg -version
复制成功

六、Linux 安装教程

Linux 用户可以直接下载官方二进制文件到 ~/.local/bin:

代码块
Shell
自动换行
复制代码
mkdir -p ~/.local/bin
curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o ~/.local/bin/yt-dlp
chmod a+rx ~/.local/bin/yt-dlp
复制成功

官方 Wiki 也给出了类似的 curl / wget 安装方式,并说明 Unix-like 系统可以把程序安装到 $PATH 里的位置,例如 ~/.local/bin。

Ubuntu / Debian 系发行版也可以使用 PPA:

代码块
Shell
自动换行
复制代码
sudo add-apt-repository ppa:tomtomtom/yt-dlp
sudo apt update
sudo apt install yt-dlp
复制成功

FFmpeg 一般可以通过系统包管理器安装:

代码块
Shell
自动换行
复制代码
sudo apt install ffmpeg
复制成功

七、使用 pip 安装

如果你习惯 Python 环境,可以用 pip 安装官方 PyPI 包:

代码块
Nginx
自动换行
复制代码
python3 -m pip install -U "yt-dlp[default]"
复制成功

升级时重复执行:

代码块
Nginx
自动换行
复制代码
python3 -m pip install -U "yt-dlp[default]"
复制成功

官方 Wiki 还提供了 nightly 版本安装方式:

代码块
CSS
自动换行
复制代码
python3 -m pip install -U --pre "yt-dlp[default]"
复制成功

官方 README 说明,yt-dlp 目前有 stable、nightly、master 三个发布渠道;其中 nightly 更适合经常使用 yt-dlp 的用户,因为视频网站变化频繁,stable 版本有时会因平台改动而变“旧”。

八、基础使用:一条命令下载视频

yt-dlp 的基本语法非常简单:

代码块
CSS
自动换行
复制代码
yt-dlp [OPTIONS] URL
复制成功

官方 README 里的基本格式就是:

代码块
CSS
自动换行
复制代码
yt-dlp [OPTIONS] [--] URL [URL...]
复制成功

最简单的用法:

代码块
JavaScript
自动换行
复制代码
yt-dlp "https://example.com/video"
复制成功

这里建议给 URL 加引号,尤其是 Windows 终端里,视频链接中如果包含 & 等特殊字符,不加引号可能会被 shell 当成命令分隔符。

九、下载最高画质视频

通常情况下,你只需要:

代码块
JavaScript
自动换行
复制代码
yt-dlp "视频链接"
复制成功

yt-dlp 默认会尽量选择最佳画质。遇到音视频分离的平台,它会下载视频流和音频流,然后用 FFmpeg 合并。

想查看所有可用格式,可以先运行:

代码块
powershell
自动换行
复制代码
yt-dlp -F "视频链接"
复制成功

官方文档说明,-F / --list-formats 可以列出视频可用格式。

如果你想指定某个格式,可以使用:

代码块
apache
自动换行
复制代码
yt-dlp -f 137+140 "视频链接"
复制成功

其中 137 可能代表某个视频流,140 可能代表某个音频流,实际编号以 -F 输出为准。

想尽量输出 MP4,可以用:

代码块
CSS
自动换行
复制代码
yt-dlp -f "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4]/bv*+ba/b" --merge-output-format mp4 "视频链接"
复制成功

官方文档也说明,--merge-output-format 可指定合并容器,例如 mp4/mkv。

十、指定文件名和保存目录

默认文件名可能很长,尤其是 TikTok、短视频平台或带话题标签的视频。Windows 对路径长度和特殊字符更敏感,所以建议主动指定文件名模板。

最常用:

代码块
JavaScript
自动换行
复制代码
yt-dlp -o "%(title).200s.%(ext)s" "视频链接"
复制成功

这里的意思是:文件名使用视频标题,但最多保留 200 个字符,扩展名自动匹配。

官方 README 说明,-o / --output 用来设置输出文件名模板;还可以使用 --windows-filenames 强制生成 Windows 兼容文件名。

保存到指定目录:

代码块
JavaScript
自动换行
复制代码
yt-dlp -P "D:\Videos" -o "%(uploader)s/%(title).200s.%(ext)s" "视频链接"
复制成功

这样会按上传者名称建立子目录,适合批量下载。

十一、下载需要登录才能看的内容

有些视频登录后才能看高清,或者登录后才能访问。这时可以使用 Cookie。

方式一:从浏览器读取 Cookie

代码块
JavaScript
自动换行
复制代码
yt-dlp --cookies-from-browser firefox "视频链接"
复制成功

或者:

代码块
JavaScript
自动换行
复制代码
yt-dlp --cookies-from-browser chrome "视频链接"
复制成功

官方文档列出的格式是:

代码块
CSS
自动换行
复制代码
--cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER]
复制成功

并列出了多个支持浏览器。

实测中,Firefox 往往更省心。Windows 上的 Chrome / Edge 近年增强了 Cookie 保护,可能会出现读取失败;遇到问题时,可以关闭浏览器后重试,或者改用 Firefox。

方式二:使用 cookies.txt 文件

如果你已经导出了 Netscape 格式的 cookies 文件,可以这样用:

代码块
JavaScript
自动换行
复制代码
yt-dlp --cookies cookies.txt "视频链接"
复制成功

官方 README 说明,--cookies FILE 用来读取 Netscape 格式 Cookie 文件。

注意:Cookie 相当于登录凭证,不要发给别人,不要随便安装来路不明的 Cookie 导出插件。

十二、下载播放列表,并避免重复下载

下载播放列表:

代码块
JavaScript
自动换行
复制代码
yt-dlp "播放列表链接"
复制成功

如果你要长期同步某个频道或播放列表,强烈建议加上 --download-archive:

代码块
JavaScript
自动换行
复制代码
yt-dlp --download-archive archive.txt "播放列表链接"
复制成功

官方文档说明,--download-archive FILE 会只下载 archive 文件里没有记录过的视频,并把已下载视频 ID 写入文件。

这个命令很适合“定期备份一个频道”:第一次下载全部内容,之后再运行就只下载新增内容。

十三、只提取音频:视频转 MP3 / M4A

提取 MP3:

代码块
CSS
自动换行
复制代码
yt-dlp -x --audio-format mp3 "视频链接"
复制成功

提取 M4A:

代码块
CSS
自动换行
复制代码
yt-dlp -x --audio-format m4a "视频链接"
复制成功

官方 README 说明,-x / --extract-audio 会把视频转换为纯音频文件,并且需要 FFmpeg / ffprobe;--audio-format 可指定 mp3、m4a、opus、wav 等格式。

十四、下载字幕并嵌入视频

下载字幕:

代码块
perl
自动换行
复制代码
yt-dlp --write-subs "视频链接"
复制成功

下载自动字幕:

代码块
C++
自动换行
复制代码
yt-dlp --write-auto-subs "视频链接"
复制成功

嵌入字幕到视频:

代码块
CSS
自动换行
复制代码
yt-dlp --write-subs --embed-subs "视频链接"
复制成功

官方文档说明,--write-subs 用于写出字幕文件,--write-auto-subs 用于写出自动生成字幕;--embed-subs 可以把字幕嵌入 mp4、webm、mkv 视频。

十五、跳过 YouTube 视频中的赞助片段

yt-dlp 支持 SponsorBlock。比如你想标记赞助片段:

代码块
JavaScript
自动换行
复制代码
yt-dlp --sponsorblock-mark sponsor "视频链接"
复制成功

如果想直接移除赞助片段:

代码块
cs
自动换行
复制代码
yt-dlp --sponsorblock-remove sponsor "视频链接"
复制成功

官方 README 说明,SponsorBlock 选项可以给 sponsor、intro、outro、selfpromo、preview、filler 等片段创建章节或直接移除。

这个功能只适合 YouTube,并依赖 SponsorBlock 社区数据库。

十六、在 Python 项目中调用 yt-dlp

yt-dlp 不只是命令行工具,也可以作为 Python 库使用。

安装:

代码块
Nginx
自动换行
复制代码
python3 -m pip install -U "yt-dlp[default]"
复制成功

最小示例:

代码块
JavaScript
自动换行
复制代码
from yt_dlp import YoutubeDL
urls = ["https://www.youtube.com/watch?v=BaW_jenozKc"]
with YoutubeDL() as ydl:
    ydl.download(urls)
复制成功

官方 README 中也给出了类似的 Python 嵌入示例,并提醒不要依赖普通 stdout 解析结果,而应使用 -J、--print、--progress-template 等更稳定的输出方式。

十七、常见问题排查

1. 提示找不到 FFmpeg

检查:

代码块
Nginx
自动换行
复制代码
ffmpeg -version
ffprobe -version
复制成功

如果命令不存在,说明 FFmpeg 没装好,或者没有加入 Path。

2. 下载不到高清

可能原因有三个:你没有登录;该视频本身没有高清源;平台对未登录用户限制了清晰度。可以尝试:

代码块
JavaScript
自动换行
复制代码
yt-dlp --cookies-from-browser firefox "视频链接"
复制成功

或者:

代码块
JavaScript
自动换行
复制代码
yt-dlp --cookies cookies.txt "视频链接"
复制成功

3. Windows 文件名太长或包含特殊字符

使用:

代码块
JavaScript
自动换行
复制代码
yt-dlp --windows-filenames -o "%(title).120s.%(ext)s" "视频链接"
复制成功

4. 下载速度慢

可以尝试增加分片并发:

代码块
apache
自动换行
复制代码
yt-dlp -N 8 "视频链接"
复制成功

-N 是 --concurrent-fragments 的简写,官方文档说明它用于设置 DASH / HLS 分片并发下载数量。

5. 突然某个平台下载失败

先升级:

代码块
js
自动换行
复制代码
yt-dlp -U
复制成功

如果是 pip 安装:

代码块
Nginx
自动换行
复制代码
python3 -m pip install -U "yt-dlp[default]"
复制成功

官方 README 也提到,二进制版本可以用 yt-dlp -U 更新;pip 安装则重新运行安装命令。

十八、推荐命令速查

代码块
perl
自动换行
复制代码
# 下载视频
yt-dlp "视频链接"
# 查看所有格式
yt-dlp -F "视频链接"
# 指定输出文件名,限制标题长度
yt-dlp -o "%(title).200s.%(ext)s" "视频链接"
# 保存到指定目录
yt-dlp -P "./downloads" "视频链接"
# 从 Firefox 读取登录 Cookie
yt-dlp --cookies-from-browser firefox "视频链接"
# 使用 cookies.txt
yt-dlp --cookies cookies.txt "视频链接"
# 下载播放列表,并记录已下载内容
yt-dlp --download-archive archive.txt "播放列表链接"
# 提取 MP3
yt-dlp -x --audio-format mp3 "视频链接"
# 下载字幕
yt-dlp --write-subs "视频链接"
# 下载自动字幕并嵌入视频
yt-dlp --write-auto-subs --embed-subs "视频链接"
# 增加分片并发
yt-dlp -N 8 "视频链接"
# 更新 yt-dlp
yt-dlp -U
复制成功

结语

yt-dlp 最厉害的地方,不只是“能下载很多网站的视频”,而是它把视频下载里最麻烦的一整套流程自动化了:自动选画质、处理音画分离、合并文件、读取 Cookie、批量下载、跳过已下载内容、提取音频、处理字幕、甚至还能作为 Python 库嵌入项目。

从 youtube-dl 的 DMCA 风波,到 yt-dlp 成为更活跃、更强大的继任者,它也算是开源社区生命力的一个缩影:好的工具不会轻易消失,只会在社区手里继续进化。