yt-dlp 视频下载指南
yt-dlp 是最流行的命令行视频下载工具,支持数千个网站。
这页适合作为“视频下载与归档的通用入口”。真正影响体验的通常不是会不会下一条命令,而是格式选择、目录组织、字幕、Cookie 和批量归档有没有一起考虑。
先按目标选命令
- 只想快速下一个视频:直接用默认命令
- 只想要音频:用
-x --audio-format - 想控制清晰度和封装格式:先
-F看格式,再精确选轨 - 要保存字幕、元数据和封面:提前在配置文件里固化
- 要长期批量抓频道或播放列表:一定配
--download-archive
安装
# Scoop
scoop install yt-dlp
# Winget
winget install yt-dlp.yt-dlp
# pip
pip install yt-dlp
确保同时安装 FFmpeg(合并音视频需要):
scoop install ffmpeg
基本用法
# 下载视频(自动选择最佳质量)
yt-dlp "https://www.youtube.com/watch?v=VIDEO_ID"
# 下载音频
yt-dlp -x --audio-format mp3 "URL"
# 下载最佳质量
yt-dlp -f "bestvideo+bestaudio" "URL"
推荐目录结构
如果你会长期下载内容,建议不要全部扔在同一个目录里。比较稳的做法是:
Downloads/
video/
youtube/
bilibili/
courses/
audio/
subtitles/
archive/
再配合输出模板,把频道、日期、标题拆开,后期整理会轻松很多。
格式选择
# 查看可用格式
yt-dlp -F "URL"
# 下载指定格式
yt-dlp -f 137+140 "URL"
# 限制分辨率
yt-dlp -f "bestvideo[height<=1080]+bestaudio" "URL"
# 偏好 MP4
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]" --merge-output-format mp4 "URL"
字幕下载
# 下载字幕
yt-dlp --write-sub --sub-lang zh-Hans,en "URL"
# 下载自动生成字幕
yt-dlp --write-auto-sub --sub-lang zh-Hans "URL"
# 嵌入字幕到视频
yt-dlp --embed-subs --sub-lang zh-Hans,en "URL"
# 仅下载字幕
yt-dlp --skip-download --write-sub --sub-lang zh-Hans "URL"
播放列表与频道
# 下载播放列表
yt-dlp "PLAYLIST_URL"
# 下载播放列表中指定范围
yt-dlp --playlist-start 5 --playlist-end 10 "PLAYLIST_URL"
# 下载频道所有视频
yt-dlp "CHANNEL_URL"
# 仅下载最近 5 个视频
yt-dlp --playlist-end 5 "CHANNEL_URL"
输出模板
# 自定义文件名
yt-dlp -o "%(title)s.%(ext)s" "URL"
# 按频道分文件夹
yt-dlp -o "%(channel)s/%(title)s.%(ext)s" "URL"
# 带日期
yt-dlp -o "%(upload_date)s - %(title)s.%(ext)s" "URL"
更适合归档的模板示例
yt-dlp -o "%(uploader)s/%(upload_date)s - %(title)s [%(id)s].%(ext)s" "URL"
这样即使重名、删稿、改标题,后面也更容易核对来源。
配置文件
创建 %APPDATA%\yt-dlp\config.txt:
# 默认最佳质量
-f bestvideo+bestaudio
# 输出模板
-o %(title)s.%(ext)s
# 嵌入缩略图和元数据
--embed-thumbnail
--embed-metadata
# 下载字幕
--write-sub
--sub-lang zh-Hans,en,ja
# 使用 aria2c 多线程下载
--downloader aria2c
--downloader-args aria2c:"-x 16 -s 16"
建议把常用选项放进配置文件,命令行只保留本次任务特有的部分。这样长期使用时不容易漏掉字幕、封面和元数据参数。
进阶用法
Cookie 登录
# 从浏览器导出 cookie
yt-dlp --cookies-from-browser chrome "URL"
# 使用 cookie 文件
yt-dlp --cookies cookies.txt "URL"
限速
yt-dlp --limit-rate 5M "URL"
批量下载
# 从文件读取 URL 列表
yt-dlp -a urls.txt
# 下载并归档(跳过已下载)
yt-dlp --download-archive archive.txt "PLAYLIST_URL"
推荐使用顺序
建议按这个顺序掌握:
- 先会下载单条视频和音频
- 再学会查看格式和精确选轨
- 再配置字幕、封面、元数据
- 再处理 Cookie 和登录站点
- 最后再做批量归档、定时任务和自动整理
常见问题
合并失败或没有声音
高频原因通常是:
- 没装 FFmpeg
- 选到了不兼容的音视频流
- 目标站点返回了特殊封装格式
先确认 ffmpeg -version 正常,再检查 -F 输出和合并格式。
会员视频、年龄限制视频下不下来
优先尝试:
--cookies-from-browser- 导出
cookies.txt - 检查当前账号在浏览器里是否真的能播放该视频
播放列表重复下载很多次
给长期任务加上:
yt-dlp --download-archive archive.txt "PLAYLIST_URL"
这样再次执行时会自动跳过已记录条目。
下载很慢
先排查:
- 是否被站点限速
- 是否需要
aria2c - 当前格式是否本来就体积过大
风险提醒
- 注意目标站点条款、版权和地区限制
- 不要默认把浏览器 Cookie 暴露给不可信脚本
- 批量下载前先拿一个小列表做验证,避免下错一整批
- 长期归档建议保留原始链接、视频 ID 和下载记录
延伸阅读
参考链接
- yt-dlp GitHub — 源码与文档
- 支持的网站列表 — 数千个站点
- yt-dlp Wiki — 进阶指南