基础用法
下载视频
使用 yt-dlp 下载视频的完整指南
默认下载(最佳画质)
yt-dlp 默认会选择最佳画质的视频+音频进行下载和合并。
# 下载最佳画质
yt-dlp "URL"
# 等价于
yt-dlp -f "bestvideo+bestaudio/best" "URL"import yt_dlp
ydl_opts = {
'format': 'bestvideo+bestaudio/best',
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])[download] Destination: 视频标题.webm
[download] 100% of 128.5MiB in 00:15 at 8.6MiB/s
[Merger] Merging formats into "视频标题.mkv"
Deleting original file 视频标题.webm (pass -k to keep)指定分辨率
# 下载 1080p
yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" "URL"
# 下载 720p
yt-dlp -f "bestvideo[height<=720]+bestaudio/best[height<=720]" "URL"
# 下载 4K(如果可用)
yt-dlp -f "bestvideo[height<=2160]+bestaudio" "URL"import yt_dlp
# 下载 1080p
ydl_opts = {
'format': 'bestvideo[height<=1080]+bestaudio/best[height<=1080]',
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])指定输出格式
# 合并为 mp4 格式
yt-dlp --merge-output-format mp4 "URL"
# 下载 mp4 格式的视频(不需要合并)
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]" "URL"import yt_dlp
ydl_opts = {
'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]',
'merge_output_format': 'mp4',
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])使用 --merge-output-format mp4 会让 FFmpeg 将下载的视频和音频合并为 MP4 容器格式。如果原始流就是 mp4/m4a,则无需转码,合并很快。
只下载视频(无音频)
# 只下载视频流(无音频)
yt-dlp -f "bestvideo" "URL"import yt_dlp
ydl_opts = {
'format': 'bestvideo',
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])下载指定格式 ID
先查看可用格式,再指定 ID 下载:
# 第一步:查看所有可用格式
yt-dlp -F "URL"
# 第二步:下载指定格式(例如 137+140)
yt-dlp -f "137+140" "URL"import yt_dlp
# 第一步:查看格式列表
with yt_dlp.YoutubeDL({'skip_download': True}) as ydl:
info = ydl.extract_info("URL", download=False)
for f in info['formats']:
print(f"{f['format_id']:>5} | {f.get('ext'):>5} | "
f"{f.get('resolution', 'audio only'):>12} | "
f"{f.get('filesize_approx', 0)/1024/1024:.1f}MB")
# 第二步:下载指定格式
ydl_opts = {'format': '137+140'}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])ID | ext | resolution | size
137 | mp4 | 1920x1080 | 85.3MB
136 | mp4 | 1280x720 | 42.1MB
135 | mp4 | 854x480 | 21.5MB
140 | m4a | audio only | 3.2MB
251 | webm | audio only | 4.1MB断点续传
# 支持断点续传(默认启用)
yt-dlp -c "URL"
# 重新下载(不续传)
yt-dlp --no-continue "URL"import yt_dlp
ydl_opts = {
'continuedl': True, # 断点续传(默认 True)
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])限速下载
# 限制下载速度为 10MB/s
yt-dlp --limit-rate 10M "URL"
# 限制为 500KB/s
yt-dlp --limit-rate 500K "URL"import yt_dlp
ydl_opts = {
'ratelimit': 10 * 1024 * 1024, # 10MB/s(单位:字节/秒)
}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
ydl.download(["URL"])