最强的在线视频下载工具,Youtube-DL的最新分支YT-DLP使用教程
Youtube-DL 是一款由 Python 编写的在线视频解析、下载、转换与合并工具,看其名字就知道,其主要目的就是为了下载油管视频而设计和编写的。经过多年发展,目前Youtube-DL不仅仅能下载油管上的视频,还能下载众多在线视频网站上的视频内容(包括大部分知名的大陆视频网站)。
然而最新一版的Youtube-DL停留在了 2021.12.17 版本,这对日新月异的互联网内容站点来说更新也太过缓慢了。
好在Youtube-DL是免费的开源软件,有许多优秀的Fork版Youtube-DL可供选择,而目前最强、最新的Youtube-DL分支就是YT-DLP了!
YT-DLP并非是Youtube-DL的直接Fork,而是由YT-DLC演化而来,所以它经历了两次的Fork与进化,其支持的站点也比Youtube-DL要多得多,还添加了许多新的功能,解析方式也比Youtube-DL要更优秀。
点此查阅YT-DLP支持的站点 - https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md
不过万变不离其宗,我下面演示的代码与使用教程,大部分也适应于Youtube-DL,不过我仍强烈推荐您使用最新版的YT-DLP,以防部分站点无法解析、或者部分操作命令与原版不同。
环境准备
Youtube-DL与YT-DLP是由Python所编写,非Windows系统用户请自行安装Python的运行环境,而Windows用户则可以直接下载官方所提供的内置Python运行时的单文件执行程序。YT-DLP下载(推荐) - https://github.com/yt-dlp/yt-dlp/releases 【 点此下载最新版 | Mini版 】
YT-DLP官方文档 - https://github.com/yt-dlp/yt-dlp/blob/master/README.md
Youtube-DL下载(不推荐) - https://rg3.github.io/youtube-dl/download.html
YT-DLP官方文档 - https://github.com/yt-dlp/yt-dlp/blob/master/README.md
Youtube-DL下载(不推荐) - https://rg3.github.io/youtube-dl/download.html
YT-DLP是控制台程序,所有的操作都需要你使用命令行参数、或者编写批处理脚本来执行操作,我下方大部分的演示代码都是基于批处理脚本所提供。
YT-DLP需要配合FFMPEG来对下载的视频、音频文件进行融合或者转码,因此你还需要下载FFMPEG,将其执行程序放到YT-DLP相同目录下即可。
FFMPEG gyan编译版 - https://www.gyan.dev/ffmpeg/builds/ 【点此直接下载】
下载最新的
(非Windows系统请至官方下载 - https://www.ffmpeg.org/download.html)
下载最新的
ffmpeg-git-essentials.7z
,解压\bin\ffmpeg.exe
和\bin\ffprobe.exe
到YT-DLP的主目录下即可。(非Windows系统请至官方下载 - https://www.ffmpeg.org/download.html)
最快速下载YT视频的代码
复制下面的代码,将其保存到快速下载视频.bat
批处理文件中,并放到YT-DLP主目录下,注意文件的文本编码必须是ANSI!@echo off
echo 请输入URL
set /p URL=
yt-dlp -f "best" %URL%
如果你身处墙外,这个批处理脚本已经可以直接帮助你下载油管上的视频了,你只需把视频的URL地址复制到控制台内,然后回车即可。-f "best"
是YT-DLP的默认参数,表示让YT-DLP自行解析并下载最佳的音画同步存储的媒体内容,一般情况下只会下载720P的MP4文件。这是因为油管是将音频和高画质视频分开存放的(一般是WebM格式视频),只有不支持WebM的浏览器,油管才会推送MP4的视频。如果你想下载最高质量的视频和音频,就需要配合FFMPEG来融合音频和视频内容了,上面的代码也需要改成这样:
@echo off
echo 请输入URL
set /p URL=
yt-dlp -f "bestvideo+bestaudio" %URL%
-f "bestvideo+bestaudio"
表示让YT-DLP解析并下载最高质量的视频和音频,并执行融合操作。如果你不想让YT-DLP自动融合视频和音频,可以改成
-f "bestvideo,bestaudio"
,这样YT-DLP就只会同时下载最高质量的视频与音频文件,而不会执行融合操作,之后你可以自行处理音频与视频文件!如何使用代理
墙内的人如果不使用魔法上网,根本没法下载油管视频,而YT-DLP使用代理也非常简单:rem socks5模式,甚至可以使用user+pass登录
yt-dlp --proxy socks5://127.0.0.1:1080 %URL%
yt-dlp --proxy socks5://user:pass@127.0.0.1:1080 %URL%
rem http模式
yt-dlp --proxy http://127.0.0.1:1080 %URL%
yt-dlp --proxy http://user:pass@127.0.0.1:1080 %URL%
下面开始实战与详细参数教程
-f 下载指定格式
-f
是YT-DLP中最关键的参数,其默认为-f "best"
,大部分情况下YT-DLP会自动选择画质最高且带有音频的文件(油管上就是720P的MP4文件)。而你可以通过添加描述符或者匹配参数,来让YT-DLP更智能地下载媒体文件。
通用描述符 | 说明 |
---|---|
best | 默认,下载带音频的视频 |
worst | 下载画质最低的视频 |
bestvideo | 只下载画质最高的视频,可能不包含音频 |
worstvideo | 只下载画质最低的视频 |
bestaudio | 只下载音质最高的音频,如果不包含单独的音频,会从视频中提取音频 |
worstaudio | 只下载音质最低的音频 |
-F
来执行操作,YT-DLP只会对目标地址进行分析,并返回给你一组提示数据,其中包含一个格式ID、媒体格式、资源描述(音频、分辨率、比特率、编码、文件大小等)。之后,你就可以通过这个格式ID,来指定下载的媒体资源。
rem 获取目标的所有媒体源信息
yt-dlp -F %URL%
比如我通过解析后得知,某个视频的最高画质MP4视频的格式ID为229、最高音质WebM格式ID为251,我想要组合这两个文件,就可以使用下面的代码:rem 下载并自动融合视频和音频
yt-dlp -f "229+251" %URL%
若是我想在本地自己比对视频的质量,比如同时还有一个WebM的视频格式ID为303,我还可以直接同时将它们全部给下载下来,并且不执行自动融合:rem 下载指定的视频与音频,但不融合它们
yt-dlp -f "229,303,251" %URL%
这样,我就会同时下载webm视频、mp4视频、还有一个由webm包装的纯音频文件。下载指定分辨率的视频
使用YT-DLP下载指定分辨率的视频非常简单!比如某个视频拥有4K或8K的分辨率,但我们只想下个1080P以下的MP4版本,可以通过下面的代码来下载高度最大为1080P、同时为MP4格式的视频:
rem 下载高度等于或低于1080P的MP4格式视频,并自动融合最高品质的音频
yt-dlp -f "bestvideo[height<=1080][ext=mp4]+bestaudio" %URL%
如果视频不包含指定的分辨率,YT-DLP会尝试搜寻1080P以下的视频、或者直接报错,你就需要重新调整参数了。你可以使用
=
(等于) !=
(不等于) <
(小于) <=
(小于等于) >
(大于) >=
(大于等于) 这些对比符号,用以对比这些关键词:height
(高) width
(宽) aspect_ratio
(横纵比) tbr
(总码率) abr
(音频码率) vbr
(视频码率) asr
(音频赫兹) fps
(帧率) 等等……你可以使用
=
(完全等于) ~=
(起始等于) $=
(结束等于) *=
(任意位置等于) ~=
(正则匹配) 这些文本匹配符号,用以匹配这些关键词: ext
(文件格式) url
(链接地址) acodec
(音频编码) vcodec
(视频编码) container
(容器格式) protocol
(网络协议) resolution
(分辨率) 等等……-o 输出路径
如果你不指定-o
参数,则YT-DLP会默认将视频下载到当前目录,并以 视频标题-视频ID.扩展名
的格式来保存文件。如果你需要自定义输出文件夹以及文件格式,就可以通过
-o
这个参数来搞定了。YT-DLP使用关键词来替换输出格式中的参数,其格式为
%(关键词)s
,而当你要将它用到批处理文件中时,因为%具有转义的功能,所以你需要使用%%
来代表单个%符号,所以在批处理文件中你要写成%%(关键词)s
这样!rem 将下载的视频自动存放到 video\作者\ID - 视频标题.格式 中
yt-dlp -f "bestvideo+bestaudio" %URL% -o "video/%%(uploader)s/%%(id)s - %%(title)s.%%(ext)s"
此示例会将视频自动下载到 \video\作者\视频id - 视频标题.扩展名
这个路径中。下面介绍一些常用的关键词(注意区分大小写)
关键词 | 说明 |
---|---|
id | 视频ID |
title | 视频标题 |
url | 视频地址 |
ext | 扩展名 |
uploader | 作者 |
upload_date | 上传日期 |
channel | 频道名,一般和作者相同 |
channel_id | 频道ID |
duration | 视频时长(秒) |
format | 视频格式ID+描述信息 |
format_id | 格式ID |
format_note | 描述信息 |
width | 宽 |
height | 高 |
resolution | 宽x高 |
abr | 音频平均码率 |
acodec | 音频编码器 |
vbr | 视频平均码率 |
vcodec | 视频编码器 |
fps | 帧数 |
container | 媒体容器(MP4、WebM、FLV) |
filesize | 文件大小 |
下载字幕
部分视频带有字幕功能,而YT-DLP可以帮你下载、转化、甚至内嵌字幕到视频当中!使用参数
--list-subs
可以查询视频的所有字幕信息:yt-dlp --list-subs %URL%
如果视频包含字幕,Available subtitles for xxx 后面就是可以使用的字幕信息以及格式。想要下载字幕文件到硬盘上,必须使用参数
--write-sub
。如果你只想下载指定语言的字幕,可以使用
--sub-lang xxx
来下载;如果你想下载全部字幕,则可以使用--all-subs
来下载。rem 只下载指定语言的字幕,注意区分大小写
yt-dlp --write-sub --sub-lang zh-Hant %URL%
rem 下载全部字幕文件
yt-dlp --write-sub --all-subs %URL%
如果你想将字幕内嵌到视频中,则可以使用--embed-sub
参数:rem 将指定字幕内嵌到视频中
yt-dlp --embed-sub --sub-lang zh-Hant %URL%
rem 将全部字幕内嵌到视频中
yt-dlp --embed-sub --all-subs %URL%
注意:使用字幕内嵌功能,需要利用FFMPEG的融合功能,同时有可能会将视频的容器变更为支持字幕功能的mkv或是mp4格式。PS:油管视频支持语音识别功能,会将语音识别转化为自动字幕。一般情况下这个字幕的质量很差,我们不会想要下载。如果你想要下载自动字幕的话,只需要将
--write-auto-sub
参数添加进去即可。如何只下载字幕不下载视频?
如果你只想扒下某个视频的字幕而非整个视频的话,可以使用--skip-download
参数来跳过下载。rem 只下字幕文件,跳过视频内容
yt-dlp --write-sub --all-subs --skip-download %URL%
如何将VTT字幕转化为SRT、ASS?
如果视频里有你需要的字幕格式,你可以尝试使用--sub-format 字幕格式
来直接下载该字幕,若是没有的话就会尝试下载默认格式。你还可以尝试使用
--convert-subs
来执行字幕格式的自动转换。rem 将下载的字幕转化为SRT格式,你也可以设置为ASS或其他格式
yt-dlp --write-sub --all-subs --skip-download --convert-subs srt %URL%
rem 如果你想保留VTT格式的字幕,还可以使用 -k 来保留临时文件
yt-dlp --write-sub --all-subs --skip-download --convert-subs srt -k %URL%
注意:如果你使用的是Youtube-DL,若是跳过视频下载,则convert-subs功能不会被执行。好在YT-DLP修复了这个BUG,可以放心使用。如何只下载音频、并将其转化为MP3格式?
yt-dlp -f "bestaudio" -x --audio-format mp3 %URL%
-x
参数强制忽略视频,--audio-format
在下载完成后会自动调用FFMPEG将音频文件转化为MP3格式。你还可以使用
--audio-quality
参数来设置音频的转化质量,默认为5,0为最佳、10为最差。如何下载视频封面?
yt-dlp --write-thumbnail %URL%
--write-thumbnail
会自动下载最佳封面图,而--write-all-thumbnails
还可以下载所有封面图。如何将封面嵌入音频文件中?
yt-dlp -f "bestaudio" -x --audio-format mp3 --embed-thumbnail --add-metadata %URL%
--embed-thumbnail
会自动在转换音频格式后,将原本视频的封面图嵌入到MP3当中。--add-metadata
会将原视频内的部分资讯内容嵌入到MP3当中。如何登录特定站点,下载会员独享内容?
某些视频需要用户登录后才能浏览,而YT-DLP也支持部分网站的登录下载功能。rem 账密登录后下载
yt-dlp -u "USERNAME" -p "PASSWORD" -f "best" %URL%
如果你不使用-p
参数,则在启动批处理后,会让你动态输入密码来登录,这样也会更安全一点。若是yt-dlp不支持登录你想要下载视频的站点,你还可以使用cookie文件来动态登录视频网站。
首先,你需要使用Chrome或Firefox登录该站点,然后使用下面的扩展工具来导出cookie文件:
Edit This Cookie(导出模式选择 Netscape HTTP Cookie File)
https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg
Get cookies.txt
https://chrome.google.com/webstore/detail/get-cookiestxt/bgaddhkoddajcdgocldbbfleckgcbcid/
cookies.txt
https://addons.mozilla.org/en-US/firefox/addon/cookies-txt/
https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg
Get cookies.txt
https://chrome.google.com/webstore/detail/get-cookiestxt/bgaddhkoddajcdgocldbbfleckgcbcid/
cookies.txt
https://addons.mozilla.org/en-US/firefox/addon/cookies-txt/
将导出的数据保存到一个文本文件中,然后使用下面的代码来动态加载该Cookie:
rem 使用cookie登录并下载视频
yt-dlp --cookies "你的cookie文件.txt" -f "best" %URL%
你可以将常用网站的Cookie都存放到该文件中,YT-DLP会动态调整和调用这些数据。完整示例
保存到文件中时,记得文本编码要设置为ANSI!!!其中的代理地址请修改为你自己的魔法工具地址和端口,不需要可以删除。
关注本页,可以随时更新教程与代码,或者向作者提问。
下载视频.bat
@echo off
echo 使用代理下载视频,质量Best+Best,请输入URL
set /p URL=
yt-dlp --proxy socks5://127.0.0.1:1080 --cookies cookie.txt -f "bestvideo+bestaudio" %URL% -o "video/%%(uploader)s/%%(id)s - %%(title)s.%%(ext)s" --write-thumbnail
rundll32.exe cmdext.dll,MessageBeepStub
echo 下载完成,感谢使用,欢迎访问clso.fun!
pause
下载音频.bat
@echo off
echo 使用代理下载音频,质量Best,请输入URL
set /p URL=
yt-dlp --proxy socks5://127.0.0.1:1080 --cookies cookie.txt -f "bestaudio" -x %URL% -o "audio/%%(uploader)s/%%(id)s - %%(title)s.%%(ext)s" --write-thumbnail
rundll32.exe cmdext.dll,MessageBeepStub
echo 下载完成,感谢使用,欢迎访问clso.fun!
pause
下载字幕.bat
@echo off
echo 使用代理下载所有字幕,请输入URL
set /p URL=
yt-dlp --proxy socks5://127.0.0.1:1080 --cookies cookie.txt --write-sub --all-subs --convert-subs srt -k --skip-download %URL% -o "subs/%%(uploader)s/%%(id)s - %%(title)s.%%(ext)s"
rundll32.exe cmdext.dll,MessageBeepStub
echo 下载完成,感谢使用,欢迎访问clso.fun!
pause
总结
YT-DLP 虽然没有图形接口,不过用法倒是挺简单的,而且除了油管外,还支持众多其他的视频站点。我自己就测试过B站视频,下载与转化的速度都非常快,是不可多得的良心软件!
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。