yt-dlp 是一个功能丰富的命令行音频/视频下载器,支持数千个站点。该项目是 youtube-dl 的一个分支,基于现在不活动的 youtube-dlc。
安装
详细说明
发布文件
更新
依赖关系
编译
用途和选项
一般选项
网络选项
地理限制
视频选择
下载选项
文件系统选项
缩略图选项
互联网快捷方式选项
冗长和模拟选项
解决方法
视频格式选项
字幕选项
身份验证选项
后处理选项
赞助块选项
提取器选项
配置
配置文件编码
使用 netrc 进行身份验证
关于环境变量的注意事项
输出模板
输出模板示例
格式选择
过滤格式
排序格式
格式选择示例
修改元数据
修改元数据示例
提取器参数
插件
安装插件
开发插件
嵌入YT-DLP
嵌入示例
YouTube-DL 的变更
新功能
默认行为的差异
已弃用的选项
贡献
提出问题
开发者说明
维基百科
常问问题
您可以使用二进制文件、pip 或使用第三方包管理器安装 yt-dlp。请参阅 wiki 了解详细说明
文件 | 描述 |
---|---|
yt-dlp | 独立于平台的 zipimport 二进制文件。需要Python(推荐用于Linux/BSD ) |
yt-dlp.exe | Windows (Win8+) 独立 x64 二进制文件(推荐用于Windows ) |
yt-dlp_macos | 通用 MacOS (10.15+) 独立可执行文件(推荐用于MacOS ) |
文件 | 描述 |
---|---|
yt-dlp_x86.exe | Windows (Win8+) 独立 x86(32 位)二进制文件 |
yt-dlp_linux | Linux 独立 x64 二进制文件 |
yt-dlp_linux_armv7l | Linux 独立armv7l(32位)二进制文件 |
yt-dlp_linux_aarch64 | Linux 独立 aarch64(64 位)二进制文件 |
yt-dlp_win.zip | 未打包的 Windows 可执行文件(无自动更新) |
yt-dlp_macos.zip | 未打包的 MacOS (10.15+) 可执行文件(无自动更新) |
yt-dlp_macos_legacy | MacOS (10.9+) 独立 x64 可执行文件 |
文件 | 描述 |
---|---|
yt-dlp.tar.gz | 源代码包 |
SHA2-512SUMS | GNU 风格 SHA512 求和 |
SHA2-512SUMS.sig | SHA512 和的 GPG 签名文件 |
SHA2-256SUMS | GNU 风格 SHA256 求和 |
SHA2-256SUMS.sig | SHA256 和的 GPG 签名文件 |
可用于验证 GPG 签名的公钥可在此处找到示例用法:
curl -L https://github.com/yt-dlp/yt-dlp/raw/master/public.key | gpg --import gpg --verify SHA2-256SUMS.sig SHA2-256SUMS gpg --verify SHA2-512SUMS.sig SHA2-512SUMS
注意:手册页、shell 完成(自动完成)文件等可在源 tarball 中找到
如果您使用的是发布二进制文件,则可以使用yt-dlp -U
进行更新
如果您使用 pip 安装,只需重新运行用于安装该程序的相同命令
对于其他第三方包管理器,请参阅 wiki 或参考他们的文档
目前二进制文件有三个发布渠道: stable
、 nightly
和master
。
stable
是默认频道,其许多更改已经过nightly
和master
频道的用户测试。
该nightly
频道计划每天在 UTC 午夜左右发布版本,以获取该项目的新补丁和更改的快照。这是向 yt-dlp 普通用户推荐的频道。 nightly
版本可从 yt-dlp/yt-dlp-nightly-builds 获取,或者作为yt-dlp
PyPI 包的开发版本(可以使用 pip 的--pre
标志安装)。
master
通道的功能是在每次推送到主分支后构建的版本,这些版本将具有最新的修复和添加,但也可能更容易出现回归。它们可从 yt-dlp/yt-dlp-master-builds 获取。
当使用--update
/ -U
时,发布二进制文件将仅更新到其当前通道。 --update-to CHANNEL
可用于在有新版本可用时切换到不同的频道。 --update-to [CHANNEL@]TAG
还可用于从频道升级或降级到特定标签。
您还可以使用--update-to
(
) 更新到完全不同的存储库上的通道。不过,请注意您要更新到的存储库,不会对来自不同存储库的二进制文件进行验证。
用法示例:
yt-dlp --update-to master
切换到master
通道并更新到其最新版本
yt-dlp --update-to [email protected]
升级/降级以发布到stable
频道标签2023.07.06
yt-dlp --update-to 2023.10.07
升级/降级到标签2023.10.07
(如果当前频道存在)
yt-dlp --update-to example/[email protected]
从example/yt-dlp
存储库升级/降级到版本,标签2023.09.24
重要提示:任何遇到stable
版本问题的用户都应在提交错误报告之前安装或更新到nightly
版本:
# To update to nightly from stable executable/binary: yt-dlp --update-to nightly # To install nightly with pip: python3 -m pip install -U --pre "yt-dlp[default]"
支持 Python 版本 3.9+ (CPython) 和 3.10+ (PyPy)。其他版本和实现可能会也可能不会正常工作。
虽然所有其他依赖项都是可选的,但强烈建议使用ffmpeg
和ffprobe
ffmpeg和ffprobe - 合并单独的视频和音频文件以及各种后处理任务所需的。许可证取决于构建
ffmpeg 中存在一些错误,当与 yt-dlp 一起使用时会导致各种问题。由于 ffmpeg 是一个非常重要的依赖项,因此我们在 yt-dlp/FFmpeg-Builds 上为其中一些问题提供了带有补丁的自定义构建。有关这些构建解决的具体问题的详细信息,请参阅自述文件
重要提示:您需要的是 ffmpeg二进制文件,而不是同名的 Python 包
certifi * - 提供 Mozilla 的根证书包。根据 MPLv2 获得许可
brotli * 或brotlicffi - Brotli 内容编码支持。均获得 MIT 1 2许可
websockets * - 用于通过 websocket 下载。根据 BSD-3 条款获得许可
请求* - HTTP 库。用于 HTTPS 代理和持久连接支持。已获得 Apache-2.0 许可
以下提供了对模拟浏览器请求的支持。对于某些使用 TLS 指纹识别的网站来说,这可能是必需的。
curl_cffi (推荐) - 用于curl 模拟的Python 绑定。为 Chrome、Edge 和 Safari 提供模拟目标。获得麻省理工学院许可
可以与curl-cffi
组一起安装,例如pip install "yt-dlp[default,curl-cffi]"
目前包含在yt-dlp.exe
、 yt-dlp_linux
和yt-dlp_macos
版本中
诱变剂* - 对于某些格式的--embed-thumbnail
。根据 GPLv2+ 许可
AtomicParsley - 当mutagen
/ ffmpeg
不能时,用于mp4
/ m4a
文件中的--embed-thumbnail
。根据 GPLv2+ 许可
xattr 、 pyxattr或setfattr - 用于在Mac和BSD上写入 xattr 元数据 ( --xattr
)。分别获得 MIT、LGPL2.1 和 GPLv2+ 许可
pycryptodomex * - 用于解密 AES-128 HLS 流和各种其他数据。根据 BSD-2 条款获得许可
phantomjs - 用于需要运行 javascript 的提取器。根据 BSD-3 条款获得许可
Secretstorage * - 用于--cookies-from-browser
在Linux上解密基于Chromium的浏览器的 cookie 时访问Gnome密钥环。根据 BSD-3 条款获得许可
您想要与--downloader
一起使用的任何外部下载器
avconv和avprobe - 现已弃用ffmpeg 的替代品。许可证取决于构建
sponskrub - 用于使用现已弃用的sponskrub 选项。根据 GPLv3+ 许可
rtmpdump - 用于下载rtmp
流。 ffmpeg 可以与--downloader ffmpeg
一起使用。根据 GPLv2+ 许可
mplayer或mpv - 用于下载rstp
/ mms
流。 ffmpeg 可以与--downloader ffmpeg
一起使用。根据 GPLv2+ 许可
要使用或重新分发依赖项,您必须同意其各自的许可条款。
独立版本的二进制文件是使用 Python 解释器构建的,并且包含标有*的包。
如果您没有尝试执行的任务所需的依赖项,yt-dlp 将向您发出警告。所有当前可用的依赖项都在--verbose
输出的顶部可见
要构建独立的可执行文件,您必须拥有 Python 和pyinstaller
(如果需要,还可以加上 yt-dlp 的任何可选依赖项)。可执行文件将针对与所使用的 Python 相同的 CPU 架构而构建。
您可以运行以下命令:
python3 devscripts/install_deps.py --include pyinstaller python3 devscripts/make_lazy_extractors.py python3 -m bundle.pyinstaller
在某些系统上,您可能需要使用py
或python
而不是python3
。
python -m bundle.pyinstaller
接受可以传递给pyinstaller
任何参数,例如--onefile/-F
或--onedir/-D
,此处有进一步记录。
注意:4.4 以下的 Pyinstaller 版本不支持在不使用虚拟环境的情况下从 Windows 商店安装 Python。
重要提示:官方不支持直接运行pyinstaller
而不是使用python -m bundle.pyinstaller
。这可能会或可能不会正常工作。
您将需要构建工具python
(3.9+)、 zip
、 make
(GNU)、 pandoc
* 和pytest
*。
安装这些后,只需运行make
即可。
您还可以运行make yt-dlp
来仅编译二进制文件,而不更新任何其他文件。 (不需要标有*的构建工具)
devscripts/install_deps.py
- 安装 yt-dlp 的依赖项。
devscripts/update-version.py
- 根据当前日期更新版本号。
devscripts/set-variant.py
- 设置可执行文件的构建变体。
devscripts/make_changelog.py
- 使用短提交消息创建 markdown 更改日志并更新CONTRIBUTORS
文件。
devscripts/make_lazy_extractors.py
- 创建惰性提取器。在构建二进制文件(任何变体)之前运行此命令将提高其启动性能。将环境变量YTDLP_NO_LAZY_EXTRACTORS
设置为非空值以强制禁用延迟提取器加载。
注意:请参阅他们的--help
以获取更多信息。
如果您在 GitHub 上分叉该项目,则可以运行分叉的构建工作流程以自动将所选版本构建为工件。或者,您可以运行发布工作流程或启用夜间工作流程来创建完整(预)版本。
yt-dlp [OPTIONS] [--] URL [URL...]
Ctrl+F
是你的朋友 :D
-h, --help Print this help text and exit --version Print program version and exit -U, --update Update this program to the latest version --no-update Do not check for updates (default) --update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "stable" and "latest" respectively if omitted; See "UPDATE" for details. Supported channels: stable, nightly, master -i, --ignore-errors Ignore download and postprocessing errors. The download will be considered successful even if the postprocessing fails --no-abort-on-error Continue with next video on download errors; e.g. to skip unavailable videos in a playlist (default) --abort-on-error Abort downloading of further videos if an error occurs (Alias: --no-ignore-errors) --dump-user-agent Display the current user-agent and exit --list-extractors List all supported extractors and exit --extractor-descriptions Output descriptions of all supported extractors and exit --use-extractors NAMES Extractor names to use separated by commas. You can also use regexes, "all", "default" and "end" (end URL matching); e.g. --ies "holodex.*,end,youtube". Prefix the name with a "-" to exclude it, e.g. --ies default,-generic. Use --list-extractors for a list of extractor names. (Alias: --ies) --default-search PREFIX Use this prefix for unqualified URLs. E.g. "gvsearch2:python" downloads two videos from google videos for the search term "python". Use the value "auto" to let yt-dlp guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching --ignore-config Don't load any more configuration files except those given to --config-locations. For backward compatibility, if this option is found inside the system configuration file, the user configuration is not loaded. (Alias: --no-config) --no-config-locations Do not load any custom configuration files (default). When given inside a configuration file, ignore all previous --config-locations defined in the current file --config-locations PATH Location of the main configuration file; either the path to the config or its containing directory ("-" for stdin). Can be used multiple times and inside other configuration files --plugin-dirs PATH Path to an additional directory to search for plugins. This option can be used multiple times to add multiple directories. Note that this currently only works for extractor plugins; postprocessor plugins can only be loaded from the default plugin directories --flat-playlist Do not extract the videos of a playlist, only list them --no-flat-playlist Fully extract the videos of a playlist (default) --live-from-start Download livestreams from the start. Currently only supported for YouTube (Experimental) --no-live-from-start Download livestreams from the current time (default) --wait-for-video MIN[-MAX] Wait for scheduled streams to become available. Pass the minimum number of seconds (or range) to wait between retries --no-wait-for-video Do not wait for scheduled streams (default) --mark-watched Mark videos watched (even with --simulate) --no-mark-watched Do not mark videos watched (default) --color [STREAM:]POLICY Whether to emit color codes in output, optionally prefixed by the STREAM (stdout or stderr) to apply the setting to. Can be one of "always", "auto" (default), "never", or "no_color" (use non color terminal sequences). Use "auto-tty" or "no_color-tty" to decide based on terminal support only. Can be used multiple times --compat-options OPTS Options that can help keep compatibility with youtube-dl or youtube-dlc configurations by reverting some of the changes made in yt-dlp. See "Differences in default behavior" for details --alias ALIASES OPTIONS Create aliases for an option string. Unless an alias starts with a dash "-", it is prefixed with "--". Arguments are parsed according to the Python string formatting mini-language. E.g. --alias get-audio,-X "-S=aext:{0},abr -x --audio-format {0}" creates options "--get-audio" and "-X" that takes an argument (ARG0) and expands to "-S=aext:ARG0,abr -x --audio-format ARG0". All defined aliases are listed in the --help output. Alias options can trigger more aliases; so be careful to avoid defining recursive options. As a safety measure, each alias may be triggered a maximum of 100 times. This option can be used multiple times
--proxy URL Use the specified HTTP/HTTPS/SOCKS proxy. To enable SOCKS proxy, specify a proper scheme, e.g. socks5://user:[email protected]:1080/. Pass in an empty string (--proxy "") for direct connection --socket-timeout SECONDS Time to wait before giving up, in seconds --source-address IP Client-side IP address to bind to --impersonate CLIENT[:OS] Client to impersonate for requests. E.g. chrome, chrome-110, chrome:windows-10. Pass --impersonate="" to impersonate any client. Note that forcing impersonation for all requests may have a detrimental impact on download speed and stability --list-impersonate-targets List available clients to impersonate. -4, --force-ipv4 Make all connections via IPv4 -6, --force-ipv6 Make all connections via IPv6 --enable-file-urls Enable file:// URLs. This is disabled by default for security reasons.
--geo-verification-proxy URL Use this proxy to verify the IP address for some geo-restricted sites. The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading --xff VALUE How to fake X-Forwarded-For HTTP header to try bypassing geographic restriction. One of "default" (only when known to be useful), "never", an IP block in CIDR notation, or a two-letter ISO 3166-2 country code
-I, --playlist-items ITEM_SPEC Comma separated playlist_index of the items to download. You can specify a range using "[START]:[STOP][:STEP]". For backward compatibility, START-STOP is also supported. Use negative indices to count from the right and negative STEP to download in reverse order. E.g. "-I 1:3,7,-5::2" used on a playlist of size 15 will download the items at index 1,2,3,7,11,13,15 --min-filesize SIZE Abort download if filesize is smaller than SIZE, e.g. 50k or 44.6M --max-filesize SIZE Abort download if filesize is larger than SIZE, e.g. 50k or 44.6M --date DATE Download only videos uploaded on this date. The date can be "YYYYMMDD" or in the format [now|today|yesterday][-N[day|week|month|year]]. E.g. "--date today-2weeks" downloads only videos uploaded on the same day two weeks ago --datebefore DATE Download only videos uploaded on or before this date. The date formats accepted are the same as --date --dateafter DATE Download only videos uploaded on or after this date. The date formats accepted are the same as --date --match-filters FILTER Generic video filter. Any "OUTPUT TEMPLATE" field can be compared with a number or a string using the operators defined in "Filtering Formats". You can also simply specify a field to match if the field is present, use "!field" to check if the field is not present, and "&" to check multiple conditions. Use a "" to escape "&" or quotes if needed. If used multiple times, the filter matches if at least one of the conditions is met. E.g. --match-filters !is_live --match-filters "like_count>?100 & description~='(?i)bcats & dogsb'" matches only videos that are not live OR those that have a like count more than 100 (or the like field is not available) and also has a description that contains the phrase "cats & dogs" (caseless). Use "--match-filters -" to interactively ask whether to download each video --no-match-filters Do not use any --match-filters (default) --break-match-filters FILTER Same as "--match-filters" but stops the download process when a video is rejected --no-break-match-filters Do not use any --break-match-filters (default) --no-playlist Download only the video, if the URL refers to a video and a playlist --yes-playlist Download the playlist, if the URL refers to a video and a playlist --age-limit YEARS Download only videos suitable for the given age --download-archive FILE Download only videos not listed in the archive file. Record the IDs of all downloaded videos in it --no-download-archive Do not use archive file (default) --max-downloads NUMBER Abort after downloading NUMBER files --break-on-existing Stop the download process when encountering a file that is in the archive --no-break-on-existing Do not stop the download process when encountering a file that is in the archive (default) --break-per-input Alters --max-downloads, --break-on-existing, --break-match-filters, and autonumber to reset per input URL --no-break-per-input --break-on-existing and similar options terminates the entire download queue --skip-playlist-after-errors N Number of allowed failures until the rest of the playlist is skipped
-N, --concurrent-fragments N Number of fragments of a dash/hlsnative video that should be downloaded concurrently (default is 1) -r,&n