Administrator
发布于 2025-12-13 / 7 阅读
0
0

yt-dlp+ffmpeg下载视频

1.下载

  • github.com/yt-dlp/yt-dlp

    • 下载yt-dlp_win.zip

  • github.com/BtbN/FFmpeg-Builds/releases

    • 下载ffmpeg-master-latest-win64-gpl-shared.zip

注意不是:github.com/FFmpeg/FFmpeg,这是FFmpeg的官方源代码仓库,社区里会有志愿者(BtbN等)专门负责把代码编译成 .exe 供大家直接使用。

可以把两个压缩包的内容放在一个文件夹,也可以分开存放。添加环境变量的方式略有不同。

要么是打开你下载的 FFmpeg 压缩包:

  • 找到里面的 bin 文件夹。

  • 你会看到三个文件:ffmpeg.exeffprobe.exeffplay.exe

  • 这三个exe文件和yt-dlp.exe放在一个目录里

要么是:

目录 A: F:\Software\yt-dlp (存放 yt-dlp.exe)

目录 B: F:\Software\ffmpeg\

2.设置环境变量

按下 Win + R 键,输入 sysdm.cpl 回车。

点击“高级”选项卡 -> 点击下方的“环境变量”

找到系统变量的Path,编辑添加:

如果是yt-dlp和ffmpeg在同一个文件夹,那么将这个目录添加到环境变量即可,如果分开存放,就要注意添加ffmpeg的是其下的bin文件夹。

F:\Software\FFmpeg\bin

要验证是否成功安装,右键文件夹空白处➡️在终端中打开

或者运行cmd,在cmd命令行中输入:

ffmpeg -version
yt-dlp --version

3.基本使用

查询帮助

yt-dlp --help

升级版本

yt-dlp -U

默认下载

什么参数都不加,会自动下载最高画质和最高音质,并自动合并。

yt-dlp [视频链接]

通常会下载成 .webm.mkv 格式(因为 YouTube 的 4K/8K 首选 VP9/AV1 编码)。

查看有哪些规格可供选择

yt-dlp -F [视频链接]

只下载音频(转 MP3)

yt-dlp -x --audio-format mp3 [视频链接]

-x: 只提取音频 (Extract audio)。

--audio-format mp3: 自动转换成 MP3 格式 (也可以换成 m4a, wav, flac)。

只下载字幕

yt-dlp ^
--skip-download ^
--write-subs ^
--write-auto-subs ^
--sub-format srt ^
--sub-langs "en,zh-Hans,zh-Hant" ^
--windows-filenames ^
-o "%(title)s/%(title)s.%(ext)s" ^
https://www.youtube.com/watch?v=lgrh57kFIVQ

下载整个播放列表 (Playlist):

yt-dlp [播放列表链接]

只下载第 1 到 第 5 集:

yt-dlp --playlist-items 1-5 [播放列表链接]

只下载第 1, 3, 5 集:

yt-dlp --playlist-items 1,3,5 [播放列表链接]

如果你遇到“需要登录才能观看”的视频,且用 Chrome 浏览器登录了 YouTube/B站:

yt-dlp --cookies-from-browser chrome [视频链接]

下载MP4视频和封面,且放在文件夹内

yt-dlp --merge-output-format mp4 --write-thumbnail -o "%(title)s/%(title)s.%(ext)s" [视频链接]

# 加上Cookie
yt-dlp --cookies-from-browser chrome --merge-output-format mp4 --write-thumbnail -o "%(title)s/%(title)s.%(ext)s" [视频链接]

--merge-output-format mp4

作用: 确保不管下载的是什么编码(VP9/AV1),最后都会利用 FFmpeg 无损合并并封装成你想要的 MP4 格式。

--write-thumbnail

作用: 把封面图片单独下载下来(通常是 .jpg 或 .webp)。

-o "%(title)s/%(title)s.%(ext)s"

设定output参数

%(title)s:代表视频标题。

/:代表文件夹层级。

前半部分 %(title)s/:告诉 yt-dlp 先创建一个以“视频标题”命名的文件夹。

后半部分 %(title)s.%(ext)s:告诉 yt-dlp 在那个文件夹里,把文件保存为“视频标题.mp4”。

4.获取最高画质

  • 下载部分视频时出现警告:yt-dlp 没有找到 JavaScript 运行环境(比如 Node.js),而 YouTube 现在强制一部分解析逻辑要跑 JS。没有 JS,有些最高视频格式会拿不到。然而即使我们自己手动准备运行环境,Windows官方单文件yt-dlp.exe版本的yt-dlp也不支持去使用。

    • SABR(Server-Side Adaptive Bitrate):由服务器动态控制码率和分段的视频流方式,需要 JavaScript 参与解析

  • 使用 Android / Android_sdkless DASH 流(非 SABR)下载

    • 使用 Android 播放器接口,视频和音频分离(DASH),每个清晰度有明确、可下载的 URL

yt-dlp ^
--extractor-args "youtube:player_client=android" ^
-f "bv*+ba/b" ^
--merge-output-format mp4 ^
--write-thumbnail ^
--convert-thumbnails webp ^
--write-subs ^
--write-auto-subs ^
--sub-format srt ^
--sub-langs "en,zh-Hans,zh-Hant" ^
--windows-filenames ^
-o "%(title)s/%(title)s.%(ext)s" ^
https://www.youtube.com/watch?v=lgrh57kFIVQ


评论