Windows 11 上搭建 YouTube 视频下载工具:yt-dlp + FFmpeg

作者:liulilittle日期:2026/3/17

Windows 11 上搭建 YouTube 视频下载工具:yt-dlp + FFmpeg

作为经常需要下载 YouTube 视频的人,你一定遇到过这样的烦恼:在线下载网站不稳定、广告多,或者限制大小。今天我就来分享一套本地搭建的下载方案,使用 yt-dlp(youtube-dl 的活跃分支)配合 FFmpeg,在 Windows 11 上轻松下载单条视频或整个播放列表,全部转为 MP4 格式。最重要的是,完全免费、无广告、速度快


准备工作

  • 一台 Windows 11 电脑,且有管理员权限
  • 稳定的网络连接
  • 基本的命令提示符操作能力

需要安装的软件:

  • Python 3.11+(用于运行 yt-dlp)
  • yt-dlp(下载工具)
  • FFmpeg(处理视频转换和合并)

详细安装步骤

1. 安装 Python 并添加到 PATH

  1. 访问 Python 官网,下载 Python 3.11 或更高版本的安装包。
  2. 运行安装程序,务必勾选“Add Python to PATH”,然后点击“Install Now”。
  3. 安装完成后,打开命令提示符(Win + R,输入 cmd 回车),验证安装:
1python --version  
2pip --version  

如果显示版本号,说明 Python 和 pip 都已正确安装。

2. 安装 yt-dlp

在命令提示符中运行以下命令,通过 pip 安装 yt-dlp(-U 表示升级到最新版):

1pip install -U yt-dlp
2

安装完成后,验证版本:

1yt-dlp --version
2

看到版本号即表示成功。

3. 安装 FFmpeg 并配置环境变量

yt-dlp 下载的视频可能需要合并音频和视频流,或者需要转换格式,这时必须依赖 FFmpeg。

  1. 前往 FFmpeg 官方构建站,下载 ffmpeg-release-full.7z 或 ZIP 包(推荐选择“release full”版本)。
  2. 将下载的压缩包解压到 C:\ffmpeg(你也可以选择其他位置,但建议路径中不要包含中文和空格)。
  3. 进入解压后的文件夹,找到 bin 子目录,里面应该有 ffmpeg.exe。复制完整路径,例如 C:\ffmpeg\bin
  4. 将该路径添加到系统环境变量:
    • Win + S,搜索“环境变量”,点击“编辑系统环境变量”。
    • 在“系统属性”窗口中点击“环境变量”。
    • 在“系统变量”列表中找到 Path 变量,双击编辑。
    • 点击“新建”,粘贴刚才复制的路径 C:\ffmpeg\bin,然后一路点击“确定”。
  5. 重启命令提示符(重要!),然后验证 FFmpeg 是否可用:
1ffmpeg -version  

如果显示详细的版本信息,恭喜你,FFmpeg 配置成功!


使用项目中的批处理文件下载视频

现在所有依赖都已安装,可以开始下载视频了。我们使用 GitHub 上的现成批处理文件,无需手动敲复杂的 yt-dlp 命令。

获取项目文件

你可以通过 Git 克隆,或者直接下载 ZIP 包:

1git clone https://github.com/israil-fakir/youtube_downloader_using_YT-DLP.git
2

或者访问 项目主页 点击“Code” -> “Download ZIP” 并解压。

进入项目文件夹,你会看到 downloader.bat 文件,这就是我们的启动脚本。

运行下载器

  1. 双击 downloader.bat,会弹出命令提示符窗口。
  2. 根据提示,粘贴一个 YouTube 视频链接(如果想下载单个视频)或播放列表链接(如果想下载整个播放列表)。
    • 如何复制链接?在 YouTube 网页地址栏复制即可。
  3. 按下回车,下载将自动开始。你会看到 yt-dlp 的输出信息,包括视频标题、进度等。
  4. 下载完成的 MP4 文件会保存在与 downloader.bat 相同的文件夹中。

中途取消下载

如果想取消下载,按 Ctrl + C,然后输入 Y 确认终止。


常见问题与解决

Q1:运行 python 提示“不是内部或外部命令”?
A:说明 Python 没有添加到 PATH。可以卸载重装并勾选“Add Python to PATH”,或者手动将 Python 安装目录(如 C:\Python311C:\Python311\Scripts)添加到系统环境变量。

Q2:pip 不是内部命令?
A:通常和 Python 一起安装。如果确实没有,可以重新运行 Python 安装程序,选择“Modify”并确保 pip 被勾选。

Q3:FFmpeg 验证失败,提示“不是内部或外部命令”?
A:可能是环境变量未生效。检查路径是否添加正确,并确保重启了命令提示符。也可以在“环境变量”中新建一个系统变量 FFMPEG_HOME 指向 C:\ffmpeg,然后在 Path 中添加 %FFMPEG_HOME%\bin

Q4:下载的视频没有声音或只有视频?
A:通常是 FFmpeg 未正确安装或未添加到 PATH。请重新检查 FFmpeg 配置,确保 ffmpeg -version 能正常运行。

Q5:下载播放列表很慢?
A:yt-dlp 默认会并发下载,但网络环境不同。可以修改 downloader.bat 中的命令,添加 -N 4 参数控制并发数(例如 yt-dlp -f mp4 -o "%%(title)s.%%(ext)s" --yes-playlist -N 4 %url%)。


标注

通过以上步骤,你已经在 Windows 11 上搭建了一个功能完整的 YouTube 下载环境。无论是收藏音乐、备份课程,还是制作剪辑素材,这套工具都能帮你轻松搞定。yt-dlp 还支持很多其他网站(如 Bilibili、Twitter、TikTok 等),只需简单修改命令即可。


Windows 11 上搭建 YouTube 视频下载工具:yt-dlp + FFmpeg》 是转载文章,点击查看原文


相关推荐


Android MediatorLiveData
louisgeek2026/3/8

Android MediatorLiveData 可以监听多个 LiveData 源,并且能动态添加和移除源 合并多个 LiveData 源 public class CombineViewModel extends ViewModel { private final MutableLiveData<One> _oneLiveData = new MutableLiveData<>(); public final LiveData<One> oneLiveData = _on


【AI个人学习】npm本地安装claude code白嫖minimax模型
汐瀼2026/2/28

安装nodejs 下载 需要自取,下一步傻瓜式操作 通过网盘分享的文件:node-v24.13.0-x64.msi 链接: https://pan.baidu.com/s/1eJhCowFZ211oV2yxAfPvQA?pwd=sayg 提取码: sayg –来自百度网盘超级会员v7的分享 系统变量添加全局包路径 打开CMD敲命令 npm config get prefix # 获取npm全局包路径,获取后复制 添加路径到系统变量即可,添加系统变量网上教程一大堆 安装claude


你是不是觉得 R8 很讨厌,但 Android 为什么选择 R8 ?也许你对 R8 还不够了解
恋猫de小郭2026/2/20

本篇是来自 Android Developers 的播客 《What’s so great about R8?》 的整合,核心是讨论了 Android R8 编译器以及它对性能的影响,参与讨论的嘉宾包括来自 Android 工具团队、R8 团队和平台性能团队的专家(Tor Norby, Romain Guy, Sean, Chris, Shai)。 这是一篇让你对 R8 不再误解的内容。 D8 与 R8 编译器的区别 首先可能不少人还不理解 D8 与 R8 的区别,在 Android 开发里


如何零成本搭建个人站点
mCell2026/2/12

同步至个人站点:如何零成本搭建个人站点 站点地址:stack.mcell.top,包含完整的:写作、评论、部署、MCP支持... 我经常写作,最开始是在一些平台上,比如稀土掘金。后面慢慢写多了,就想有个自己的博客平台。 最初搭建的博客很简单:一个纯静态的 HTML 文件,内容也不复杂,写点自我介绍,当作个人站点。直接托管到 GitHub Pages,域名用的也是它默认那串。 但很快就发现:功能太少了。 比如发布文章?评论?甚至想加点扩展能力都很难——纯 HTML 又没框架,后面越改越痛苦。


PostgreSQL全文检索中文分词器配置与优化实践
MarsBighead2026/2/3

引言 在构建RAG(检索增强生成)系统的过程中,提升检索效率与准确性是一个持续优化的课题。除了常见的嵌入向量检索外,结合全文检索技术能进一步改善系统表现。本文基于PostgreSQL数据库,分享中文全文检索分词器的配置、索引创建与使用实践,记录在真实场景中遇到的问题与解决方案。 一、背景 为了提升RAG系统的检索效果,我们探索了全文检索与向量检索结合的混合检索方案。PostgreSQL内置了强大的全文检索功能,并支持扩展插件实现多语言分词。针对中文场景,我们选用了 zhparser 分词插件,


怎么理解 HttpServletRequest @Autowired注入
それども2026/1/24

在你的代码中,@Autowired(required = false) private HttpServletRequest req 的 required = false 是多余的,甚至可能带来潜在问题。以下是详细分析: 1. 为什么 required = false 是多余的? (1) HttpServletRequest 的特殊性 由 Servlet 容器(如 Tomcat)管理:HttpServletRequest 是 Web 请求的上下文对象,在 Servlet 环境中必然存在(


Objective-C 核心语法深度解析:基本类型、集合类与代码块实战指南
奋斗理想2026/1/16

详细讲解:Objective-C 基本类型、集合类和代码块 一、基本类型详解 1.1 主要基本类型 // MyTypes.m #import <Foundation/Foundation.h> void demonstrateBasicTypes() { NSLog(@"========== 基本类型演示 =========="); // 1. BOOL 类型(实际上是 signed char) BOOL isOpen = YES; // YES = 1,


SPI通信:从原理到工程实践
我太浮躁2026/1/8

文章目录 1、概述2、什么是SPI?2.1 SPI的特点是什么? 3、SPI的历史发展3.1 SPI诞生3.2 为什么是SPI?3.3 SPI的一路升级3.3.1 标准 SPI (Standard SPI)3.3.2 Dual SPI & Quad SPI (QSPI)3.3.3 Octal SPI (OSPI) / xSPI3.3.4 eSPI (Enhanced SPI) 4、协议架构及通信原理4.1 SPI功能层级划分(非官方,但实用便于理解)4.1.1 物理层 :四线制结


[服务器][教程]EC2开启自定义端口
踏雪Vernon2025/12/30

网上很多教程并没有说这一点。直接就说新建安全组之后就可以用了。 很坑,我一直以为我的服务器服务搭建的有问题。因为即使端口开了,端口没有对应的服务用端口扫描也是显示无连接的!! 1. 新建安全组规则 进入“实例”页面中找到“安全组”。新建一个安全组 新建之后如下所示。 新建之后,并不是直接就可以用了。而是要进行绑定!这个一定要注意!!! 2. 修改安全组规则 点击实例之后,选择“操作”,更改安全组 之后在这里选择刚才创建的安全组即可。其他的VPC应该也是类似的。 被网上的教程坑了。大家注意甄


【前端必看】手把手教你把 Strapi 5 自动化部署到宝塔,再也不用手动传代码了!
知航驿站2025/12/21

前言 兄弟们,作为一名普通前端,每次写完接口还要自己登录服务器、手动上传代码、装依赖、再重启 PM2,这一套“广播体操”做下来,天都黑了。 今天咱们就花 10 分钟,把这套活儿交给 GitHub Actions。以后你只管在本地 git push,剩下的脏活累活全让机器人帮你干! 在线文档 在线源码 一、 整体思路(大白话版) 代码放 GitHub:这大家都会。 GitHub Actions 开工:你一推代码,它就跳出来执行一个脚本。 SSH 远程登录:GitHub 像个“代跑腿”的,拿着你的

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客