ytb-dl使用教程
前言
- 不是给纯小白科普的。如果你不知道github,yt-dlp,可以不看。
- 废话不多,更像是一个脚本小子的资料库
yt-dlp [选项] – URL [URL]
My Setup
- win11 直接下载了yt-dlp.exe
- 开了代理(不开也可以)
- FFmpeg installed
使用场景
常用参数总结
好习惯:在任何下载命令前,先用
-F -v
看看什么情况。
下载路径管理和文件命名
-P
:指定下载路径。例如:-P ~/Downloads 将视频下载到 ~/Downloads 目录。-o
: 文件名模板
下载速度
-N
/--concurrent-fragments
(default is 1)-i
:忽略下载和后处理错误,确保即使某个视频下载失败,其他视频也能继续下载。-r
/--limit-rate
调整下载速度。例如:-r 4.2M 限制下载速度为 4.2MB/s。
下歌曲(薅羊毛)
--yes-playlist
:强制下载整个列表,即使 URL 可能指向单个视频(默认行为)。--extract-audio
只要音频; 不传值--split-chapters
下载电影配字幕
--write-subs
--list-subs
p.s. 如果没有ffmpeg,会下载.m4a,.mp4两种文件,其中Mp4没有声音. windows用scoop install ffmpeg 命令安装ffmpeg
yt-dlp -U
更新yt-dlp--audio-quality 3
常设置为0,表示最高音频质量,不压缩. 0 -> 9 音质逐渐下降Set Proxy
--proxy ""
空字符串 -> Direct Mode(直连,不走代理)
--proxy "socks5://127.0.0.1:7897"
走代理下载
截取 —— 视频太长,只下载某一段:
常用输出文件名模板
- 原文1270行左右:# OUTPUT TEMPLATE
默认值会把视频id也放过来 -> 输出文件名又臭又长。有些视频的title为了吸引流量也有很多无效信息。
输出模板有很多参数(field)供选择
-o "%(title)s.%(ext)"
简洁。 不要带%(id)
--split-chapters -o "%(title)s - %(chapter)s.%(ext)s"
-o "%(title)s [%(resolution)s].%(ext)s
加入分辨率%(resolution)s
- 按up主分类
-o "%(uploader)s/%(title)s.%(ext)s"
yt-dlp支持创建不存在的路径。
print 测试
支持的字段:--print filename
--print chapters
--list-subs
查看资源支持的字幕格式
- 会列出弹幕的语言和文件类型(lang + format)
- 一般bi站就是damuku语言 xml格式 和 ai-zh srt字幕格式
bilibili场景
音乐合集方案:-f bestaudio/ba
-o "%(title)s.%(ext)s"
-P
-f bestaudio -o "%(title)s.%(ext)s -P ~/Music/xxx" url
up主抄家方案:
下载一个收藏夹的所有歌曲/视频 — 一次成功!
.\yt-dlp.exe -P ~/Downloads -N 5 --yes-playlist -i -r 1M --no-overwrites -c --no-part https://www.bilibili.com/list/ml3097786028?oid=46656713"&"bvid=BV1rb411n7wh
list就是收藏夹,这是我bi站“我喜欢听”收藏夹的第一首歌—哥哥的当年情。这个收藏夹下歌曲url的特点是list/ml….?前缀一致,oid=
的值不同。
- 要注意,&要用””框住。解析上的问题
- 开了代理中途不要断。 即便开了Rule模式也有可能走了代理。
- yt-dlp很容易受网络环境影响。最好别断梯子或者网络,因为目前的版本不支持重新下载故障视频。
高级用法:下载高清视频
yt-dlp并不会以你的账号下载视频,而是访客身份——无法下载较高清晰度的视频、甚至无法下载视频、subtitle。让yt-dlp使用cookies使用浏览器的cookies则可满足更高的要求~ // 获取chrome等浏览器的cookies
弹幕 danmaku
damaku 在bi站和日本流行。ytb、netflix无。
subtitle 在影视界不指“副标题”。而是字幕的意思,更像caption(插画)的含义。 subtitle常见有youtube自动生成的字幕,up主手动上传的字幕,还有就是弹幕。
如果要下载subtitle文件:
--write-subs
--sub-lang danmaku / en /zh
--convert-subs FORMAT
(FORMAT currently supported: ass, lrc, srt, vtt).- 试了ass, vtt都不起作用,还是老老实实下默认的xml吧。可以用danmaku2ass把xml转换成bilibili弹幕文件格式
.ass
,再用vlc读取。
如果要把弹幕合并到视频里:--embed-subs
//--write-subs
和--embed-subs
不建议同时用
下载自动生成的字幕:
- 试了ass, vtt都不起作用,还是老老实实下默认的xml吧。可以用danmaku2ass把xml转换成bilibili弹幕文件格式
--write-auto-subs
--sub-lang en/zh/
指定字幕的语言, 适合下载ytb英文资源/英文歌曲
--embed-subs
(only for mp4,webm and mkv videos)
视频封面:
--write-thumbnail
会大度下载一个png/webp图片文件下来--embed-thumbnail
把封面嵌入到音频文件。 播放器能看到。 (看你选的资源咯,有些无聊的封面不要也罢
下载一个up主的全部视频
拿稚珲君举例吧。 进到个人主页,进到投稿。https://space.bilibili.com/20259914/upload/video
测试:yt-dlp -F url
刚好是44个视频。
完整命令: yt-dlp -P ~\Video\xxx -o "%(upload_time)s_(title)s.(ext)s" --download-archive ~\Video\xxx\archive.txt --playlist-start 6 --playlist-end 12 --embed-thumbnail url
重要flags说明:
--download-archive FILE
e.g.--download-archive zhj-achieve.txt
- 存档文件里记录网站和id 例:
bilibili BV1ZA411e7Ff
- 如果存档文件已经存在,则不会重复下载txt里的资源。
- 存档文件里记录网站和id 例:
--playlist-start 1 --playlist-end 5
是按照时间倒序来的。最新发布的视频是编号1.--reverse-playlist
推荐命名:%(upload_date)s_%(title)s.%(ext)s
记录up主上传的时间
下载歌词
有些时候只想要音频文件,用一个简易的小窗口播放器看歌词
-t mkv
或者``–merge-output-format mkv `
因为m4a文件只能封装音频,要用mkv文件封装音频和字幕文件(srt/…)
--sub-lang
和 --sub-format
指定你要下载的字母语言和格式。 (先用--list-subs
看可以下载的字幕格式)--embed-subs
合并字幕到mkv文件里。
ytb场景
除了-r 4M
-i
最常用的参数
建议带上--proxy "http://127.0.0.1:7897"
yt-dlp is downloading as a guest, so it can’t access those higher-quality formats.
使用cookies,让yt-dlp伪装成我们的“registered user”身份。从而下载更高质量的视频
--cookies-from-brower chrome
一般够了--cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER]
--cookies-from-browser chrome+gnomekeyring
Linux, MacOS有加密,不是明文cookie--cookies-from-browser firefox:default::work-container
--cookies-from-browser chrome:Profile 2
很杂的设置了,Chrome,Firefox浏览器可以多重工作状态、用户身份。 看一眼就好
下载单个ytb视频
-r 5M
-i
参数即可
Optional: --split-chapters
下载ytb视频List
-r 5M -i --yes-playlist
下载ytb直播
一直很喜欢一个lofi直播--proxy "http://127.0.0.1:7897"
//语法不同于bash. export http_proxy=””-r 5M
-i
--hls-prefer-native
下载直播时应当用yt-dlp下载器而不是ffmpeg
TL-DR
yt-dlp对Windows支持挺友好的(主要是有Scoop),当然在WSL2、linux必然可以有一样的体验
音频格式 和 视频格式
因为网络环境不同,一个url往往对应很多种下载方案。
使用yt-dlp -F <url>
查看有哪些方案.
-f best
需要会员yt-dlp -f audio_id+video_id <url>
通用.\yt-dlp.exe -o --print "%(title)s.%(ext)s" -f 30280+100050 https://www.bilibili.com/video/BV1YyZHYvE7c/
gui版本
windows系统的yt-dlp前端gui
这是一位日本开发者设计的软件。我没用过,但是看readme感觉十分小白友好呢~
支持中文,可以方便的选择下载路径。
而且有很多高级选项:可以下载章节,设置音视频的格式
支持的网站
网易云音乐/优酷/爱奇艺/虎牙视频,一些直播、yellow网站