toMedia
基础用法

下载视频

使用 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"])

相关页面

On this page