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

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

正文顶部截图

youtube-dl 在 GitHub 上拿到了 14 万 Star,是命令行视频下载领域最早也最知名的项目之一。它的功能一项:从视频网站把视频下载到本地。2008 年由 Ricardo Garcia 创建,后来由 ytdl-org 组织接管维护,代码以公共领域(public domain)协议发布,没有任何版权限制。

从出生到现在十几年,youtube-dl 的模式被大量工具借鉴和 fork。今天很多视频下载工具的骨架,追溯回去都能找到这个项目的影子。

README区域截图

安装:五种方式

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 的提取器架构仍然是一份有参考价值的代码范本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值