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
- --download-sections下载特定章节:- --download-sections 37-39
 
- 下载电影配字幕 - --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--flat-chapters 查看有哪些chapter 
--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主抄家方案:
playlist
–playlist-items 4-40 选择下载index
下载一个收藏夹的所有歌曲/视频 — 一次成功!
.\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 FILEe.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+gnomekeyringLinux, 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网站