14万Star的youtube-dl,命令行视频下载的开山之作

youtube-dl 在 GitHub 上拿到了 14 万 Star,是命令行视频下载领域最早也最知名的项目之一。它的功能一项:从视频网站把视频下载到本地。2008 年由 Ricardo Garcia 创建,后来由 ytdl-org 组织接管维护,代码以公共领域(public domain)协议发布,没有任何版权限制。
从出生到现在十几年,youtube-dl 的模式被大量工具借鉴和 fork。今天很多视频下载工具的骨架,追溯回去都能找到这个项目的影子。

安装:五种方式
Linux / macOS 用 curl 从官网拉:
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
也可以用 pip:
sudo -H pip install --upgrade youtube-dl
macOS 用户可选 Homebrew 或 MacPorts;Windows 用户下载 exe 放到 PATH 目录里即可。
装完后跑 youtube-dl -U 更新。项目发布节奏很快,有时一周一次甚至一天一次。
基本用法
下载单个视频:
youtube-dl 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
工具自己解析页面、识别可用资源、选最高画质、开下。不需要额外参数。
想看有哪些格式可选,加 -F:
youtube-dl -F 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
列出每种格式的分辨率、编码、文件大小。用 -f 指定想要的格式编号即可。
下载播放列表,换播放列表 URL:
youtube-dl 'https://www.youtube.com/playlist?list=...'
核心功能点
格式和音频提取。默认下载最高画质的合并流。-x 只提取音频,用 --audio-format mp3 指定输出格式。配合 -f bestaudio 直接下音频流,跳过视频下载。
字幕。--write-sub 下载手动字幕,--write-auto-sub 下载 YouTube 自动生成的字幕,--all-subs 拉取所有语言版本。格式支持 srt、ass、vtt。
断点续传。-c 参数。Ctrl+C 中断后重跑同一条命令,从中断位置接上。
下载归档。--download-archive archive.txt。第一次下完整个播放列表,工具在 archive.txt 里记下已下载的视频 ID。之后再跑同一个播放列表,只下载新视频。这个机制对追踪频道更新很实用。
输出模板。-o 自定义文件名,用占位符拼标题、ID、格式、上传者:
youtube-dl -o "%(title)s-%(id)s.%(ext)s" URL
播放列表可以按序号命名:-o "%(playlist_index)s-%(title)s.%(ext)s"。
代理和登录。--proxy 配代理,--cookies 导入浏览器的 Cookie 文件。需要登录的、有地域限制的视频都能处理。
外部下载器。--external-downloader aria2c,把下载任务交给 aria2,支持多线程加速。
元数据。--write-info-json 把视频元数据保存为 JSON,--write-thumbnail 下载缩略图,--write-description 保存视频简介。
不止 YouTube
名字里带 YouTube,但 youtube-dl 支持上千个网站。项目文档里有一份完整的支持站点列表。YouTube、Vimeo、Dailymotion、Twitch 等主流平台都在里面。
即使遇到没适配的网站,内置的通用提取器会自动尝试从页面中抓取媒体资源。
Python 嵌入
youtube-dl 可以当成 Python 库直接嵌入代码:
import youtube_dl
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])
对于批量下载、自动化处理、自定义后处理,API 方式比命令行更灵活。
实际使用中要注意的
youtube-dl 的更新速度跟不上视频平台的反爬迭代。YouTube 页面结构一改,往往需要等新版本发布才能恢复下载。这种滞后催生了 yt-dlp 这个 fork,它在 youtube-dl 基础上加了更多提取器修复、SponsorBlock 集成、并行分段下载等能力。实际使用中,yt-dlp 是 youtube-dl 的直接替代品,命令兼容。
下载速度方面,默认单线程 HTTP,大文件偏慢。配合 --external-downloader aria2c 能改善,但需要额外安装 aria2。
2020 年 10 月,RIAA 以 DMCA 为由要求 GitHub 下架 youtube-dl 仓库,引发了社区强烈反弹。GitHub 后来恢复了仓库,并修改了 DMCA 下架请求的审查流程。这件事让 youtube-dl 的 Star 数大幅跃升。
最后
youtube-dl 是命令行视频下载这个品类的原点项目。14 万 Star、持续十几年的维护、公共领域的许可证,这些数字和事实摆在那里。尽管它的 fork yt-dlp 现在更活跃,如果你想了解这类工具的底层机制,youtube-dl 的提取器架构仍然是一份有参考价值的代码范本。
项目。14 万 Star、持续十几年的维护、公共领域的许可证,这些数字和事实摆在那里。尽管它的 fork yt-dlp 现在更活跃,如果你想了解这类工具的底层机制,youtube-dl 的提取器架构仍然是一份有参考价值的代码范本。

442

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



