yt-dlp使用
更新: 12/21/2024 字数: 0 字 时长: 0 分钟
免责声明和警告
yt-dlp 是一个强大的工具,可以从各种网站下载视频和音频。然而,需要注意的是,yt-dlp 不应该用于下载
非法
或盗版
内容。未经版权持有人许可下载受版权保护
的材料是违法的,可能会带来严重的法律后果。
- 如果你不确定某个视频或音频文件是否受版权保护,最好谨慎处理,不要下载它。在网上有许多合法的、受版权保护的免费内容来源。
与youtube-dl等区别
yt-dlp
的默认选项与 youtube-dl
或youtube-dlc
不同。以下是其中一些主要区别:
- 与
youtube-dl
和 youtube-dlc 不同,yt-dlp
仅支持Python 3.7
及以上。相比之下,youtube-dl
支持 Python 2.6+ 和 3.2+。 - 尽管
ffmpeg
是处理媒体的推荐选项,但在yt-dlp
中不支持将avconv
作为ffmpeg
的替代选项。 - yt-dlp 在配置文件存储方面与 youtube-dl 稍有不同。
- yt-dlp 中的
-F
输出格式已更改。 - 选项
--auto-number (-A)
、--title (-t)
和--literal (-l)
已被弃用,不再按预期工作。 - 默认情况下,yt-dlp 启用 –no-abort-on-error。
- yt-dlp 的默认输出模板与
y
outube-dl 不同。yt-dlp 默认使用%(title)s [%(id)s].%(ext)s
,而 youtube-dl 使用%(title)s-%(id)s.%(ext)s
。 - yt-dlp 的默认格式排序优先考虑更高分辨率和更好的编解码器,而不是更高的比特率,这与 youtube-dl 不同。
- yt-dlp 中默认的格式选择器是
bv*+ba/b
,意味着首选包含视频和音频的格式,而不是仅视频格式。 - 与 youtube-dlc 不同,yt-dlp 默认情况下不允许将多个音频/视频流合并为一个文件(以避免与
-f bv*+ba
冲突)。 - 使用 yt-dlp 时,对于播放列表,还会写入元数据文件,例如缩略图、描述或 infojson。
- yt-dlp 会为 YouTube 播放列表列出不可用的视频。
- yt-dlp 提取的 YouTube 上传日期为协调世界时 (UTC) 时间。
- 默认情况下,yt-dlp 在 infojson 中排除了一些内部元数据(例如文件名)。
- yt-dlp 中文件名中无效字符的清理方法不同,通常被认为更智能,与 youtube-dl 不同。
- yt-dlp 尝试将外部下载器的输出解析为标准进度输出,目前已在 aria2c 中实现。若要保留下载器的原始输出,请使用
--compat-options no-external-downloader-progress
。
在Windows上安装yt-dlp
直接保存
yt-dlp.exe
文件,并添加保存文件的路径到系统环境变量
中例如,保存到
c:\bin\yt-dlp.exe
,将c:\bin\
添加到系统环境变量
中
更新 yt-dlp
要使 yt-dlp 保持最新,只需运行以下命令:
yt-dlp.exe -U
在Linux上安装yt-dlp
方法一: 使用 Curl
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
方法二: 使用 wget
sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
方法三: 使用 aria2c
sudo aria2c https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp --dir /usr/local/bin -o yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
更新 yt-dlp
要使 yt-dlp 保持最新,只需运行以下命令:
sudo yt-dlp -U
Alpine Linux
doas apk -U add yt-dlp
Arch Linux, EndeavourOS, Manjaro Linux
sudo pacman -S yt-dlp
Debian, Ubuntu, Linux Mint, Pop!_OS
sudo apt install yt-dlp
Fedora
sudo dnf install yt-dlp
openSUSE
$ sudo zypper install yt-dlp
需要注意的是官方存储库中提供的版本有时可能会稍微过时。为了获取最新的功能和更新,通常建议使用官方推荐的方法,包括curl
或wget
,如前文所示。这些方法可确保您获得最新版本的 yt-dlp
。
在 Android 上安装 yt-dlp
下载Termux
我们可以通过 Termux 在 Android 设备上安装 yt-dlp
。
首先,在您的 Android 手机上安装 Termux。
然后,打开 Termux 应用程序并运行以下命令,授予 Termux 访问手机存储空间的权限,从而允许下载文件。
termux-setup-storage
更新 Termux 中的所有软件包以确保您拥有最新版本。
pkg update && pkg upgrade
安装必要的依赖项
安装必要的依赖项,包括 Python、libexpat 和 OpenSSL。
pkg install libexpat openssl python
安装 yt-dlp 并确保其是最新的。 Pip 是 Python 的包管理器,将为您处理安装。
pip install -U yt-dlp
如果您打算进行相关的视频操作,建议安装 FFmpeg。此步骤是可选的,但对于视频相关任务很有用。
pkg install ffmpeg
要使 yt-dlp 保持最新,请定期运行以下命令:
pip install -U yt-dlp
更新 yt-dlp
如果您使用curl
或wget
或aria2c
手动安装了yt-dlp
,则可以通过执行以下命令来更新它:
sudo yt-dlp -U
对于使用 pip
安装 yt-dlp
的用户,请使用以下命令进行更新:
python3 -m pip install -U yt-dlp
如果您使用发行版的包管理器安装 yt-dlp,请根据系统的包管理器更新 yt-dlp
。例如,在 Arch Linux 上,使用以下命令更新yt-dlp
:
sudo pacman -Syu
在 Debian 和 Ubuntu 系统上,您可以使用以下命令更新 yt-dlp:
sudo apt update
保持 yt-dlp 最新可确保您能够访问最新的功能和错误修复。
基本命令
下载视频
yt-dlp <video_url>
下载播放列表
yt-dlp <playlist_url>
下载到特定位置
yt-dlp -o '~/Downloads/' https://www.youtube.com/watch?v=t5b20oLaIaw
并行下载多个视频
在某些情况下,您可能需要从网站或任何其他来源下载多个视频。在这种情况下,您有几个方便的选择:
选项 1:命令中包含多个 URL 进行下载
您可以通过在命令中指定 URL 来下载多个视频,并用空格分隔,如下所示:
yt-dlp <url1> <url2>
此方法允许您一次性获取多个视频,只需列出它们的 URL。
选项 2:使用文本文件
您可以创建一个包含要下载的所有视频 URL 的文本文件,然后将此文件作为参数传递给 yt-dlp:
yt-dlp -a url.txt
通过使用此命令,yt-dlp 将自动下载 url.txt 文件中列出的所有视频。这种方法在处理大量视频时特别方便,因为它可以为您简化流程。
从视频下载纯音频
- 要将视频下载为音频,即从视频中提取音频,请使用
-x
标志,如下所示。
yt-dlp -x https://www.youtube.com/watch?v=t5b20oLaIaw
您还可以使用 -x --audio-format
标志指定输出音频格式。
yt-dlp -x --audio-format mp3 https://www.youtube.com/watch?v=t5b20oLaIaw
下载最佳品质
yt-dlp -f best <video_url>
下载具体格式
yt-dlp -f <format_id> <video_url>
下载最佳音频
yt-dlp -f bestaudio <video_url>
常用命令
查看视频信息
yt-dlp -F https://www.youtube.com/watch?v=t5b20oLaIaw
限制下载速度
yt-dlp -r 50K <video_url>
恢复下载
yt-dlp -c <video_url>
按日期过滤
yt-dlp --date 20230101 <video_url>
按年龄限制过滤
yt-dlp --age-limit 18 <video_url>
按标题过滤
yt-dlp --match-title "keyword" <playlist_url>
按格式代码下载
yt-dlp -f 22,17,18 <video_url>
按文件扩展名下载
$ yt-dlp --format mp4 <video_url>
设置大小限制
$ yt-dlp --min-filesize 100M <playlist_url>
从播放列表下载特定视频
yt-dlp --playlist-items 1,3,5 <playlist_url>
下载字幕
显示视频所有字幕
yt-dlp --list-subs [视频地址]
下载srt字幕
yt-dlp --skip-download --write-subs --write-auto-subs --sub-lang en --sub-format ttml --convert-subs srt [视频地址]
yt-dlp 故障排除
偶尔可能遇到的常见错误。大多数这些问题可以通过将 yt-dlp 更新到最新版本来解决。但是,即使使用更新版本的 yt-dlp,也可能存在一些错误,例如下面列出的错误:
错误:“Sign in to confirm you’re not a bot. This helps protect our community”
- 使用
edge
或chrome
等chromium
内核的浏览器,安装扩展: Edge应用商店 | Chrome 应用商店 - 打开
youtube
网页,并登录
- 导出
cookies.txt
yt-dlp --cookies=cookies.txt [视频地址]
修复”Unable to download video data: HTTP Error 403: Forbidden”错误
从 YouTube
下载视频时,有时会出现如下错误。
ERROR: unable to download video data: HTTP Error 403: Forbidden
要修复此错误,只需使用以下命令清除 yt-dlp 缓存即可:
$ yt-dlp --rm-cache-dir
错误: Unable to Open for Writing: [Errno 36] File Name Too Long
如果您在尝试下载名称过长
的 YouTube 视频时遇到此错误,请按照以下步骤解决该问题:
您可能会看到类似于此的错误消息:
[youtube] _XEgknKEBws: Downloading webpage
ERROR: unable to open for writing: [Errno 36] File name too long: '\xe0\xae\xa8\xe0\xaf\x8b
[...]
\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xae\xe0\xaf\x8d-_XEgknKEBws.f136.mp4.part
要解决此错误,只需使用“-o”标志下载您选择的较短名称的视频即可。例如:
yt-dlp -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' -o video.mp4 <URL>
在此命令中,-o
标志允许您为下载的视频指定自定义名称,确保其文件名较短。
下载视频教程
查看视频信息
- 在下载视频之前获取视频的文件大小,请使用
-F
标志
yt-dlp -F https://www.youtube.com/watch?v=t5b20oLaIaw
下载特定质量和格式视频
默认情况下,yt-dlp 下载
最佳质量
视频。YouTube
提供以下视频下载质量选项:best
: 这将选择可用的最高质量格式,包括视频和音频。worst
: 它为视频和音频选择最低质量的格式。bestvideo
: 此选项选择最佳质量的纯视频格式(例如,DASH 视频)。worstvideo
: 与bestvideo
类似,但选择最低质量
的纯视频格式。bestaudio
: 这将选择最佳质量的纯音频格式。worstaudio
: 与bestaudio
类似,但选择最低质量
的纯音频格式。
下载最佳质量纯音频
yt-dlp -f bestaudio <URL>
下载最低质量纯视频
yt-dlp -f worstvideo <URL>
组合下载不同格式
- 此命令下载最佳质量的纯视频和纯音频格式,并使用
ffmpeg
合并它们。确保您的系统上安装了ffmpeg
。
yt-dlp -f bestvideo+bestaudio <URL>
- 如果您不想合并音频和视频,请将加号 (+) 运算符替换为逗号 (,)
- 此命令会分别下载最佳质量的视频和音频,从而生成两个文件。
- 在这种情况下,建议使用输出模板(-o 选项),因为 bestvideo 和 bestaudio 可能具有相同的文件名。
yt-dlp -f 'bestvideo,bestaudio' https://www.youtube.com/watch?v=t5b20oLaIaw -o '%(title)s.f%(format_id)s.%(ext)s'
指定分辨率下载视频
yt-dlp -f "best[height<=480]" <URL>
组合格式下载特定质量视频
yt-dlp -f 'bestvideo[height<=480]+bestaudio/best[height<=480]' <URL>
灵活地使用缩写的标志
- 使用
bv
代替bestvideo
。 - 同样,您可以使用
w
表示worst
, - 使用
wv
表示worstvideo
- 使用
下载最佳的纯视频格式和最佳的纯音频格式或最佳组合格式(如果纯视频不可用)
yt-dlp -f "bv+ba/b" https://www.youtube.com/watch?v=t5b20oLaIaw
- 下载可用的最差视频质量:
yt-dlp -f "wv*+wa/w" https://www.youtube.com/watch?v=t5b20oLaIaw
交互式下载视频
- 使用
-f –
标志以交互方式选择每个视频的格式。 - 这将提示您提供可用格式的列表,以及它们的 ID、扩展名、分辨率、文件大小和音频/视频编解码器。
- 要下载特定格式,请键入文件的 ID,然后按 Enter。
- 下载默认选择,请按 Enter 键而不键入任何内容。
- 要
退出
交互式格式选择提示,请按Ctrl+C
使用格式 ID 下载视频
- 如果想下载同一视频的多种格式,可以使用逗号作为分隔符。
- 例如,使用
-f 22,17,18
将下载所有这三种格式(前提是它们可用)。 - 数字
22、17和18
对应于各个视频格式
的ID。这些 ID 在 yt-dlp 的输出中称为“格式代码”。可以使用以下任一命令列出可用格式来发现这些 ID:
yt-dlp --list-formats https://www.youtube.com/watch?v=t5b20oLaIaw
# 或者
yt-dlp -F https://www.youtube.com/watch?v=t5b20oLaIaw
- 第一列中列出了可用格式的 ID。最佳质量格式通常在末尾找到,通常带有 247 这样的 ID。
- 因此,要下载最佳质量格式,可以使用以下命令:
yt-dlp -f 247 https://www.youtube.com/watch?v=t5b20oLaIaw
- 如果打算
下载多个
视频,并且它们不共享
相同的可用格式,可以使用斜杠
指定优先顺序。 - 需要注意的是,左侧的格式优先。例如,使用
-f 22/17/18
意味着它将尝试下载
格式 22(如果可用),然后尝试下载格式 17(如果格式 22 不可用),依此类推。 - 如果没有指定的格式可用,它会通知您没有找到合适的下载格式。请记住,
斜杠
是左关联的,这意味着在选择过程中优先考虑左侧的格式。
按文件扩展名下载视频
- 下载指定格式(例如 MP4)的视频
- 需要注意的是,
并非所有
视频都可以您所需的格式提供。在这种情况下,yt-dlp 将自动下载最佳可用格式。
yt-dlp --format mp4 https://www.youtube.com/watch?v=t5b20oLaIaw
# 或者
yt-dlp -f mp4 https://www.youtube.com/watch?v=t5b20oLaIaw
- 以下命令将下载
最佳质量
的 MP4 格式文件。如果给定视频的 MP4 格式不可用,它将下载最佳的替代格式
yt-dlp -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' https://www.youtube.com/watch?v=t5b20oLaIaw
- 使用自定义文件名保存这些文件
yt-dlp -f mp4 -o '%(title)s.f%(format_id)s.%(ext)s' https://www.youtube.com/watch?v=t5b20oLaIaw
设置视频下载的大小限制
- 从播放列表下载多个视频时,可能需要指定大小
范围内
的视频。例如,要确保不下载小于指定
大小(例如 100MB)的视频
yt-dlp --min-filesize 100M <playlist_url>
- 相反,如果希望
避免下载大于给定大小
的视频,您可以使用:
$ yt-dlp --max-filesize 100M <playlist_url>
您还可以选择组合格式选择运算符来下载特定大小的视频。例如,后续命令将下载最佳的纯视频格式,只要它不超过 100MB:
$ yt-dlp -f 'best[filesize<100M]' https://www.youtube.com/watch?v=t5b20oLaIaw
按日期下载视频
- 据
上传日期
过滤和下载视频或播放列表的功能,这在处理包含数百个视频的播放列表时非常有用
# 要下载在确切日期(例如 2023 年 9 月 30 日)上传的视频
$ yt-dlp --date 20230930 <URL>
# 要下载在特定日期或之前上传的视频:
$ yt-dlp --datebefore 20230930 <URL>
# 如果您想获取在特定日期或之后上传的视频:
$ yt-dlp --dateafter 20230930 <URL>
# 仅下载最近 6 个月内上传的视频:
$ yt-dlp --dateafter now-6months <URL>
# 要下载指定日期范围内的视频,例如2022年9月30日到2023年9月30日,请使用以下命令:
$ yt-dlp --dateafter 20220930 --datebefore 20230930 <URL>
从播放列表下载特定视频
- 例如,要从播放列表下载
20 个
视频,请执行以下命令:
$ yt-dlp --playlist-items 20 <playlist_url>
- 同时下载视频并将其转换为其他格式。
- 在以下示例中,该命令将从播放列表中下载第一个视频并将其转换为
.mp3
格式:
$ yt-dlp --playlist-items 1 -x --audio-format mp3 <playlist_url>
- 同样,要下载多个
随机
视频,只需指定播放列表中的视频索引,以逗号
分隔,如下所示:
$ yt-dlp --playlist-items 2,3,7,10 <playlist_url>
您还可以定义要下载的视频范围
。要下载从特定视频开始的视频播放列表,例如第 10 个
视频,一直持续到最后:
$ yt-dlp --playlist-start 10 <playlist_url>
要仅下载播放列表中第二到第五位置
的视频,请使用:
$ yt-dlp --playlist-start 2 --playlist-end 5 <playlist_url>
设置下载速度
- 要控制下载速度,您可以使用
-r
选项。例如,以下命令将速度限制为每秒 50 KB:
yt-dlp -r 50K <URL>
- 请注意,速度以每秒字节数指定。
恢复下载
- Yt-dlp 通常会自动从之前中断的位置恢复下载。但是,如果由于任何原因它没有恢复下载,您可以使用
-c
或--continue
标志强制继续下载部分完成的文件:
yt-dlp -c <URL>
此标志可确保下载从中断处继续,即使之前已中断。
将视频直接流式传输到媒体播放器
要将媒体直接流式传输到媒体播放器,您需要使用
-o -
选项指示 yt-dlp 流式传输到标准输出。此外,您的媒体播放器应该能够从标准输入读取。您可以通过将 yt-dlp 的输出通过管道传输到媒体播放器来实现此目的。例如,要流式传输到
VLC
,您可以使用以下命令:
yt-dlp -o - "https://www.youtube.com/watch?v=t5b20oLaIaw" | vlc -
如果您安装了 ffmpeg,则在流式传输到标准输出时可以使用“-o - --downloader ffmpeg -f "bv*+ba/b"
选项以获得最佳可用质量。