yt-dlp 是一款开源的命令行工具,可以用于从各种视频和音频平台(如 YouTube、Bilibili、Vimeo、Facebook 等)下载视频、音频、字幕以及播放列表。它是 youtube-dl 的一个分支,提供了更高的性能和更多的功能。yt-dlp 支持更广泛的网站、格式、选项,并且修复了 youtube-dl 中的一些 bug。
主要特点如下所示:
- 高效的视频下载
- yt-dlp 能够快速、稳定地从网站下载视频或音频。
- 支持多种视频格式和音频格式的下载,并且支持自动选择最佳质量的下载。
- 支持多个平台
- 支持 YouTube、Bilibili、Vimeo、Facebook、Twitter、Instagram、Twitch、SoundCloud 等多个平台。
- 视频格式和质量选择
- 可以选择视频的格式、分辨率和质量,甚至是视频和音频流分开下载,然后使用 FFmpeg 合并。
- 支持下载视频或音频流,并且可以指定输出的文件格式(例如 MP4、MP3、WebM 等)。
- 播放列表和批量下载
- 支持从整个播放列表中下载视频,也支持批量下载多个视频链接。
- 字幕下载
- 支持下载和嵌入字幕,或将字幕提取为独立的文件。
- 自动化功能
- 可以通过脚本自动化下载任务,适合批量下载、定时下载等需求。
- 更多高级功能
- 支持代理设置,下载速度限制,自动重试等。
- 支持下载视频的不同部分(比如下载指定的时间段或单独的音频部分)。
下载
- 访问 yt-dlp GitHub Release 页面。
- 在页面中,向下滚动找到 "Assets" 部分。
- 以 Windows 系统为例,点击
yt-dlp.exe
文件链接进行下载。 - 下载完成后,将
yt-dlp.exe
文件放到一个合适的位置,例如E:\yt-dlp
。
环境变量配置
- 右键点击 "此电脑" 或 "我的电脑",选择 "属性"。
- 点击 "高级系统设置",然后选择 "环境变量"。
- 在 系统变量 中找到 Path,点击 编辑,然后 新增
yt-dlp.exe
文件所在的路径,如:E:\yt-dlp
。 - 点击 "确定" 保存设置。
打开终端,输入以下命令:
yt-dlp --version
如果显示 yt-dlp 的版本信息,则说明配置成功。
基本用法
下载视频
只需提供视频的 URL,yt-dlp
即可开始下载:
yt-dlp <视频链接>
如下所示:
上图框出的部分大致意思是:在使用 yt-dlp
下载视频时,想要下载的高质量格式(如 4K 超清或 1080P 60 帧)可能需要你成为某个网站的 付费会员。为了验证你的身份并获取这些格式,你需要提供 认证信息,例如通过 cookies 模拟登录状态。
具体而言,yt-dlp
提示你使用 --cookies-from-browser
或 --cookies
参数来提供浏览器中的 cookies,确保 yt-dlp
能识别你的登录状态,从而允许你下载这些付费视频。
解决方案如下:
使用
--cookies-from-browser
: 如果你使用的是支持的浏览器(如 Chrome 或 Firefox),可以通过yt-dlp
提供的命令从浏览器直接获取 cookies。yt-dlp
会自动获取你当前浏览器中的登录 cookies。 步骤:首先确保你已经登录到相关网站。
然后使用以下命令从浏览器获取 cookies:
bashyt-dlp --cookies-from-browser chrome <视频链接>
或者,如果你使用的是 Firefox:
bashyt-dlp --cookies-from-browser firefox <视频链接>
手动提取 cookies 如果你使用的是其他浏览器,或不想使用
--cookies-from-browser
,你可以借助浏览器插件 Get cookies.txt LOCALLY 导出浏览器所有 cookies 到一个cookies.txt
文件,然后通过--cookies
参数将其传递给yt-dlp
。bashyt-dlp --cookies "E:\yt-dlp\cookies.txt" <视频链接>
通过上述步骤,成功提供 cookies 后,你可以顺利下载高质量的视频。下载完成后的显示效果如下:
选择视频格式和质量
你可以使用 -f
参数来指定下载的视频格式、质量或分辨率。例如,选择最佳的视频和音频质量:
yt-dlp -f bestvideo+bestaudio <视频链接>
在这个命令中,-f bestvideo+bestaudio
表示 yt-dlp
会自动选择并下载最佳质量的视频流和音频流,确保你获得最高画质和音质。
在下载视频之前,建议使用 --list-formats
参数来列出所有可用的格式,这样你可以查看可选的分辨率、编码和文件大小等信息。命令如下:
yt-dlp --list-formats <视频链接>
运行该命令后,yt-dlp
会列出该视频的所有可用格式,包括不同分辨率的视频流和音频流的详细信息。每个格式的输出中包括:
- ID:格式的唯一标识符。
- EXT:文件扩展名(如
mp4
、m4a
)。 - RESOLUTION:视频分辨率(如
480x360
、1080p
、2880x2160
)。 - FPS:帧率(如
29 fps
、30 fps
、59 fps
)。 - FILESIZE:文件大小。
- VCODEC:视频编码格式。
- ACODEC:音频编码格式。
下载 1080p 视频和最佳音频: 假设你使用
--list-formats
查看可用格式后,发现 1080p 分辨率的视频格式 ID 为30116
,最佳音频格式 ID 为30280
。你可以使用以下命令下载:bashyt-dlp -f 30116+30280 <视频链接>
在这个例子中:
30116
是 1080p 分辨率的视频格式,适用于需要下载 1080p 视频的情况。30280
是最佳音频格式,通常选择m4a
格式的音频流。
下载 4K 视频和最佳音频: 如果该视频提供 4K 分辨率的视频(例如
2880x2160
),使用--list-formats
查找到对应格式 ID 后,选择视频格式(如30120
)和音频格式(如30280
):bashyt-dlp -f 30120+30280 <视频链接>
下载音频
如果只需要下载音频(例如 MP3 格式),可以使用 -x
参数:
yt-dlp -x --audio-format mp3 https://www.youtube.com/watch?v=dQw4w9WgXcQ
-x
:仅提取音频。--audio-format mp3
:将音频转换为 MP3 格式。
下载播放列表
yt-dlp
支持下载整个播放列表或合集,只需提供其 URL。例如,要下载 Bilibili 的一个合集,直接提供合集链接:
yt-dlp <视频链接>
在 Bilibili 中,视频合集的 URL 通常是包含多个视频的页面,运行此命令后,yt-dlp
会自动下载合集中的所有视频。
自定义输出文件名
使用 -o
参数可以自定义输出文件名格式。例如,以下命令将视频保存为标题加扩展名:
yt-dlp -o "%(title)s.%(ext)s" <视频链接>
你可以根据需要调整格式,常用的替代变量包括:
%(title)s
:视频标题%(ext)s
:文件扩展名%(id)s
:视频 ID%(uploader)s
:上传者名字
例如,如果你想将视频文件按上传者和标题命名,可以使用:
yt-dlp -o "%(uploader)s - %(title)s.%(ext)s" <视频链接>