问题排查
FAQ
yt-dlp 常见问题解答
基础问题
yt-dlp 和 youtube-dl 有什么区别?
yt-dlp 是 youtube-dl 的活跃分支(fork),具有:
- 更快的开发节奏和 Bug 修复
- 更多新功能(SponsorBlock、格式排序等)
- 更好的性能和并发下载支持
- 更多网站支持
结论:现在都应该使用 yt-dlp。
yt-dlp 支持哪些网站?
数千个网站。运行 yt-dlp --list-extractors 查看完整列表,或查看 官方支持站点列表。
yt-dlp 是免费的吗?
是的,yt-dlp 是开源免费软件(Unlicense 许可证)。
下载问题
为什么下载的视频没有声音?
你可能只下载了视频流。使用合并格式下载:
yt-dlp -f "bestvideo+bestaudio" --merge-output-format mp4 "URL"下载的文件格式是 webm/mkv,我想要 mp4
# 方式一:直接选择 mp4 格式
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]" "URL"
# 方式二:合并时指定 mp4
yt-dlp --merge-output-format mp4 "URL"
# 方式三:使用格式排序
yt-dlp -S "ext:mp4:m4a" "URL"如何下载最高画质?
# 默认行为就是最高画质
yt-dlp "URL"
# 明确指定
yt-dlp -f "bestvideo+bestaudio" "URL"下载的文件在哪里?
默认保存在当前工作目录,使用 -o 指定路径:
yt-dlp -o "~/Downloads/%(title)s.%(ext)s" "URL"如何持续下载一个频道的新视频?
# 定期运行此命令,archive.txt 记录已下载的视频
yt-dlp --download-archive archive.txt \
-o "%(uploader)s/%(upload_date>%Y-%m-%d)s - %(title)s.%(ext)s" \
"CHANNEL_URL"性能问题
如何加速下载?
# 并发分段下载
yt-dlp -N 4 "URL"
# 使用代理(可能改善路由)
yt-dlp --proxy "http://proxy:port" "URL"yt-dlp 占用太多磁盘空间
# 限制画质
yt-dlp -f "bestvideo[height<=720]+bestaudio" "URL"
# 下载后保留临时文件用 -k
# 不使用 -k 时临时文件自动删除Python API 问题
extract_info() 和 download() 的区别?
# extract_info 只提取信息(可选下载)
info = ydl.extract_info("URL", download=False) # 不下载
info = ydl.extract_info("URL", download=True) # 下载
# download 只下载
ydl.download(["URL"])如何获取可序列化的视频信息?
info = ydl.extract_info("URL", download=False)
# info 中可能包含不可序列化的对象
clean_info = yt_dlp.utils.sanitize_info(info)
import json
json.dumps(clean_info) # 现在可以了如何在多线程中使用 yt-dlp?
每个线程创建独立的 YoutubeDL 实例:
from concurrent.futures import ThreadPoolExecutor
def download(url):
with yt_dlp.YoutubeDL(opts) as ydl:
ydl.download([url])
with ThreadPoolExecutor(max_workers=3) as executor:
executor.map(download, urls)不要在多个线程中共享同一个
YoutubeDL 实例!合规问题
使用 yt-dlp 下载视频合法吗?
这取决于你所在的地区法律和视频的版权状态。通常:
- 下载自己上传的视频:✅
- 下载公开免费的视频供个人使用:多数地区允许
- 下载付费/版权内容进行分发:❌
请遵守当地法律和平台服务条款。