toMedia
问题排查

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 下载视频合法吗?

这取决于你所在的地区法律和视频的版权状态。通常:

  • 下载自己上传的视频:✅
  • 下载公开免费的视频供个人使用:多数地区允许
  • 下载付费/版权内容进行分发:❌

请遵守当地法律和平台服务条款。

On this page