yt-dlp 是一个 dl 分支,具有附加功能和对现已停用的 YouTube-dl 工具的修复,该工具是一个命令行程序,支持Windows、macOS 和 Linux 操作系统,主要用于从各种网站(包括 B站、YouTube、网易云音乐、qq音乐)下载视频以及音乐。这是一个非常有用的工具,允许您以特定分辨率下载视频、音频和字幕。当我们想珍藏一些Up主的视频,但是网站上并没有下载功能是时候,就可以通过yt-dlp进行下载了。
安装
下载安装 yt-dlp可以前往yt-dlp官方GitHub仓库中,选择与自己的平台或操作系统相适当的发行文件并下载。虽然yt-dlp的主要功能是下载视频,但它还支持视频格式转换、音频提取、媒体(字幕、视频、音频、视频缩略图等)文件的并行下载。
在继续使用 yt-dlp 之前,强烈建议您安装FFmpeg和FFProbe。虽然是“可选”依赖项,几乎是“强制”依赖的,因为很多视频下载后会涉及到拼接、音视频合并、转码、内嵌字幕、格式转换,这些就需要结合ffmpeg。linux与macos下,一般可以直接用包管理器直接安装(pacman/apt/yum/homebrew), windows可以从ffmpeg官网下载页下载,下载安装后记得要把 ffmpeg命令所在的目录加至环境变量PATH
中。
使用
下载和安装 yt-dlp 相对容易,但学习如何正确使用它可能需要一些时间, yt-dlp 是命令行工具,没有“漂亮”的前端 GUI让很多人望而却步,但它的下载功能却是非常强大的。
关于yt-dlp的使用网络上有很多教程,具体的使用方法可以参考官方教程,小编这里只介绍几个常用的例子。
列出所有支持的资源文件,并选择合适的清晰度进行下载
yt-dlp --list-formats video_url
以下载B站《Big Buck Bunny》的视频为例
yt-dlp --list-formats https://www.bilibili.com/video/BV1DT4y1z7a1
资源文件如下
[info] Available formats for BV1DT4y1z7a1_p2:
ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR
───────────────────────────────────────
0 m4a audio only │ ≈ 5.21MiB 67k https │ audio only mp4a.40.2 67k
1 m4a audio only │ ≈10.29MiB 133k https │ audio only mp4a.40.2 133k
2 m4a audio only │ ≈12.53MiB 162k https │ audio only mp4a.40.2 162k
3 mp4 640x360 30 │ ≈27.19MiB 351k https │ avc1.64001E 351k video only
4 mp4 852x480 30 │ ≈62.46MiB 806k https │ avc1.64001F 806k video only
下载的时候默认会下载所支持的最高清的视频,如果要指定分辨率,可以用 -S res:
加上对应P数,如1080、720、480、360,这里下载360P的。
yt-dlp https://www.bilibili.com/video/BV1DT4y1z7a1 -S res:360
如果输入的下载链接是一个合集,默认就会批量把合集中的视频都下载下来,比如现在下载的这个是包含两个视频的合集,默认就全下载了。
下载会员专属的高清视频
下载时,在没有登录的情况下,有些视频网站的高清视频会下载不了,此时,可以用浏览器登录该视频网站,在下载时添加--cookies-from-browser
加对应的浏览器名为参数来下载,就可以下载了。
先列出所有支持的资源文件
yt-dlp --list-formats https://www.bilibili.com/video/BV1DT4y1z7a1 --cookies-from-browser firefox
结果如下:
yt-dlp --list-formats https://www.bilibili.com/video/BV1DT4y1z7a1 --cookies-from-browser firefox
[info] Available formats for BV1DT4y1z7a1_p1:
ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR
──────────────────────────────────────────
0 m4a audio only │ ≈ 5.21MiB 67k https │ audio only mp4a.40.2 67k
1 m4a audio only │ ≈ 10.28MiB 133k https │ audio only mp4a.40.2 133k
2 m4a audio only │ ≈ 12.53MiB 162k https │ audio only mp4a.40.2 162k
3 mp4 640x360 29 │ ≈ 27.46MiB 354k https │ avc1.64001E 354k video only
4 mp4 852x480 29 │ ≈ 61.33MiB 792k https │ avc1.64001F 792k video only
5 mp4 1280x720 29 │ ≈136.09MiB 1757k https │ avc1.640028 1757k video only
6 mp4 1920x1080 29 │ ≈203.57MiB 2628k https │ avc1.640032 2628k video only
可见登录后出现有720P、1080P分辨率的视频,如个是VIP,还会出现更高清的视频。
下载1080P的资源,并播放,视频信息如下:
其他常用选项
--sub-langs zh-Hans
: 选择下载字幕,zh-Hans为中文简体--embed-subs
: 字幕内嵌至视频中,软字幕--write-thumbnail
: 下载缩略图--convert-thumbnails jpg
: 转换缩略图为jpg格式的--write-info-json
: 下载资源信息--dateafter yesterday
: 资源为合集时,可以过滤最近的视频,如只下今天的-I 1:5
: 资源为合集时,选择性下载,此处为下载前5个-o "%(title).210B [%(id)s].%(ext)s"
: 文件名格式,具体参考输出文件名模板,此出的%(title).210B
为取title的前210字节,以防止文件过长错误
刮削
如果你使用Kodi、Emby、Jelleyfin等播放器或媒体服务,下载的一些视频可能不能正常的刮削,但yt-dlp可以把视频的信息下载下:--write-info-json
,但下载后的专有json文件不支持刮削,可以用一个python工具-ytdl-nfo将该文件转换成所支持刮削的nfo文件,通过--write-thumbnail
下载缩略图也会成为视频的封面。
ytdl-nfo安装可以用pip命令: pip install ytdl-nfo
,单文件转换可以在ytdl-nfo
命令后直接加文件名,转换整个文件夹中的.info.json
文件。
#转换单文件
ytdl-nfo great_video.info.json
#转换当前目录中所有
ytdl-nfo .
-END-
作者|dev2ex 保贝狗后端开发工程师