yt-dlp使用详略

前言

如果你是一个喜欢从YouTube等视频网站下载视频的人,你可能已经知道了[youtube-dl](https://github.com/ytdl-org/youtube-dl)这个强大的命令行工具。它可以让你轻松地下载各种格式和分辨率的视频,甚至是字幕和评论。但是,最近你可能也发现了,youtube-dl的下载速度变得非常慢,甚至有时候会失败。这是因为YouTube对youtube-dl进行了一些反制措施,导致它无法正常工作。那么,有没有什么替代方案呢?

答案是有的,它就是***[yt-dlp](https://github.com/yt-dlp/yt-dlp)***。yt-dlp是一个基于youtube-dl的分支项目,它不仅继承了youtube-dl的所有功能,还添加了一些新的特性和修复了一些问题。例如,它可以绕过YouTube的限速,支持SponsorBlock API,可以下载YouTube的剪辑和故事,可以指定格式的排序方式,可以嵌入缩略图,可以下载部分年龄限制的内容,等等。你可以在这里查看yt-dlp的完整介绍和文档。

那么,如何使用yt-dlp呢?其实,它的用法和youtube-dl非常相似,如果你已经熟悉youtube-dl的命令,你可以很快地上手yt-dlp。下面,我将给出一些常见的用法示例,希望对你有所帮助。

安装yt-dlp

首先,你需要安装Python和ffmpeg,这两个是yt-dlp的依赖。你可以从[这里](https://www.python.org/downloads/windows/)下载Python,从[这里](https://ffmpeg.org/download.html)下载ffmpeg。安装Python时,请确保勾选了pip和添加系统环境变量的选项。安装ffmpeg时,请把bin目录添加到系统环境变量中。

然后,你可以用pip来安装yt-dlp,只需在命令行中输入:

1
pip install yt-dlp

或者,你也可以直接从[这里](https://github.com/yt-dlp/yt-dlp/releases/download/2023.12.30/yt-dlp.exe)下载yt-dlp的exe文件,然后把它放到系统环境变量的目录中,比如和ffmpeg.exe放在一起。

下载视频

yt-dlp支持下载超过[1000](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)个网站的视频,你只需要提供视频的URL,就可以下载它。比如,我想下载这个视频:

https://youtu.be/MPywGQPLJPo

我可以直接输入

1
yt-dlp https://youtu.be/MPywGQPLJPo

这样,yt-dlp就会自动选择最佳的视频格式和音频格式,然后下载并合并它们。如果你想指定输出的文件格式,你可以使用–merge-output-format参数,比如:

1
yt-dlp --merge-output-format mp4 https://youtu.be/f7QaeH4hZ4o

这样,yt-dlp就会把视频和音频合并成mp4格式的文件。

查看和选择视频格式

如果你想查看视频有哪些可用的格式和分辨率,你可以使用-F参数,比如:

1
yt-dlp -F https://youtu.be/f7QaeH4hZ4o

这样,yt-dlp就会列出视频的所有格式,每个格式都有一个ID,一个扩展名,一个分辨率,一个帧率,一个文件大小,一个视频编码,一个音频编码等信息。如果是audio only,表示只有音频,没有视频;如果是video only,表示只有视频,没有音频。你可以根据这些信息,选择你想要的格式,然后使用-f参数来下载,比如:

1
yt-dlp -f 22 https://youtu.be/f7QaeH4hZ4o

这样,yt-dlp就会下载ID为22的格式,如果你想下载视频和音频分开的格式,你可以用+号来连接两个ID,比如:

1
yt-dlp -f 137+140 https://youtu.be/f7QaeH4hZ4o

这样,yt-dlp就会下载ID为137的视频格式,也就是mp4格式,1920x1080分辨率的视频,以及ID为140的音频格式,也就是m4a格式的音频,然后合并它们。

如果你不想指定具体的ID,而是想让yt-dlp自动选择最佳的格式,你可以使用一些特殊的符号,比如:

1
yt-dlp -f 'bv[ext=mp4]+ba[ext=m4a]' https://youtu.be/f7QaeH4hZ4o

这样,yt-dlp就会选择最佳的mp4视频和m4a音频,然后合并它们。你还可以使用其他的符号,比如bestworstheightwidthabrvbr等,来指定你想要的格式条件

下载播放列表

如果你想下载一个播放列表中的所有视频,你只需要提供播放列表的URL,就可以下载它。比如,我想下载这个播放列表:

https://youtube.com/playlist?list=PL4XaDCb2VtPFrCas3JbwTke2KE0ZZUp3n

我可以直接输入

1
yt-dlp https://youtube.com/playlist?list=PL4XaDCb2VtPFrCas3JbwTke2KE0ZZUp3n

这样,yt-dlp就会下载播放列表中的所有视频,按照默认的格式和顺序。如果你想指定输出的文件格式,你可以使用–merge-output-format参数,比如:

1
yt-dlp --merge-output-format mp4 https://youtube.com/playlist?list=PL4XaDCb2VtPFrCas3JbwTke2KE0ZZUp3n

这样,yt-dlp就会把所有视频和音频合并成mp4格式的文件。

如果你想指定下载的视频格式,你可以使用-f参数,比如:

1
yt-dlp -f 22 https://youtube.com/playlist?list=PL4XaDCb2VtPFrCas3JbwTke2KE0ZZUp3n

这样,yt-dlp就会下载ID为22的格式

如果你想指定下载的视频顺序,你可以使用–playlist-reverse或–playlist-random参数,比如:

1
yt-dlp --playlist-reverse https://youtube.com/playlist?list=PL4XaDCb2VtPFrCas3JbwTke2KE0ZZUp3n

这样,yt-dlp就会按照播放列表的倒序来下载视频。

如果你想指定下载的视频范围,你可以使用–playlist-start,–playlist-end或–playlist-items参数,比如:

1
yt-dlp --playlist-start 5 --playlist-end 10 https://youtube.com/playlist?list=PL4XaDCb2VtPFrCas3JbwTke2KE0ZZUp3n

这样,yt-dlp就会下载播放列表中的第5到第10个视频。

其他用法

除了下载视频和播放列表,yt-dlp还有一些其他的用法,比如:

  • 下载字幕:你可以使用-write-sub参数来下载视频的字幕,如果你想指定字幕的语言,你可以使用-sub-lang参数,比如:
1
yt-dlp --write-sub --sub-lang en,zh <https://www.youtube.com/watch?v=rrQJvPaPbFM>

这样,yt-dlp就会下载英文和中文的字幕,如果有的话。你还可以使用**--embed-subs**参数来把字幕嵌入到视频文件中,如果支持的话。

  • 下载评论:你可以使用**-write-comments**参数来下载视频的评论,如果支持的话,比如:
1
yt-dlp --write-comments https://www.youtube.com/watch?v=rrQJvPaPbFM

这样,yt-dlp就会下载视频的评论,并保存为JSON格式的文件。

  • 下载缩略图:你可以使用**-write-thumbnail**参数来下载视频的缩略图,如果有的话,比如:
1
yt-dlp --write-thumbnail https://www.youtube.com/watch?v=rrQJvPaPbFM

这样,yt-dlp就会下载视频的缩略图,并保存为JPG或PNG格式的文件。你还可以使用**--embed-thumbnail**参数来把缩略图嵌入到视频文件中,如果支持的话。

  • 下载元数据:你可以使用**-write-info-json**参数来下载视频的元数据,比如标题,描述,上传者,时长,标签等,比如:
1
yt-dlp --write-info-json https://www.youtube.com/watch?v=rrQJvPaPbFM

这样,yt-dlp就会下载视频的元数据,并保存为JSON格式的文件。你还可以使用**--embed-metadata**参数来把元数据嵌入到视频文件中,如果支持的话。

  • 下载SponsorBlock数据:你可以使用**-write-sponsorblock**参数来下载视频的SponsorBlock数据,比如赞助商,片头,片尾,互动等,比如:
1
yt-dlp --write-sponsorblock https://www.youtube.com/watch?v=rrQJvPaPbFM

这样,yt-dlp就会下载视频的SponsorBlock数据,并保存为JSON格式的文件。你还可以使用**--remove-sponsor-segments**参数来移除视频中的SponsorBlock部分,如果支持的话。

结语

以上就是我对yt-dlp的简单介绍和使用教程,希望对你有所帮助。yt-dlp是一个非常强大和灵活的视频下载工具,它可以让你从各种网站下载你想要的视频,而且还有很多高级的功能和选项,你可以在官方文档中查看更多的信息。如果你有任何问题或建议,你可以在GitHub上提出。感谢你的阅读,祝你使用愉快!