1、工具下载:https://github.com/yt-dlp/yt-dlp/releases
2、复制cookie:google chrome扩展插件 cookie Manager
3、将bilibili站cookie导出为json文件,使用json2netscape.py将json转化为netscape格式
4、将bilibili站需下载视频复制链接,例如https://www.bilibili.com/video/BV1gj411E7W3
5、将视频链接批量保存在urls.txt文本文件,每行保留一行链接
6、执行yt-dlp.exe --cookies cookies.txt -a urls.txt -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" --merge-output-format mp4 --write-subs --sub-langs all命令
用法:yt-dlp.exe [选项] URL [URL...]
选项:
通用选项:
-h, --help 打印此帮助文本并退出
--version 打印程序版本并退出
-U, --update 将此程序更新到最新的稳定版本
--no-update 不检查更新(默认)
--update-to [频道]@[标签] 升级/降级到特定版本。频道也可以是仓库。如果省略,频道和标签分别默认为 "stable" 和 "latest";详情参见 "更新"。支持的频道:stable, nightly, master
-i, --ignore-errors 忽略下载和后处理错误。即使后处理失败,下载也会被视为成功
--no-abort-on-error 遇到下载错误时继续处理下一个视频;例如,跳过播放列表中不可用的视频(默认)
--abort-on-error 如果发生错误,中止后续视频的下载(别名:--no-ignore-errors)
--list-extractors 列出所有支持的提取器并退出
--extractor-descriptions 输出所有支持提取器的描述并退出
--use-extractors 名称 要使用的提取器名称,用逗号分隔。也可以使用正则表达式、"all"、"default" 和 "end"(结束 URL 匹配);例如 --ies "holodex.*,end,youtube"。在名称前加 "-" 以排除它,例如 --ies default,-generic。使用 --list-extractors 查看提取器名称列表。(别名:--ies)
--default-search 前缀 为不完整的 URL 使用此前缀。例如 "gvsearch2:python" 从 Google 视频下载搜索词 "python" 的两个视频。使用值 "auto" 让 yt-dlp 猜测("auto_warning" 在猜测时发出警告)。"error" 只抛出错误。默认值 "fixup_error" 修复损坏的 URL,但如果无法修复则发出错误而不是搜索
--ignore-config 不再加载除 --config-locations 指定的配置文件以外的任何配置文件。为了向后兼容,如果在系统配置文件中找到此选项,则不会加载用户配置。(别名:--no-config)
--no-config-locations 不加载任何自定义配置文件(默认)。在配置文件中使用时,忽略当前文件中所有先前定义的 --config-locations
--config-locations 路径 主配置文件的位置;可以是配置文件的路径或其所在目录("-" 表示标准输入)。可多次使用,也可在其他配置文件中使用
--plugin-dirs 目录 用于搜索插件的额外目录路径。此选项可多次使用以添加多个目录。使用 "default" 搜索默认插件目录(默认)
--no-plugin-dirs 清除要搜索的插件目录,包括默认目录及先前 --plugin-dirs 提供的目录
--js-runtimes 运行时[:路径] 启用额外的 JavaScript 运行时,可选择提供运行时位置(二进制文件的路径或其所在目录)。此选项可多次使用以启用多个运行时。支持的运行时(按优先级从高到低):deno, node, quickjs, bun。默认仅启用 "deno"。将使用已启用且可用中优先级最高的运行时。若要在 "deno" 可用时使用较低优先级的运行时,需在启用其他运行时之前传递 --no-js-runtimes
--no-js-runtimes 清除要启用的 JavaScript 运行时,包括默认及先前 --js-runtimes 提供的
--remote-components 组件 允许 yt-dlp 在需要时获取远程组件。如果您使用官方可执行文件或安装了适当版本的 yt-dlp-ejs 包,则当前不需要此选项。可多次使用以允许多个组件。支持的值:ejs:npm(来自 npm 的外部 JavaScript 组件),ejs:github(来自 yt-dlp-ejs GitHub 的外部 JavaScript 组件)。默认不允许任何远程组件
--no-remote-components 禁止获取所有远程组件,包括先前由 --remote-components 或默认允许的
--flat-playlist 不提取播放列表的 URL 结果条目;某些条目的元数据可能缺失,下载可能会被绕过
--no-flat-playlist 完全提取播放列表中的视频(默认)
--live-from-start 从开始处下载直播流。目前为实验性功能,仅支持 YouTube、Twitch、TVer 和 mellow-fan
--no-live-from-start 从当前时间开始下载直播流(默认)
--wait-for-video 最小[-最大] 等待预定流变为可用。传递最小秒数(或范围)以在重试之间等待
--no-wait-for-video 不等待预定流(默认)
--mark-watched 将视频标记为已观看(即使使用 --simulate)
--no-mark-watched 不将视频标记为已观看(默认)
--color [流:]策略 是否在输出中输出颜色代码,可选择以流(stdout 或 stderr)为前缀以应用设置。可以是 "always"、"auto"(默认)、"never" 或 "no_color"(使用非彩色终端序列)。使用 "auto-tty" 或 "no_color-tty" 仅基于终端支持决定。可多次使用
--compat-options 选项 有助于保持与 youtube-dl 或 youtube-dlc 配置兼容的选项,通过恢复 yt-dlp 中的一些更改。详情参见“默认行为差异”
--alias 别名 选项 为选项字符串创建别名。除非别名以短横 "-" 开头,否则会自动添加 "--"。参数按照 Python 字符串格式化迷你语言解析。例如 --alias get-audio,-X "-S aext:{0},abr -x --audio-format {0}" 创建选项 "--get-audio" 和 "-X",它们接受参数(ARG0)并展开为 "-S aext:ARG0,abr -x --audio-format ARG0"。所有定义的别名会在 --help 输出中列出。别名选项可能触发更多别名;请小心避免定义递归选项。作为安全措施,每个别名最多可触发 100 次。此选项可多次使用
-t, --preset-alias 预设 应用预定义的选项集。例如 --preset-alias mp3。可用的预设:mp3, aac, mp4, mkv, sleep。更多信息请参见末尾的“预设别名”部分。此选项可多次使用
网络选项:
--proxy URL 使用指定的 HTTP/HTTPS/SOCKS 代理。要启用 SOCKS 代理,请指定正确的方案,例如 socks5://user:[email protected]:1080/。传入空字符串(--proxy "")表示直连
--socket-timeout 秒数 放弃前等待的时间(秒)
--source-address IP 绑定的客户端 IP 地址
--impersonate 客户端[:操作系统] 请求时模拟的客户端。例如 chrome, chrome-110, chrome:windows-10。传递 --impersonate="" 模拟任何客户端。注意强制对所有请求进行模拟可能会对下载速度和稳定性产生不利影响
--list-impersonate-targets 列出可模拟的客户端
-4, --force-ipv4 所有连接都通过 IPv4
-6, --force-ipv6 所有连接都通过 IPv6
--enable-file-urls 启用 file:// URL。出于安全原因默认禁用
地理限制:
--geo-verification-proxy URL 使用此代理验证某些受地理限制站点的 IP 地址。实际下载使用 --proxy 指定的默认代理(如果未指定则无)
--xff VALUE 如何伪造 X-Forwarded-For HTTP 头以尝试绕过地理限制。可选值:"default"(仅在已知有用时)、"never"、CIDR 表示法的 IP 块,或两位 ISO 3166-2 国家代码
视频选择:
-I, --playlist-items 项目规格 要下载的播放列表索引,用逗号分隔。可以使用 "[开始]:[结束][:步长]" 指定范围。为向后兼容,也支持 START-STOP。使用负索引从右侧计数,负步长则反向下载。例如在大小为 15 的播放列表中使用 "-I 1:3,7,-5::2" 将下载索引为 1,2,3,7,11,13,15 的项目
--min-filesize 大小 如果文件大小小于 SIZE 则中止下载,例如 50k 或 44.6M
--max-filesize 大小 如果文件大小大于 SIZE 则中止下载,例如 50k 或 44.6M
--date 日期 仅下载此日期上传的视频。日期格式可为 "YYYYMMDD" 或 [now|today|yesterday][-N[day|week|month|year]]。例如 "--date today-2weeks" 仅下载两周前同一天上传的视频
--datebefore 日期 仅下载在此日期或之前上传的视频。接受的日期格式与 --date 相同
--dateafter 日期 仅下载在此日期或之后上传的视频。接受的日期格式与 --date 相同
--match-filters 筛选器 通用视频筛选器。任何“输出模板”字段均可使用“格式筛选”中定义的运算符与数字或字符串比较。也可以只指定字段以检查该字段是否存在,使用 "!field" 检查字段不存在,"&" 检查多个条件。需要时可用 "\" 转义 "&" 或引号。如果多次使用,满足至少一个条件即匹配。例如 --match-filters !is_live --match-filters "like_count>?100 & description~='(?i)\bcats \& dogs\b'" 仅匹配非直播视频或那些点赞数超过 100(或点赞字段不可用)且描述包含短语 "cats & dogs"(不区分大小写)的视频。使用 "--match-filters -" 交互式询问是否下载每个视频
--no-match-filters 不使用任何 --match-filters(默认)
--break-match-filters 筛选器 与 "--match-filters" 相同,但在视频被拒绝时停止下载过程
--no-break-match-filters 不使用任何 --break-match-filters(默认)
--no-playlist 如果 URL 同时指向视频和播放列表,则仅下载视频
--yes-playlist 如果 URL 同时指向视频和播放列表,则下载播放列表
--age-limit 岁数 仅下载适合该年龄的视频
--download-archive 文件 仅下载存档文件中未列出的视频。将所有已下载视频的 ID 记录在其中
--no-download-archive 不使用存档文件(默认)
--max-downloads 数量 下载数量达到 NUMBER 后中止
--break-on-existing 遇到 --download-archive 提供的存档中已有的文件时停止下载过程
--no-break-on-existing 遇到存档中已有文件时不停止下载过程(默认)
--break-per-input 改变 --max-downloads、--break-on-existing、--break-match-filters 和 autonumber 为每个输入 URL 重置
--no-break-per-input --break-on-existing 和类似选项会终止整个下载队列
--skip-playlist-after-errors N 允许失败次数达到 N 后跳过播放列表的其余部分
下载选项:
-N, --concurrent-fragments N 应同时下载的 dash/hlsnative 视频片段数(默认为 1)
-r, --limit-rate 速率 最大下载速率(字节/秒),例如 50K 或 4.2M
--throttled-rate 速率 假定发生限速并重新提取视频数据的最低下载速率(字节/秒),例如 100K
-R, --retries 重试次数 重试次数(默认为 10),或 "infinite"
--file-access-retries 重试次数 文件访问错误时重试次数(默认为 3),或 "infinite"
--fragment-retries 重试次数 片段重试次数(默认为 10),或 "infinite"(DASH、hlsnative 和 ISM)
--retry-sleep [类型:]表达式 重试之间睡眠的秒数(可选)以重试类型为前缀(http(默认)、fragment、file_access、extractor)来应用睡眠。表达式可以是数字、linear=开始[:结束[:步长=1]] 或 exp=开始[:结束[:基数=2]]。此选项可多次使用以设置不同重试类型的睡眠,例如 --retry-sleep linear=1::2 --retry-sleep fragment:exp=1:20
--skip-unavailable-fragments 跳过 DASH、hlsnative 和 ISM 下载中不可用的片段(默认)(别名:--no-abort-on-unavailable-fragments)
--abort-on-unavailable-fragments 如果片段不可用则中止下载(别名:--no-skip-unavailable-fragments)
--keep-fragments 下载完成后在磁盘上保留已下载的片段
--no-keep-fragments 下载完成后删除已下载的片段(默认)
--buffer-size 大小 下载缓冲区大小,例如 1024 或 16K(默认为 1024)
--resize-buffer 缓冲区大小从 --buffer-size 的初始值自动调整(默认)
--no-resize-buffer 不自动调整缓冲区大小
--http-chunk-size 大小 基于块的 HTTP 下载的块大小,例如 10485760 或 10M(默认禁用)。可能有助于绕过 Web 服务器施加的带宽限制(实验性)
--playlist-random 以随机顺序下载播放列表视频
--lazy-playlist 在收到播放列表条目时立即处理。这会禁用 n_entries、--playlist-random 和 --playlist-reverse
--no-lazy-playlist 仅在完整解析播放列表后处理视频(默认)
--hls-use-mpegts 对 HLS 视频使用 mpegts 容器;允许某些播放器在下载时播放视频,并在下载中断时降低文件损坏的几率。直播流默认启用
--no-hls-use-mpegts 不对 HLS 视频使用 mpegts 容器。不下载直播流时默认使用
--download-sections 正则表达式 仅下载与正则表达式匹配的章节。前缀 "*" 表示时间段而非章节。负时间戳从末尾计算。"*from-url" 可用于下载 URL 中提取的 "start_time" 和 "end_time" 之间的部分。需要 ffmpeg。此选项可多次使用以下载多个部分,例如 --download-sections "*10:15-inf" --download-sections "intro"
--downloader [协议:]名称 要使用的外部下载器的名称或路径(可选)以协议(http、ftp、m3u8、dash、rtmp)为前缀指定使用它。当前支持 native、aria2c、axel、curl、ffmpeg、httpie、wget。可多次使用以为不同协议设置不同下载器。例如 --downloader aria2c --downloader "dash,m3u8:native" 将使用 aria2c 进行 http/ftp 下载,使用 native 下载器进行 dash/m3u8 下载(别名:--external-downloader)
--downloader-args 名称:参数 将这些参数传递给外部下载器。指定下载器名称和参数,用冒号 ":" 分隔。对于 ffmpeg,参数可以使用与 --postprocessor-args 相同的语法传递到不同位置。可多次使用以为不同下载器提供不同参数(别名:--external-downloader-args)
文件系统选项:
-a, --batch-file 文件 包含要下载的 URL 的文件("-" 表示标准输入),每行一个 URL。以 "#"、";" 或 "]" 开头的行被视为注释并忽略
--no-batch-file 不从批处理文件读取 URL(默认)
-P, --paths [类型:]路径 文件应下载到的路径。指定文件类型和路径,用冒号 ":" 分隔。支持所有与 --output 相同的类型。此外,还可以提供 "home"(默认)和 "temp" 路径。所有中间文件首先下载到 temp 路径,下载完成后最终文件移动到 home 路径。如果 --output 是绝对路径,则忽略此选项
-o, --output [类型:]模板 输出文件名模板;详情见“输出模板”
--output-na-placeholder 文本 --output 中不可用字段的占位符(默认:"NA")
--restrict-filenames 将文件名限制为仅 ASCII 字符,并避免文件名中的 "&" 和空格
--no-restrict-filenames 允许文件名中的 Unicode 字符、"&" 和空格(默认)
--windows-filenames 强制文件名兼容 Windows
--no-windows-filenames 仅最小限度地清理文件名
--trim-filenames 长度 将文件名长度(不包括扩展名)限制为指定字符数
-w, --no-overwrites 不覆盖任何文件
--force-overwrites 覆盖所有视频和元数据文件。此选项包含 --no-continue
--no-force-overwrites 不覆盖视频,但覆盖相关文件(默认)
-c, --continue 恢复部分下载的文件/片段(默认)
--no-continue 不恢复部分下载的片段。如果文件未分片,则重新开始下载整个文件
--part 使用 .part 文件而不是直接写入输出文件(默认)
--no-part 不使用 .part 文件 - 直接写入输出文件
--mtime 使用 Last-modified 头设置文件修改时间
--no-mtime 不使用 Last-modified 头设置文件修改时间(默认)
--write-description 将视频描述写入 .description 文件
--no-write-description 不写入视频描述(默认)
--write-info-json 将视频元数据写入 .info.json 文件(可能包含个人信息)
--no-write-info-json 不写入视频元数据(默认)
--write-playlist-metafiles 当使用 --write-info-json、--write-description 等时,除视频元数据外还写入播放列表元数据(默认)
--no-write-playlist-metafiles 当使用 --write-info-json、--write-description 等时不写入播放列表元数据
--clean-info-json 从 infojson 中删除一些内部元数据,如文件名(默认)
--no-clean-info-json 将所有字段写入 infojson
--write-comments 检索视频评论以放入 infojson。即使没有此选项,如果提取已知很快,也会获取评论(别名:--get-comments)
--no-write-comments 除非提取已知很快,否则不检索视频评论(别名:--no-get-comments)
--load-info-json 文件 包含视频信息的 JSON 文件(使用 "--write-info-json" 选项创建)
--cookies 文件 读取 cookies 并转储 cookie jar 的 Netscape 格式文件
--no-cookies 不从文件读取/转储 cookies(默认)
--cookies-from-browser 浏览器[+密钥环][:配置文件][::容器]
从中加载 cookies 的浏览器名称。当前支持的浏览器:brave, chrome, chromium, edge, firefox, opera, safari, vivaldi, whale。可选择提供用于解密 Linux 上 Chromium cookies 的 KEYRING、要加载 cookies 的 PROFILE 名称/路径,以及 CONTAINER 名称(如果是 Firefox)("none" 表示无容器),使用各自的分隔符。默认使用最近访问的配置文件的所有容器。当前支持的密钥环:basictext, gnomekeyring, kwallet, kwallet5, kwallet6
--no-cookies-from-browser 不从浏览器加载 cookies(默认)
--cache-dir 目录 yt-dlp 可以永久存储某些下载信息(如客户端 ID 和签名)的文件系统位置。默认为 ${XDG_CACHE_HOME}/yt-dlp
--no-cache-dir 禁用文件系统缓存
--rm-cache-dir 删除所有文件系统缓存文件
缩略图选项:
--write-thumbnail 将缩略图图像写入磁盘
--no-write-thumbnail 不将缩略图图像写入磁盘(默认)
--write-all-thumbnails 将所有缩略图图像格式写入磁盘
--list-thumbnails 列出每个视频的可用缩略图。除非使用 --no-simulate,否则为模拟模式
互联网快捷方式选项:
--write-link 根据当前平台写入互联网快捷方式文件(.url、.webloc 或 .desktop)。URL 可能由操作系统缓存
--write-url-link 写入 .url Windows 互联网快捷方式。操作系统根据文件路径缓存 URL
--write-webloc-link 写入 .webloc macOS 互联网快捷方式
--write-desktop-link 写入 .desktop Linux 互联网快捷方式
详细度和模拟选项:
-q, --quiet 激活安静模式。如果与 --verbose 一起使用,则将日志打印到 stderr
--no-quiet 停用安静模式(默认)
--no-warnings 忽略警告
-s, --simulate 不下载视频,也不向磁盘写入任何内容
--no-simulate 即使使用了打印/列表选项,也下载视频
--ignore-no-formats-error 忽略“没有视频格式”错误。用于提取元数据,即使视频实际上不可下载(实验性)
--no-ignore-no-formats-error 当找不到可下载的视频格式时抛出错误(默认)
--skip-download 不下载视频,但写入所有相关文件(别名:--no-download)
-O, --print [时机:]模板 要打印到屏幕的字段名或输出模板,可选择以打印时机为前缀,用 ":" 分隔。"WHEN" 支持的值与 --use-postprocessor 相同(默认:video)。隐含 --quiet。除非使用 --no-simulate 或使用后续阶段的 WHEN,否则隐含 --simulate。此选项可多次使用
--print-to-file [时机:]模板 文件 将给定模板追加到文件。WHEN 和 TEMPLATE 的值与 --print 相同。FILE 使用与输出模板相同的语法。此选项可多次使用
-j, --dump-json 安静模式,但为每个视频打印 JSON 信息。除非使用 --no-simulate,否则为模拟模式。可用键的描述见“输出模板”
-J, --dump-single-json 安静模式,但为每个传递的 URL 或 infojson 打印 JSON 信息。除非使用 --no-simulate,否则为模拟模式。如果 URL 指向播放列表,则在一行中转储整个播放列表信息
--force-write-archive 强制写入下载存档条目,只要没有错误发生,即使使用 -s 或其他模拟选项(别名:--force-download-archive)
--newline 将进度条输出为换行
--no-progress 不打印进度条
--progress 即使处于安静模式也显示进度条
--console-title 在控制台标题栏中显示进度
--progress-template [类型:]模板 进度输出的模板,可选择以 "download:"(默认)、"download-title:"(控制台标题)、"postprocess:" 或 "postprocess-title:" 为前缀。视频的字段可通过 "info" 键访问,进度属性可通过 "progress" 键访问。例如 --console-title --progress-template "download-title:%(info.id)s-%(progress.eta)s"
--progress-delta 秒数 进度输出之间的时间(默认:0)
-v, --verbose 打印各种调试信息
--dump-pages 打印使用 base64 编码的下载页面以调试问题(非常详细)
--write-pages 将下载的中间页面写入当前目录的文件以调试问题
--print-traffic 显示发送和读取的 HTTP 流量
变通方法:
--encoding 编码 强制使用指定编码(实验性)
--legacy-server-connect 明确允许 HTTPS 连接到不支持 RFC 5746 安全重新协商的服务器
--no-check-certificates 抑制 HTTPS 证书验证
--prefer-insecure 使用未加密连接检索视频信息
--add-headers 字段:值 指定自定义 HTTP 头及其值,用冒号 ":" 分隔。可多次使用
--bidi-workaround 解决缺乏双向文本支持的终端问题。需要 PATH 中有 bidiv 或 fribidi 可执行文件
--sleep-requests 秒数 数据提取期间请求之间休眠的秒数
--sleep-interval 秒数 每次下载前休眠的秒数。与 --max-sleep-interval 一起使用时,这是最小休眠时间(别名:--min-sleep-interval)
--max-sleep-interval 秒数 最大休眠秒数。只能与 --min-sleep-interval 一起使用
--sleep-subtitles 秒数 每次字幕下载前休眠的秒数
视频格式选项:
-f, --format 格式 视频格式代码,详情见“格式选择”
-S, --format-sort 排序顺序 按给定字段对格式排序,详情见“格式排序”
--format-sort-reset 忽略之前用户指定的排序顺序,重置为默认值
--format-sort-force 强制用户指定的排序顺序优先于所有字段,详情见“格式排序”(别名:--S-force)
--no-format-sort-force 某些字段优先于用户指定的排序顺序(默认)
--video-multistreams 允许多个视频流合并到单个文件中
--no-video-multistreams 每个输出文件仅下载一个视频流(默认)
--audio-multistreams 允许多个音频流合并到单个文件中
--no-audio-multistreams 每个输出文件仅下载一个音频流(默认)
--prefer-free-formats 在相同质量下优先选择具有自由容器的视频格式,而不是非自由格式。与 "-S ext" 一起使用可严格优先选择自由容器,而不考虑质量
--no-prefer-free-formats 不对自由容器给予任何特殊偏好(默认)
--check-formats 确保仅从实际可下载的格式中选择格式
--check-all-formats 检查所有格式是否实际可下载
--no-check-formats 不检查格式是否实际可下载
-F, --list-formats 列出每个视频的可用格式。除非使用 --no-simulate,否则为模拟模式
--merge-output-format 格式 合并格式时可能使用的容器,用 "/" 分隔,例如 "mp4/mkv"。如果不需要合并则忽略。(当前支持:avi, flv, mkv, mov, mp4, webm)
字幕选项:
--write-subs 写入字幕文件
--no-write-subs 不写入字幕文件(默认)
--write-auto-subs 写入自动生成的字幕文件(别名:--write-automatic-subs)
--no-write-auto-subs 不写入自动生成的字幕(默认)(别名:--no-write-automatic-subs)
--list-subs 列出每个视频的可用字幕。除非使用 --no-simulate,否则为模拟模式
--sub-format 格式 字幕格式;接受用 "/" 分隔的格式偏好,例如 "srt" 或 "ass/srt/best"
--sub-langs 语言 要下载的字幕语言(可以是正则表达式)或用逗号分隔的 "all",例如 --sub-langs "en.*,ja"(其中 "en.*" 是匹配 "en" 后跟零个或多个任意字符的正则表达式模式)。可以在语言代码前加 "-" 以从请求的语言中排除它,例如 --sub-langs all,-live_chat。使用 --list-subs 查看可用语言标签列表
认证选项:
-u, --username 用户名 使用此账户 ID 登录
-p, --password 密码 账户密码。如果省略此选项,yt-dlp 将交互式询问
-2, --twofactor 双因素验证码 双因素认证码
-n, --netrc 使用 .netrc 认证数据
--netrc-location 路径 .netrc 认证数据的位置;可以是路径或其所在目录。默认为 ~/.netrc
--netrc-cmd NETRC_CMD 执行以获取提取器凭据的命令
--video-password 密码 视频专用密码
--ap-mso MSO Adobe Pass 多系统运营商(电视提供商)标识符,使用 --ap-list-mso 查看可用 MSO 列表
--ap-username 用户名 多系统运营商账户登录名
--ap-password 密码 多系统运营商账户密码。如果省略此选项,yt-dlp 将交互式询问
--ap-list-mso 列出所有支持的多系统运营商
--client-certificate 证书文件 PEM 格式的客户端证书文件路径。可包含私钥
--client-certificate-key 密钥文件 客户端证书的私钥文件路径
--client-certificate-password 密码 客户端证书私钥的密码(如果加密)。如果未提供且密钥已加密,yt-dlp 将交互式询问
后处理选项:
-x, --extract-audio 将视频文件转换为纯音频文件(需要 ffmpeg 和 ffprobe)
--audio-format 格式 使用 -x 时将音频转换到的格式。(当前支持:best(默认)、aac、alac、flac、m4a、mp3、opus、vorbis、wav)。可以使用与 --remux-video 类似的语法指定多个规则
--audio-quality 质量 指定使用 -x 转换音频时的 ffmpeg 音频质量。对于 VBR,插入 0(最佳)到 10(最差)之间的值,或指定比特率如 128K(默认 5)
--remux-video 格式 如有必要,将视频重新封装到另一个容器(当前支持:avi, flv, gif, mkv, mov, mp4, webm, aac, aiff, alac, flac, m4a, mka, mp3, ogg, opus, vorbis, wav)。如果目标容器不支持视频/音频编解码器,重新封装将失败。可以指定多个规则;例如 "aac>m4a/mov>mp4/mkv" 将 aac 重新封装为 m4a,mov 为 mp4,其他为 mkv
--recode-video 格式 如有必要,将视频重新编码为另一种格式。语法和支持格式与 --remux-video 相同
--postprocessor-args 名称:参数 将这些参数传递给后处理器。指定后处理器/可执行文件名称和参数,用冒号 ":" 分隔,以将参数传递给指定的后处理器/可执行文件。支持的 PP:Merger, ModifyChapters, SplitChapters, ExtractAudio, VideoRemuxer, VideoConvertor, Metadata, EmbedSubtitle, EmbedThumbnail, SubtitlesConvertor, ThumbnailsConvertor, FixupStretched, FixupM4a, FixupM3u8, FixupTimestamp 和 FixupDuration。支持的可执行文件:AtomicParsley, FFmpeg 和 FFprobe。也可以指定 "PP+EXE:ARGS" 以仅在指定后处理器使用该可执行文件时传递参数。此外,对于 ffmpeg/ffprobe,可以在前缀后附加 "_i"/"_o" 并可选择跟数字,以在指定输入/输出文件之前传递参数,例如 --ppa "Merger+ffmpeg_i1:-v quiet"。可多次使用以为不同后处理器提供不同参数。(别名:--ppa)
-k, --keep-video 后处理后保留中间视频文件在磁盘上
--no-keep-video 后处理后删除中间视频文件(默认)
--post-overwrites 覆盖后处理后的文件(默认)
--no-post-overwrites 不覆盖后处理后的文件
--embed-subs 将字幕嵌入视频(仅适用于 mp4、webm 和 mkv 视频)
--no-embed-subs 不嵌入字幕(默认)
--embed-thumbnail 将缩略图作为封面艺术嵌入视频
--no-embed-thumbnail 不嵌入缩略图(默认)
--embed-metadata 将元数据嵌入视频文件。如果存在,也嵌入章节/infojson,除非使用 --no-embed-chapters/--no-embed-info-json(别名:--add-metadata)
--no-embed-metadata 不向文件添加元数据(默认)(别名:--no-add-metadata)
--embed-chapters 将章节标记添加到视频文件(别名:--add-chapters)
--no-embed-chapters 不添加章节标记(默认)(别名:--no-add-chapters)
--embed-info-json 将 infojson 作为附件嵌入 mkv/mka 视频文件
--no-embed-info-json 不将 infojson 作为附件嵌入视频文件
--parse-metadata [时机:]来源:目标 从其他字段解析额外元数据,如标题/艺术家;详情见“修改元数据”。“WHEN”支持的值与 --use-postprocessor 相同(默认:pre_process)
--replace-in-metadata [时机:]字段 正则表达式 替换
使用给定正则表达式替换元数据字段中的文本。可多次使用。“WHEN”支持的值与 --use-postprocessor 相同(默认:pre_process)
--xattrs 将元数据写入视频文件的 xattrs(使用 Dublin Core 和 XDG 标准)
--concat-playlist 策略 连接播放列表中的视频。可选值:"never"、"always" 或 "multi_video"(默认;仅当视频构成单个节目时)。所有视频文件必须具有相同的编解码器和流数量才能连接。前缀 "pl_video:" 可用于 "--paths" 和 "--output" 以设置连接文件的输出文件名。详情见“输出模板”
--fixup 策略 自动纠正文件的已知问题。可选值:never(不操作)、warn(仅发出警告)、detect_or_warn(默认;如果可以则修复,否则警告)、force(即使文件已存在也尝试修复)
--ffmpeg-location 路径 ffmpeg 二进制文件的位置;可以是二进制文件的路径或其所在目录
--exec [时机:]命令 执行命令,可选择以执行时机为前缀,用 ":" 分隔。“WHEN”支持的值与 --use-postprocessor 相同(默认:after_move)。可以使用与输出模板相同的语法将任何字段作为参数传递给命令;但出于安全原因,仅允许的转换为:"i"/"d"(有符号整数十进制)、"f"(浮点十进制)和 "q"(shell 引用)。如果未传递任何字段,则在命令末尾附加 %(filepath,_filename|)q。此选项可多次使用
--no-exec 删除任何先前定义的 --exec
--convert-subs 格式 将字幕转换为另一种格式(当前支持:ass, lrc, srt, vtt)。使用 "--convert-subs none" 禁用转换(默认)(别名:--convert-subtitles)
--convert-thumbnails 格式 将缩略图转换为另一种格式(当前支持:jpg, png, webp)。可以使用与 "--remux-video" 类似的语法指定多个规则。使用 "--convert-thumbnails none" 禁用转换(默认)
--split-chapters 根据内部章节将视频拆分为多个文件。前缀 "chapter:" 可用于 "--paths" 和 "--output" 以设置拆分文件的输出文件名。详情见“输出模板”
--no-split-chapters 不根据章节拆分视频(默认)
--remove-chapters 正则表达式 删除标题与给定正则表达式匹配的章节。语法与 --download-sections 相同。此选项可多次使用
--no-remove-chapters 不从文件中删除任何章节(默认)
--force-keyframes-at-cuts 在下载/拆分/删除部分时强制关键帧位于剪切点。这很慢,因为需要重新编码,但生成的视频在剪切点周围的伪影可能更少
--no-force-keyframes-at-cuts 在剪切/拆分时不在章节周围强制关键帧(默认)
--use-postprocessor 名称[:参数] 要启用的插件后处理器的(区分大小写)名称,以及(可选)传递给它的参数,用冒号 ":" 分隔。参数是以分号 ";" 分隔的 NAME=VALUE 列表。"when" 参数决定后处理器何时调用。可以是 "pre_process"(视频提取后)、"after_filter"(视频通过筛选后)、"video"(--format 之后;--print/--output 之前)、"before_dl"(每个视频下载前)、"post_process"(每个视频下载后;默认)、"after_move"(将视频文件移动到最终位置后)、"after_video"(下载并处理完视频的所有格式后)或 "playlist"(播放列表结束时)。此选项可多次使用以添加不同的后处理器
SponsorBlock 选项:
使用 SponsorBlock API(https://sponsor.ajay.app)为下载的 YouTube 视频创建章节条目或移除各种片段(赞助商、引言等)
--sponsorblock-mark 类别 要为哪些 SponsorBlock 类别创建章节,用逗号分隔。可用类别:sponsor, intro, outro, selfpromo, preview, filler, interaction, music_offtopic, hook, poi_highlight, chapter, all 和 default(=all)。可以在类别前加 "-" 以排除它。类别描述见 [1]。例如 --sponsorblock-mark all,-preview [1] https://wiki.sponsor.ajay.app/w/Segment_Categories
--sponsorblock-remove 类别 要从视频文件中移除的 SponsorBlock 类别,用逗号分隔。如果类别同时出现在 mark 和 remove 中,remove 优先。语法和可用类别与 --sponsorblock-mark 相同,但 "default" 指 "all,-filler",且 poi_highlight、chapter 不可用
--sponsorblock-chapter-title 模板 由 --sponsorblock-mark 创建的 SponsorBlock 章节标题的输出模板。可用字段仅为 start_time, end_time, category, categories, name, category_names。默认为 "[SponsorBlock]: %(category_names)l"
--no-sponsorblock 禁用 --sponsorblock-mark 和 --sponsorblock-remove 两者
--sponsorblock-api URL SponsorBlock API 位置,默认为 https://sponsor.ajay.app
提取器选项:
--extractor-retries 重试次数 已知提取器错误的重试次数(默认为 3),或 "infinite"
--allow-dynamic-mpd 处理动态 DASH 清单(默认)(别名:--no-ignore-dynamic-mpd)
--ignore-dynamic-mpd 不处理动态 DASH 清单(别名:--no-allow-dynamic-mpd)
--hls-split-discontinuity 在广告插播等不连续点将 HLS 播放列表拆分为不同格式
--no-hls-split-discontinuity 不在广告插播等不连续点将 HLS 播放列表拆分为不同格式(默认)
--extractor-args IE_KEY:参数 将 ARGS 参数传递给 IE_KEY 提取器。详情见“提取器参数”。可多次使用以为不同提取器提供参数
预设别名:
为方便易用而预定义的别名。注意 yt-dlp 的未来版本可能会添加或调整预设,但现有预设名称不会更改或删除
-t mp3 -f 'ba[acodec^=mp3]/ba/b' -x --audio-format mp3
-t aac -f 'ba[acodec^=aac]/ba[acodec^=mp4a.40.]/ba/b' -x --audio-format aac
-t mp4 --merge-output-format mp4 --remux-video mp4 -S vcodec:h264,lang,quality,res,fps,hdr:12,acodec:aac
-t mkv --merge-output-format mkv --remux-video mkv
-t sleep --sleep-subtitles 5 --sleep-requests 0.75 --sleep-interval 10 --max-sleep-interval 20
完整文档请参阅 https://github.com/yt-dlp/yt-dlp#readme