yt-dlp 使用教程

这个工具是用来取代youtube-dl的,因为youtube-dl基本上不可用了

yt-dlp不仅可以用来下载youtube视频,bilibili等流媒体网站都是可以使用的。

本文章内容都是关于yt-dlp在windows命令行中使用。

项目地址:https://github.com/yt-dlp/yt-dlp
安装步骤:
1.根据你的 Linux 发行版,手动安装 FFmpeg

sudo apt install ffmpeg # Debian/Ubuntu/Linux Mint 等系统
sudo dnf install ffmpeg # RHEL/Fedora/Alma Linux 等系统
sudo pacman -S ffmpeg   # Arch/Manjaro/EndeavourOS 等系统

2.将编译好的程序文件直接下载到系统路径中

wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
chmod a+rx /usr/local/bin/yt-dlp

3.查看版本

yt-dlp --version

4.常用下载配置

直接下载

yt-dlp https://youtu.be/sKrT6mBrosc

查看视频所有分辨率
先用-F参数查看有哪些分辨率

yt-dlp -F https://youtu.be/sKrT6mBrosc

示例

root@dxipv6243-431269011855:~# yt-dlp --list-formats https://youtu.be/sKrT6mBrosc
[youtube] Extracting URL: https://youtu.be/sKrT6mBrosc
[youtube] sKrT6mBrosc: Downloading webpage
WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add  --js-runtimes RUNTIME[:PATH]  to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See  https://github.com/yt-dlp/yt-dlp/wiki/EJS  for details on installing one
[youtube] sKrT6mBrosc: Downloading android vr player API JSON
[info] Available formats for sKrT6mBrosc:
ID  EXT   RESOLUTION FPS CH │   FILESIZE  TBR PROTO │ VCODEC       VBR ACODEC      ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27        1    │                 mhtml │ images                               storyboard
sb1 mhtml 80x45        1    │                 mhtml │ images                               storyboard
sb0 mhtml 160x90       1    │                 mhtml │ images                               storyboard
139 m4a   audio only      2 │  698.51KiB  49k https │ audio only       mp4a.40.5   49k 22k low, m4a_dash
140 m4a   audio only      2 │    1.81MiB 130k https │ audio only       mp4a.40.2  130k 44k medium, m4a_dash
251 webm  audio only      2 │    1.86MiB 133k https │ audio only       opus       133k 48k medium, webm_dash
160 mp4   256x144     30    │  372.25KiB  26k https │ avc1.4d400c  26k video only          144p, mp4_dash
134 mp4   640x360     30    │    1.28MiB  92k https │ avc1.4d401e  92k video only          360p, mp4_dash
18  mp4   640x360     30  2 │ ≈  3.08MiB 221k https │ avc1.42001E      mp4a.40.2       44k 360p
136 mp4   1280x720    30    │    2.74MiB 197k https │ avc1.4d401f 197k video only          720p, mp4_dash
137 mp4   1920x1080   30    │    8.64MiB 620k https │ avc1.640028 620k video only          1080p, mp4_dash

下载指定分辨率
①只下载音频
找m4a格式,列表越靠后越清晰。比如ID:140 | EXT:m4a | audio only

yt-dlp --list-formats https://youtu.be/sKrT6mBrosc
yt-dlp -f140 https://youtu.be/sKrT6mBrosc

②下载音频转换成mp3(加上-x –audio-format参数)

yt-dlp -f140 -x --audio-format mp3 https://youtu.be/sKrT6mBrosc

③下载视频(带音频)
ID:22 | EXT:mp4 | 1280*720

yt-dlp -f22 https://youtu.be/sKrT6mBrosc

④下载指定分辨率视频+音频(为了方便就直接下载mp4格式了)
1080及以上分辨率的音频和视频是分开的,所以一般会音频和视频一起下载

yt-dlp -f299+140 https://youtu.be/sKrT6mBrosc

⑤指定文件名下载(用-o参数)

yt-dlp -o "zhangxuefeng.%(ext)s" https://youtube.com/watch?v=qLkiaFXpcxw

比如下载视频,命名为zhangxuefeng,%(ext)s是一个变量(占位符),会根据实际下载到的格式,自动把这个占位符替换成正确的后缀。如果下的是 mp4,文件名就是 zhangxuefeng.mp4;如果下的是 webm,就是 zhangxuefeng.webm。

这里记录下,用ipv6only的vps(境内)通过 SSH 隧道地址实现yt-dlp下载,不想每次都加一堆命令,把他写入yt-dlp配置文件

yt-dlp 自动、永久地使用那个加密的 SSH 隧道(1080 端口),这样就不用每次在命令后面手动打 --proxy 参数了。
你可以通过修改 yt-dlp 的配置文件来实现。请在 IPv6-only VPS 上按以下步骤操作:
  1. 创建配置目录(如果还没创建)

    mkdir -p ~/.config/yt-dlp
  2. 写入永久代理变量
    执行以下命令,将 SSH 隧道地址和我们之前调优的“长文件名截断”规则一起写入:

    cat <<EOF > ~/.config/yt-dlp/config
    # 1. 自动使用本地 SSH 隧道 (SOCKS5)
    --proxy "socks5://127.0.0.1:1080"
    
    # 2. 自动解决文件名过长报错 (截断前50字符)
    -o "%(title).50s [%(id)s].%(ext)s"
    
    # 3. 优先下载高清格式并合并 (需要已安装 ffmpeg)
    --merge-output-format mp4
    EOF

    直接用yt-dlp https://xxxxxx下载

评论区: