1054 字
5 分钟
[工具] yt-dlp 配置
Waiting for api.github.com...
本指南总结了配置高性能、高成功率 yt-dlp 下载环境的全过程,特别针对 YouTube 的反爬虫限制(403/429 错误)及双语字幕需求进行了优化
1. 基础环境安装
确保系统中安装了以下核心组件:
NOTE
- yt-dlp: 主程序
- FFmpeg: 用于视频合并、格式转换及字幕嵌入(必装)
- Node.js: 用于解决 YouTube 的 JavaScript 挑战(解决 403 错误的关键)
- Vivaldi/Chrome/Firefox: 用于提供 Cookie(解决 429 限制及高级验证)
# Arch Linux 示例sudo pacman -Syusudo pacman -S yt-dlp ffmpeg nodejs2. 核心配置文件
TIP配置文件路径:
~/.config/yt-dlp/config
以下是经过优化的完整配置,可直接复制使用:
# ============================================================# yt-dlp 配置文件# ============================================================
# --- 网络与代理设置 ---# 可以在命令行加 --proxy "URL"(URL为空不走代理)--proxy ""
# 强制使用 IPv4,在很多地区,IPv4 的连接比 IPv6 更稳定,能有效解决 403 Forbidden 报错--force-ipv4
# --- 验证与绕过限制 (重要) ---# 从浏览器中读取 Cookie,这是绕过 429 (请求频繁) 和下载受限视频的关键# 请改成已经登录过 YouTube 的浏览器--cookies-from-browser firefox
# 指定 JS 运行时为 Node.js,用于处理 YouTube 的签名挑战,防止下载被限速--js-runtime node
# 允许从 GitHub 自动获取最新的挑战解决脚本,确保在 YouTube 更新算法后依然有效--remote-components ejs:github
# --- 视频质量与格式 ---# 画质优先:下载最好的视频流(含VP9/AV1) + 最好的音频流,如果无法合并则选最好的单文件-f "bestvideo+bestaudio/best"
# 强制合并格式为 MKV,MKV 兼容性极佳,能完美封装高清编码并支持多音轨、多字幕嵌入--merge-output-format mkv# 针对单流视频(如 m3u8),如果不是 mkv 则自动转封装为 mp4--remux-video mp4
# 保持文件的原始修改时间 (如果不需要可以取消注释)# --no-mtime
# --- 输出路径与文件名 ---# 自定义下载文件的保存路径# 逻辑:优先按播放列表存,没有则按网站域名存;文件名使用 "标题 [日期].后缀"-o "~/Videos/youtube-dl/%(playlist_title,webpage_url_domain|SingleVideos)s/%(title)s [%(upload_date>%Y-%m-%d|Unknown)s].%(ext)s"
# --- 字幕设置 ---# 默认下载并嵌入字幕--write-subs--embed-subs# 如果想要字幕和视频文件分离,可以在命令行加 --no-embed-subs# --no-embed-subs
# 下载每个字幕文件之间暂停 5 秒,这是防止 YouTube 识别并封锁 IP 的重要安全措施--sleep-subtitles 5
# 语言设置:匹配 B 站 AI 字幕 (ai-zh) 及各类中英文字幕--sub-langs ".*zh.*,.*en.*,-danmaku"
# --- 元数据与附加信息 ---# 在视频文件中嵌入元数据,如视频描述、上传者信息等--embed-metadata
# 在视频中嵌入章节信息 (如果视频原作者划分了时间轴)--embed-chapters
# --- 多线程下载 ---# 使用 aria2c 作为外部下载器以实现多线程下载(需安装aria2c)#--external-downloader aria2c#--downloader-args "aria2c:-x 16 -s 16 -k 1M"
# ffmpeg_i 确保 -allowed_extensions ALL 作用于输入文件之前--downloader-args "ffmpeg_i:-allowed_extensions ALL"
# 开启内置并发分片下载 (作为 aria2 的补充或备选)--concurrent-fragments 10
# 忽略地理位置限制--geo-bypass3. 配合 mpv 实现双语字幕显示
为了在播放时同时显示中英双行字幕,需要配置 mpv
修改 ~/.config/mpv/input.conf (快捷键)
k cycle secondary-sid # 按 k 循环切换次要字幕 (显示在顶部)K set secondary-sid no # 按 Shift+k 关闭次要字幕修改 ~/.config/mpv/mpv.conf (默认设置)
slang=zh-Hans,zh,chi,en # 主字幕优先选择中文secondary-sid=auto # 自动开启次要字幕轨道4. 常用操作命令
-
标准下载 (使用上述所有配置):
Terminal window yt-dlp 'URL' -
仅下载音频 (MP3):
Terminal window yt-dlp -x --audio-format mp3 'URL' -
下载整个播放列表:
Terminal window yt-dlp 'URL' -o "~/Videos/youtube-dl/%(playlist_title)s/%(title)s.%(ext)s" -
更新 yt-dlp:
Terminal window yt-dlp -U
5. 注意事项与常见问题
IMPORTANT
HTTP Error 403: Forbidden:
- 确保已安装 Node.js
- 确保配置文件中有
--js-runtime node- 尝试更换代理节点
HTTP Error 429: Too Many Requests:
- 必须使用
--cookies-from-browser- 减少
--sub-lang中匹配的语言数量,不要使用en.*等通配符- 增加
--sleep-subtitles的秒数
CAUTION
- Cookie 解密失败:
- 如果 Vivaldi/Chrome 正在运行,有时
yt-dlp无法读取数据库,请尝试关闭浏览器后再运行下载,或在弹出系统密钥环权限申请时点“允许”