介绍 :youtube-dl
是一个命令行工具,对我所知的大部分视频网站有不错的支持,你可以选择下载视频,或是将视频流直接导出到自己想使用的播放器中,也可以以JSON
的形式获取可下载资源的URL
。使用方便、足够简洁,这是我在这里推荐的理由。
安装Youtube-dl工具
Youtube-dl 通过 PyPi
分发,如果你的系统安装有 pip3
或 pip
,请直接使用:
pip install --upgrade youtube_dl # 或pip3
如果你是 macOS
用户,也可以使用:
brew install youtube-dl
或者curl
命令
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
或者curl
命令
wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
curl
命令和curl
命令下载后需要指定其执行权限:
chmod a+rx /usr/local/bin/youtube-dl
我还是推荐pip
安装,看你喜欢
利用 Youtube-dl 下载
普通下载
通过 Youtube-dl
下载视频十分简洁,例如你需要下载http://www.bilibili.com/video/av11728123/
只需直接使用 URL 即可::
youtube-dl 'http://www.bilibili.com/video/av11728123/'
你会得到这样的结果:
[BiliBili] 11728123: Downloading webpage
[BiliBili] 11728123: Downloading video info page
[download] Destination: 【全明星freestyle】音浪-11728123.mp4
[download] 100% of 9.07MiB in 00:01
如果你不进行任何特殊的指定,它会分析网页、自动选择默认画质并下载至Destination
显示的文件中。
高阶下载
1.输出文件的名字,注意后缀:
# 1
youtube-dl -o 'youname.mp4' http://www.bilibili.com/video/av11728123/
# 2
youtube-dl 'http://www.bilibili.com/video/av11728123/' -o 'youname.mp4'
你可以利用 %(title)s
等参数(参考 Python
的字符串形式)将文件命名,例如:
youtube-dl 'http://www.bilibili.com/video/av11728123/' -o '%(title)s.%(ext)s'
# 下载至文件:【全明星freestyle】音浪.mp4
当然,你还可以在下载视频时附加更多详细信息,可用的参数就有:标题
、上传者名称(频道名称)
和视频上传日期
等:
youtube-dl -o '%(title)s by %(uploader)s on %(upload_date)s in %(playlist)s.%(ext)s' http://www.bilibili.com/video/av11728123/
2.下载多个视频
有时,我们需要一次从 Youtube
上下载多个不同的视频,此时我们只需用 空格 将多个 URL
分隔开即可:
youtube-dl <url1> <url2>
或者,您可以将要下载视频的 URL
全部放在文本文件中,并将其作为参数传递给 Youtube-dl
也行:
youtube-dl -a url.txt
3.使用代理下载youtube-dl
提供了使用代理的参数,你可以简单地将自己代理的地址填入:
youtube-dl --proxy 127.0.0.1:1087 'https://www.youtube.com/watch\?v\=_fc_TLg3eQ4'
# 成功通过ss在国内下载某不存在网站的视频
如果你不清楚如何使用自己的代理网址,请询问你的代理提供商。
4.只下载(视频中的)音频
Youtube-dl 允许我们仅从 Youtube
视频下载其音频,例如:
youtube-dl -x https://www.youtube.com/watch?v=iJvr0VPsn-s
默认情况下,Youtube-dl 将以 Ogg(opus)
格式保存音频,如果想以任何其他格式下载音频,例如 mp3
请运行:
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=iJvr0VPsn-s
5.下载带有描述、元数据、注释、字幕和缩略图的视频
要下载视频及其他详细信息,如:说明、元数据、注释、字幕和缩略图
等,请使用以下命令:
youtube-dl --write-description --write-info-json --write-annotations --write-sub --write-thumbnail https://www.youtube.com/watch?v=iJvr0VPsn-s
6.列出所有可用的音/视频格式
Youtube 网站上的视频和音频会被自动转码成多种音/视频格式,要查看某个视频或播放列表所有可下载的音/视频格式,请使用以下命令:
youtube-dl --list-formats https://www.youtube.com/watch?v=iJvr0VPsn-s
或者笔者常用的简写方式:
youtube-dl -F https://www.youtube.com/watch?v=iJvr0VPsn-s
Youtube-dl 列出了给定视频的所有可用格式,从左到右分别为:format code(视频格式代码)、extension(扩展名)、resolution(分辨率)和 note(注释)
。当您想要以特定质量或格式下载视频时,先查看一下有哪些可用,会非常便利。
7.以某种质量和/或格式下载视频
默认情况下,Youtube-dl 将自主选择最佳质量的视频下载。 但是,也可以以特定的质量或格式来下载视频或播放列表。
best
选择最佳质量的音/视频文件worst
选择质量最差的格式(视频和音频)bestvideo
选择最佳质量的仅视频格式(例如DASH视频),可能无法使用。worstvideo
选择质量最差的纯视频格式,可能无法使用。bestaudio
选择最优质的音频格式,可能无法使用。worstaudio
选择质量最差的音频格式,可能无法使用。
例如,如果要自动选择并下载最佳质量格式(音频和视频),只需使用以下命令:
youtube-dl -f best https://www.youtube.com/watch?v=iJvr0VPsn-s
同样,要以最佳质量仅下载音频,可执行:
youtube-dl -f bestaudio https://www.youtube.com/watch?v=iJvr0VPsn-s
您还可以组合使用以下不同的格式选项:
youtube-dl -f bestvideo+bestaudio https://www.youtube.com/watch?v=iJvr0VPsn-s
8.通过文件扩展名下载音/视频
以您的首选格式下载视频,例如 MP4
,只需执行:
youtube-dl --format mp4 https://www.youtube.com/watch?v=iJvr0VPsn-s
或者
youtube-dl -f mp4 https://www.youtube.com/watch?v=iJvr0VPsn-s
某些视频可能无法以您的首选格式提供。 在这种情况下,Youtube-dl 将下载其他最佳可用格式。 例如,此命令将下载最佳质量的 MP4
格式文件。 如果 MP4
格式不可用,则它将下载其他最佳可用格式。
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' https://www.youtube.com/watch?v=iJvr0VPsn-s
9.限制下载视频的大小
从 Youtube 播放列表下载多个视频时,您可能只想下载特定大小的视频。例如,此命令不会下载任何小于指定大小的视频,例如 100MB
:
youtube-dl --min-filesize 100M <playlist_url>
如果您不想下载大于给定大小的视频,可以这样:
youtube-dl --max-filesize 100M <playlist_url>
我们还可以用组合格式,选择运算符来下载特定大小的视频。例如,以下命令将下载最佳视频格式但不大于 100MB
的视频:
youtube-dl -f 'best[filesize<100M]' https://www.youtube.com/watch?v=iJvr0VPsn-s
10.按日期下载视频
Youtube-dl 允许我们按照上传日期来筛选和下载视频或播放列表,例如要下载 2019 年 8 月 1 日
上传的视频,可以使用:
youtube-dl --date 20190801 <URL>
下载在特定日期或之前上传的视频:
youtube-dl --datebefore 20190801 <URL>
下载在特定日期或之后上传的视频:
youtube-dl --dateafter 20190101 <URL>
仅下载过去 6
个月内上传的视频:
youtube-dl --dateafter now-6months <URL>
下载特定时间段内(例如 2018 年 1 月 1 日至 2019 年 1 月 1 日
)上传的视频:
youtube-dl --dateafter 20180101 --datebefore 20190101 <URL>
使用帮助
通过上述示例的介绍,相信已经能够满足绝大多数用户对 Youtube 视频下载和 youtube-dl 的使用需求了。有关更多详细信息,请参阅 Youtube-dl 帮助
:
youtube-dl --help
联系方式:
文章链接:https://wxiou.cn/index.php/archives/30/
除特别注明外,文章均为Literature原创,转载时请注明本文出处及文章链接