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 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 不建议同时用
      下载自动生成的字幕:
  • --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里的资源。
  • --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网站


ytb-dl使用教程
https://optimushimself.github.io/2025/05/24/ytb-dl使用教程/
作者
Tyrone Opting
发布于
2025年5月24日
许可协议