yt-dlp:视频、音频、字幕一行命令存到本地
你能得到什么:一条命令把公开视频存成 MP4、抽成 MP3,或者只拿字幕。字幕交给 AI 做摘要,一小时的讲座几分钟就能看完重点;课程和讲座存在本地,通勤路上离线听。适合:常看长视频学习、做内容素材整理的人。不适合:想下载会员专享或受版权保护内容再传播的人,请只保存你有权保存的内容,并遵守网站条款。
项目速览
| 项目 | 内容 |
|---|---|
| 仓库 | yt-dlp/yt-dlp |
| Star | 199,825(截至 2026-10-21) |
| 许可证 | Unlicense(PyInstaller 打包的可执行文件含 GPLv3+ 代码,整体按 GPLv3+) |
| 最新版本 | 2026.08.19 |
| 它做什么 | 命令行音视频下载器,支持上千个网站,能选画质、抽音频、下字幕、批量处理播放列表 |
安装指南
合并音视频、转 MP3 都要用到 FFmpeg,建议一起装上。
brew install yt-dlp ffmpeg# pip 方式,[default] 会带上推荐的可选依赖
python3 -m pip install -U "yt-dlp[default]"
sudo apt install ffmpeg # 或用发行版自己的包管理器winget install --source winget --id yt-dlp.yt-dlp
winget install --source winget --id Gyan.FFmpeg装完先看版本:yt-dlp --version。用官方独立可执行文件安装的,以后用 yt-dlp -U 升级;用 pip、brew、winget 装的,用对应的包管理器升级。
使用教程:长视频变成可检索的字幕和音频
- 看有哪些清晰度:
yt-dlp -F "视频链接"列出所有格式。 - 存成 MP4:
yt-dlp -f "bv*+ba/b" --merge-output-format mp4 -o "%(title)s.%(ext)s" "视频链接",最好的画质和音轨合成一个 MP4。 - 只要音频:
yt-dlp -x --audio-format mp3 "视频链接",适合播客、讲座。 - 只要字幕:
yt-dlp --write-subs --write-auto-subs --sub-langs "zh-Hans,en" --skip-download "视频链接",拿到.vtt字幕文件。 - 交给 AI:把字幕文件内容贴给 AI,让它按时间线列要点;配合本地的 Ollama,整个过程不用把内容发到外部服务。
避坑与解决方案
提示 No supported JavaScript runtime could be found
新版 yt-dlp 处理 YouTube 时需要一个 JavaScript 运行时,没有的话会给出这条警告,部分格式可能拿不到。我们这次实测就出现了这条警告,好在测试视频的格式仍然完整。解决:装 deno(官方默认启用、推荐);已经装了 Node.js 的,可以加 --js-runtimes node。详见官方 EJS 说明。
下字幕报 HTTP Error 429: Too Many Requests
我们用 --sub-langs "en.*" 下自动字幕时,通配符匹配到了一堆「英语翻译成其他语言」的自动字幕,连续请求后被限流,报 429。解决:语言写精确,比如 --sub-langs en 或 zh-Hans,en;先用 --list-subs 看有哪些字幕再挑。
提示没有可用的 impersonate target
有些网站需要模拟浏览器请求,没装相关依赖时会提示这条警告。解决:用 pip 安装时带上 curl-cffi 这个可选依赖:pip install "yt-dlp[default,curl-cffi]"。
合并或转 MP3 失败
没装 FFmpeg 时,分开下载的视频和音频无法合并,-x 抽音频也会失败。装好 FFmpeg 并确保它在 PATH 里。
突然大面积失效
视频网站经常改版,旧版本 yt-dlp 失效很常见。遇到「昨天还能用、今天不行」,先升级到最新版再说。
WANGXXXL 实测于 2026-10-21
- 环境:Linux 云电脑,Python 3.12 虚拟环境,
uv pip install "yt-dlp[default]"装到 2026.08.19 版,系统已有 FFmpeg。 - 测试视频:YouTube 上第一支视频「Me at the zoo」(19 秒)。
- 结果:
-F正常列出格式(同时出现上面说的 JavaScript 运行时警告);最佳画质加音轨合并成 MP4 约 1.6 秒,文件 476 KB;-x --audio-format mp3约 1.7 秒得到 121 KB 的 MP3;--sub-langs "en.*"拿到了英文字幕,但请求翻译字幕时报 429。