Lazy loaded image
开源平替
5️⃣万能开源下载工具:yt-dlp
字数 2635阅读时长 7 分钟
2021-7-2
2025-11-7
type
status
date
slug
summary
tags
category
icon
password
URL
如果你喜欢用命令行工具,那么保存网络视频可能是个挑战。视频网站不断更新技术来保护内容,传统下载工具很难跟上。yt-dlpyoutube-dl 的改进版本,已经成为最好用的命令行视频下载工具。
本文将详细介绍 GitHub 上的 yt-dlp 项目(https://github.com/yt-dlp/yt-dlp),包括它的优势、技术要求、主要功能和高级设置,帮助你更好地使用这个工具来下载和管理视频。
一、为什么要用 yt-dlp 而不是 youtube-dl
要了解 yt-dlp 的价值,需要先知道老版本 youtube-dl 遇到的问题。
A. youtube-dl 停止更新的问题
视频网站和下载工具之间一直在进行技术竞赛:网站不断改变技术来阻止下载,而下载工具必须持续更新才能继续工作。如果工具不更新,很快就会失效。可惜 youtube-dl 后来更新变慢,社区认为它"已经坏了且缺乏维护" 1。因为缺少更新,这个工具无法应对视频网站的新变化,逐渐无法使用。
正是因为这个原因,yt-dlp 应运而生。它不仅保留了 youtube-dl 的核心功能,还通过积极更新和改进,成为了新的标准。
B. 速度、稳定性和更新频率的提升
yt-dlp 比老版本有巨大改进,特别是在速度方面。
有用户发现,在相同网络条件下,youtube-dl 的下载速度只有 50-60 KB/s,而 yt-dlp 能达到 16-17 MB/s 1。这个速度提升(有时超过 300 倍)不是偶然的,而是因为 yt-dlp 使用了多线程下载和优化技术,对于需要下载大量视频的用户来说,能节省很多时间。
除了速度,项目的活跃度也很重要。yt-dlp 在 GitHub 上有 134,000 个星标 4,而且保持高频更新,几乎每天都有新的代码提交 5。持续的更新和快速的问题修复,确保这个工具能应对视频网站的各种变化。这种高频率更新是工具长期可用的保证。
C. 被主流 Linux 系统采用
当一个开源工具被主流 Linux 系统收录,说明它足够稳定和优秀。yt-dlp 已被广泛使用,并取代了旧的 youtube-dl。从 Ubuntu 22.04 开始,它已经进入多个主要 Linux 系统的官方软件库 2。
对于技术用户来说,这意味着可以通过系统自带的软件管理器(如 aptpacman)轻松安装,并且享受系统维护者提供的安全检查和稳定性保证 2。
yt-dlp 与 youtube-dl 对比
对比项目
youtube-dl (旧版)
yt-dlp (新版)
重要性
维护状态
已停止维护
每天都有更新 2
确保能应对网站变化
下载速度
50-60 KB/s
16-17 MB/s 1
大幅节省下载时间
主要改进
基础功能
多线程下载、高级格式选择、改进的提取逻辑 2
实现更高效的下载控制
系统支持
逐渐被淘汰
成为标准(如 Ubuntu 22.04+) 2
证明代码稳定可靠
二、使用前需要准备什么
虽然 yt-dlp 是核心工具,但要实现完整功能,还需要一些辅助程序。
A. FFmpeg 和 FFprobe 的作用
yt-dlp 负责下载视频,但需要 FFmpeg 来处理复杂的视频处理任务 8。因为视频网站通常将视频和音频分开传输,FFmpeg 的作用是将它们合并。比如,将分离的视频和音频文件合并成最终的 MP4 或 MKV 文件,并添加字幕和转换格式 8。
需要注意的是,系统自带的 FFmpeg 版本有时可能与 yt-dlp 不兼容。因此,yt-dlp 社区提供了专门优化的 FFmpeg 版本(yt-dlp/FFmpeg-Builds)来解决这些问题 8。要熟练使用 yt-dlp,不仅要会命令行操作,还要确保安装了兼容的 FFmpeg。
B. JavaScript 运行环境(Deno、Node.js、Bun)
为了应对 YouTube 的技术更新,yt-dlp 最近做了一个重要改变。为了继续解析 YouTube 复杂的签名算法(n/sig),现在需要安装 JavaScript 运行环境 8。
这个变化说明 YouTube 的保护措施更复杂了。当用纯 Python 难以跟上 YouTube 频繁的 JS 代码变化时,开发者找到了最可行的方案:直接运行 YouTube 的官方 JavaScript 代码 8。
社区推荐使用 Deno 作为运行环境,因为它性能好且容易集成。如果你更喜欢 Node.js、Bun 或 QuickJS,也可以通过 --js-runtimes 参数来指定,例如 --js-runtimes node 11。虽然官方打包的可执行文件可能已包含必要组件,但如果你通过 PyPI(如 pippipx)安装,在下个主要版本发布前,安装并配置 JS 运行环境是保证 YouTube 下载功能正常的关键 9。同时,现在必须使用 Python 3.10 或更高版本,因为 Python 3.9 已经停止支持 9。
三、主要功能详解
yt-dlp 不只是一个下载工具,它能帮你访问各种受限制的媒体内容。
A. 支持众多网站
yt-dlp 的一大优势是支持范围广。它声称支持"数千个网站" 8,详细列表在 supportedsites.md 文件中,包括主流平台和许多小众媒体网站 12。这种广泛的支持,使它成为记者、研究人员和内容创作者获取全球媒体资源的重要工具。
B. 使用浏览器登录信息下载会员内容
如果需要下载私人视频、付费课程或需要登录的内容,认证功能非常重要。yt-dlp 提供了 --cookies-from-browser 选项,可以直接使用浏览器的登录信息 8。
这个功能支持所有主流浏览器,包括 bravechromechromiumedgefirefoxoperasafarivivaldiwhale 8。工具还允许你指定特定的浏览器配置文件和容器 8,在保持浏览器安全性的同时,实现对受保护内容的访问。
C. 处理地区限制和运营商登录
yt-dlp 专门设有地理限制处理功能 8,说明它内置了应对地区限制的机制。对于某些只检查 IP 地址的平台,可以通过修改 X-Real-IP 头部来绕过限制,不需要使用完整的 VPN 13。这种方法比使用代理更精确高效。
此外,工具还支持多系统运营商(MSO)认证,比如 Adobe Pass 相关的选项 8。这个功能将工具的使用范围扩展到受电视订阅服务保护的专业广播内容 8。
四、格式选择:精确控制视频质量和大小
格式选择和处理是 yt-dlp 的核心功能,也是它与普通下载工具的主要区别。通过格式选择,你可以精确控制视频的编码、分辨率、比特率和文件格式。
A. 格式选择基础(-f)
格式选择通过 -f--format 选项实现 8。因为 YouTube 等平台会将视频(bv)和音频(ba)分开传输,你通常需要选择并合并它们,比如 bestvideo+bestaudio 15。选择组合格式后,yt-dlp 会自动调用 FFmpeg 进行合并。
B. 根据条件筛选:分辨率、比特率等
格式筛选功能让你根据视频信息来选择特定的流。例如,可以通过 height 字段筛选,如 -f "bv[height<=?720]",选择不超过 720p 的最佳视频,或者使用 ? 来包含分辨率信息未知的流 8。
更高级的筛选使用正则表达式(~=)来精确匹配编码器。例如:-f "(bv*[vcodec~='^((he|a)vc|h26)']+ba)",在下载时优先选择 H.264、H.265 或 AV1 编码 15。这种精确控制可以确保下载的文件与特定播放器或软件完全兼容。
C. 高级排序(-S):设置优先级和目标大小
当有多个符合条件的格式时,-S--format-sort 选项决定哪个是"最佳"8。
排序字段包括 heightwidthres(短边分辨率)等。默认是降序(优先最大值)。如果想优先选择最小值,需要加 + 前缀,如 +res 8。
两个最有用的排序操作符:
  • 首选值(:):例如,res:720 会优先选择不超过 720p 的最大视频。如果所有视频都大于 720p,则选择最小的 8。
  • 接近值(~):例如,filesize~1G 会选择文件大小最接近 1GB 的格式 8。对于存储空间有限的用户,接近值操作符很实用。它允许根据预设的存储目标(如控制在 1GB 左右)来自动选择,而不只是追求最高质量 8。你还可以自定义编码器优先级,比如 av01>h265>h264>vp9 16,优先使用 AV1 等新编码器,在可用时获得更好的质量。格式选择常用操作
操作类型
语法示例
效果
来源
筛选(-f)
-f "bv[height<=?720][tbr>500]"
选择 720p 或更低(或高度未知)且比特率大于 500 kbps 的视频
8
排序(升序)
-S "+res"
按分辨率升序排序(优先最小)
8
排序(首选值)
-S "res:720"
优先选择不超过 720p 的最大格式;如果都超过则选最小
8
排序(接近值)
-S "filesize~1G"
选择文件大小最接近 1GB 的格式
8
编码器筛选
vcodec~='^h264'
只选择使用 H.264 编码的视频
15
D. 下载后自动处理
yt-dlp 的后处理功能允许下载完成后立即调整文件格式和编码,不需要手动运行 FFmpeg 命令。
dlp提供了一整套满足专业级归档需求的技术工具,确保用户在变化莫测的数字媒体环境中保持绝对的控制权。
上一篇
最好用的视频播放器:PotPlayer
下一篇
记录灵感闪光:Memos