yt-dlp:16万 Star 的命令行音视频下载器
yt-dlp 在 GitHub 上已经拿到 16.7 万 Star 了。
它是 youtube-dl 的一个活跃分支,专门做一件事:从各种视频网站下载音视频内容。YouTube、BiliBili、Twitch、Twitter……支持的站点超过数千个。

1、这玩意儿是干嘛的
yt-dlp 是一个命令行工具,输入一个视频链接,它就能把视频或音频抓下来。支持的格式包括 mp4、webm、m4a、mp3 等,也支持选择不同的画质和编码。
它的前身 youtube-dl 曾经是这类工具的事实标准,但维护逐渐放缓。yt-dlp fork 出来之后,合并了 youtube-dl 和 yt-dlc 的代码,还持续在更新 extractors 以应对各平台不断变化的反爬机制。

2、比原版强在哪里
SponsorBlock 集成:自动标记或移除 YouTube 视频里的赞助商片段、片头片尾、自我推广等内容,省得手动跳过。
格式排序更合理:默认优先选择更高分辨率和更优编码的格式,而不是单纯按码率排序。也能用 -S 参数自定义排序规则,比如优先选 AV1 编码或者优先选文件体积小的。
多线程下载:HLS 和 DASH 格式的视频可以并行下载多个片段,速度明显提升。通过 --concurrent-fragments 控制线程数,默认是 1,调到 4 或 8 通常能看到明显的速度提升。
浏览器 Cookie 自动提取:用 --cookies-from-browser 可以直接从 Chrome、Firefox、Edge、Safari 等浏览器读取 Cookie,解决需要登录才能观看的内容,也绕过了一些地区限制。
直播流支持:可以用 --live-from-start 下载正在直播的内容,从开头而非当前时间点开始录制。目前实验性支持 YouTube、Twitch 和 TVer。
按章节分割视频:支持根据视频的章节信息把一个长视频切成多个文件,每个章节存成一个独立文件。
aria2c 外部下载器:对于 HLS 和 DASH 格式的内容,可以调用 aria2c 作为外部下载器,进一步压榨下载速度。
插件系统:支持加载外部的 extractors 和 postprocessors,可以扩展功能而不必修改主程序代码。
自更新:运行 yt-dlp -U 就能自动更新到最新版本,不用手动下载替换。提供 stable、nightly、master 三个通道,nightly 是推荐日常使用的版本,每天午夜 UTC 前后发布,既能拿到最新修复又相对稳定。
3、安装和基础用法
安装方式很多,最省事的是直接下对应平台的二进制文件:
# Windows
yt-dlp.exe "https://youtube.com/watch?v=xxxxx"
# macOS / Linux
yt-dlp "https://youtube.com/watch?v=xxxxx"
也可以用 pip:
pip install yt-dlp
几个常用命令:
# 下载最高画质
yt-dlp "URL"
# 只下载音频
yt-dlp -x "URL"
# 指定输出格式和文件名模板
yt-dlp -o "%(title)s.%(ext)s" "URL"
# 多线程下载
yt-dlp -N 4 "URL"
# 移除赞助商片段
yt-dlp --sponsorblock-remove all "URL"
4、适合谁用
需要批量下载视频内容的人:做内容存档的、需要离线观看的、做视频素材收集的。它也常被用在自动化脚本和 CI/CD 流程里,配合 ffmpeg 或其他工具完成音视频处理链路。
对开发者来说,yt-dlp 也可以作为 Python 库嵌入到自己的项目里,调用 YtDLP 类来提取视频信息或者执行下载,不用额外起子进程。
yt-dlp 目前还在活跃维护,extractors 更新很频繁,各平台的下载逻辑基本跟得上变化。项目要求 Python 3.10 以上,依赖 ffmpeg 来完成音视频合并等后处理任务。如果你之前用过 youtube-dl 但遇到了下载失败的问题,换 yt-dlp 大概率能解决。
3.10 以上,依赖 ffmpeg 来完成音视频合并等后处理任务。如果你之前用过 youtube-dl 但遇到了下载失败的问题,换 yt-dlp 大概率能解决。

442

被折叠的 条评论
为什么被折叠?



