

不过在正式开始前先说一句:请只下载你有权保存、备份或离线观看的内容,并遵守所在平台的服务条款与当地法律。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 的故事绕不开 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 / ffprobe 负责音视频合并、转码、提取音频、嵌入封面和字幕等后处理。官方 README 明确说,ffmpeg 和 ffprobe 对合并分离的音视频流以及许多后处理任务是必需的;并特别提醒:你需要的是 FFmpeg 可执行文件,不是 PyPI 上同名的 Python 包。
官方文档还说明,yt-dlp 可以通过官方二进制文件、pip 或第三方包管理器安装;Windows 推荐 yt-dlp.exe,macOS 推荐 yt-dlp_macos,Linux/BSD 推荐平台无关的 yt-dlp 文件。

到 yt-dlp 的 GitHub Release 页面,下载:
yt-dlp.exe 然后建议新建一个目录,例如:
C:\Tools\yt-dlp\ 把 yt-dlp.exe 放进去。
接着下载 FFmpeg,把解压后的 bin 目录加入系统环境变量 Path。最终你应该能在任意终端里运行:
yt-dlp --version
ffmpeg -version
ffprobe -version 

不建议把这些 exe 直接丢进 C:\Windows\System32,虽然这样也能运行,但后续管理、升级和排查问题都不方便。
官方安装 Wiki 也列出了 Windows 包管理器方式:
winget install yt-dlp 或者:
scoop install yt-dlp 或者:
choco install yt-dlp 这些方式的好处是升级简单,比如 winget 可以用:
winget upgrade yt-dlp macOS 用户最简单的方式是 Homebrew:
brew install yt-dlp
brew install ffmpeg yt-dlp 官方 Wiki 也列出了 Homebrew 安装方式:
brew install yt-dlp
brew upgrade yt-dlp 安装完成后验证:
yt-dlp --version
ffmpeg -version Linux 用户可以直接下载官方二进制文件到 ~/.local/bin:
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:
sudo add-apt-repository ppa:tomtomtom/yt-dlp
sudo apt update
sudo apt install yt-dlp FFmpeg 一般可以通过系统包管理器安装:
sudo apt install ffmpeg 如果你习惯 Python 环境,可以用 pip 安装官方 PyPI 包:
python3 -m pip install -U "yt-dlp[default]" 升级时重复执行:
python3 -m pip install -U "yt-dlp[default]" 官方 Wiki 还提供了 nightly 版本安装方式:
python3 -m pip install -U --pre "yt-dlp[default]" 官方 README 说明,yt-dlp 目前有 stable、nightly、master 三个发布渠道;其中 nightly 更适合经常使用 yt-dlp 的用户,因为视频网站变化频繁,stable 版本有时会因平台改动而变“旧”。
yt-dlp 的基本语法非常简单:
yt-dlp [OPTIONS] URL 官方 README 里的基本格式就是:
yt-dlp [OPTIONS] [--] URL [URL...] 最简单的用法:
yt-dlp "https://example.com/video" 这里建议给 URL 加引号,尤其是 Windows 终端里,视频链接中如果包含 & 等特殊字符,不加引号可能会被 shell 当成命令分隔符。

通常情况下,你只需要:
yt-dlp "视频链接" yt-dlp 默认会尽量选择最佳画质。遇到音视频分离的平台,它会下载视频流和音频流,然后用 FFmpeg 合并。
想查看所有可用格式,可以先运行:
yt-dlp -F "视频链接" 官方文档说明,-F / --list-formats 可以列出视频可用格式。

如果你想指定某个格式,可以使用:
yt-dlp -f 137+140 "视频链接" 其中 137 可能代表某个视频流,140 可能代表某个音频流,实际编号以 -F 输出为准。
想尽量输出 MP4,可以用:
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 对路径长度和特殊字符更敏感,所以建议主动指定文件名模板。
最常用:
yt-dlp -o "%(title).200s.%(ext)s" "视频链接" 这里的意思是:文件名使用视频标题,但最多保留 200 个字符,扩展名自动匹配。
官方 README 说明,-o / --output 用来设置输出文件名模板;还可以使用 --windows-filenames 强制生成 Windows 兼容文件名。
保存到指定目录:
yt-dlp -P "D:\Videos" -o "%(uploader)s/%(title).200s.%(ext)s" "视频链接" 这样会按上传者名称建立子目录,适合批量下载。
有些视频登录后才能看高清,或者登录后才能访问。这时可以使用 Cookie。
yt-dlp --cookies-from-browser firefox "视频链接" 或者:
yt-dlp --cookies-from-browser chrome "视频链接" 官方文档列出的格式是:
--cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER] 并列出了多个支持浏览器。

实测中,Firefox 往往更省心。Windows 上的 Chrome / Edge 近年增强了 Cookie 保护,可能会出现读取失败;遇到问题时,可以关闭浏览器后重试,或者改用 Firefox。
如果你已经导出了 Netscape 格式的 cookies 文件,可以这样用:
yt-dlp --cookies cookies.txt "视频链接" 官方 README 说明,--cookies FILE 用来读取 Netscape 格式 Cookie 文件。
注意:Cookie 相当于登录凭证,不要发给别人,不要随便安装来路不明的 Cookie 导出插件。
下载播放列表:
yt-dlp "播放列表链接" 如果你要长期同步某个频道或播放列表,强烈建议加上 --download-archive:
yt-dlp --download-archive archive.txt "播放列表链接" 官方文档说明,--download-archive FILE 会只下载 archive 文件里没有记录过的视频,并把已下载视频 ID 写入文件。
这个命令很适合“定期备份一个频道”:第一次下载全部内容,之后再运行就只下载新增内容。
提取 MP3:
yt-dlp -x --audio-format mp3 "视频链接" 提取 M4A:
yt-dlp -x --audio-format m4a "视频链接" 官方 README 说明,-x / --extract-audio 会把视频转换为纯音频文件,并且需要 FFmpeg / ffprobe;--audio-format 可指定 mp3、m4a、opus、wav 等格式。

下载字幕:
yt-dlp --write-subs "视频链接" 下载自动字幕:
yt-dlp --write-auto-subs "视频链接" 嵌入字幕到视频:
yt-dlp --write-subs --embed-subs "视频链接" 官方文档说明,--write-subs 用于写出字幕文件,--write-auto-subs 用于写出自动生成字幕;--embed-subs 可以把字幕嵌入 mp4、webm、mkv 视频。
yt-dlp 支持 SponsorBlock。比如你想标记赞助片段:
yt-dlp --sponsorblock-mark sponsor "视频链接" 如果想直接移除赞助片段:
yt-dlp --sponsorblock-remove sponsor "视频链接" 官方 README 说明,SponsorBlock 选项可以给 sponsor、intro、outro、selfpromo、preview、filler 等片段创建章节或直接移除。
这个功能只适合 YouTube,并依赖 SponsorBlock 社区数据库。
yt-dlp 不只是命令行工具,也可以作为 Python 库使用。
安装:
python3 -m pip install -U "yt-dlp[default]" 最小示例:
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 等更稳定的输出方式。
检查:
ffmpeg -version
ffprobe -version 如果命令不存在,说明 FFmpeg 没装好,或者没有加入 Path。
可能原因有三个:你没有登录;该视频本身没有高清源;平台对未登录用户限制了清晰度。可以尝试:
yt-dlp --cookies-from-browser firefox "视频链接" 或者:
yt-dlp --cookies cookies.txt "视频链接" 使用:
yt-dlp --windows-filenames -o "%(title).120s.%(ext)s" "视频链接" 可以尝试增加分片并发:
yt-dlp -N 8 "视频链接" -N 是 --concurrent-fragments 的简写,官方文档说明它用于设置 DASH / HLS 分片并发下载数量。
先升级:
yt-dlp -U 如果是 pip 安装:
python3 -m pip install -U "yt-dlp[default]" 官方 README 也提到,二进制版本可以用 yt-dlp -U 更新;pip 安装则重新运行安装命令。
# 下载视频
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 成为更活跃、更强大的继任者,它也算是开源社区生命力的一个缩影:好的工具不会轻易消失,只会在社区手里继续进化。