YouTube-DL 是一个命令行程序,用于从 YouTube 和其他支持的视频平台下载视频。它提供了一个灵活、功能丰富的系统,用于提取视频信息、下载媒体内容和对下载的文件进行后处理。
本页面提供了 YouTube-DL 架构、其核心组件以及它们如何交互以实现视频下载功能的高层概述。有关提取器等特定组件的信息,请参阅提取器系统,有关下载机制,请参阅下载器系统,有关后处理功能,请参阅后处理系统。
Sources: youtube_dl/YoutubeDL.py148-356 youtube_dl/__init__.py49-177
YouTube-DL 的架构分为几个核心组件,每个组件都有特定的职责。
YoutubeDL 类:这是主要的协调器,负责处理命令行选项、管理提取和下载过程以及协调后处理。
提取器系统:一组提取器类,它们能够理解不同的视频平台并提取视频元数据和下载 URL。
下载器系统:负责使用不同协议从各种来源实际获取媒体内容的组件。
后处理系统:对下载的文件执行操作的模块,例如格式转换、字幕处理和元数据嵌入。
实用工具和兼容性层:辅助其他组件的辅助函数和兼容性工具。
Sources: youtube_dl/utils.py87-177 youtube_dl/YoutubeDL.py148-356
下图说明了典型视频下载过程中的操作顺序。
Sources: youtube_dl/YoutubeDL.py148-356 youtube_dl/extractor/common.py98-416
The YoutubeDL 类是应用程序的核心,负责:
它提供了像 extract_info() 这样的方法来提取视频信息,以及 download() 方法来下载视频。
Sources: youtube_dl/YoutubeDL.py148-356
The InfoExtractor 类是提取器系统的基础,它提供了:
所有站点特定的提取器都继承自这个基类,并实现了 _real_extract() 方法。
Sources: youtube_dl/extractor/common.py98-416
YouTube-DL 的一个基本概念是信息字典 (info_dict),它包含有关视频的元数据。
| Key Field | 描述 | 必填 |
|---|---|---|
| id | 视频标识符 | 是 |
| title | 视频标题 | 是 |
| url or formats | 下载 URL 或可用格式列表 | 是 |
| ext | 文件扩展名 | 否 |
| thumbnail | 视频缩略图的 URL | 否 |
| description | 视频描述 | 否 |
| uploader | 上传者姓名 | 否 |
| timestamp | 上传日期的 UNIX 时间戳 | 否 |
| upload_date | 上传日期 (YYYYMMDD) | 否 |
| duration | 长度(秒) | 否 |
| subtitles | 可用的字幕 | 否 |
此字典在组件之间传递,并作为视频信息的主要数据结构。
Sources: youtube_dl/extractor/common.py98-416
YouTube-DL 可以处理单个视频的多种视频格式。格式选择过程包括:
Sources: youtube_dl/YoutubeDL.py148-356
YouTube-DL 支持广泛的视频平台,拥有超过 1000 个提取器。每个提取器都专门针对特定站点,并处理该平台视频交付系统的特殊性。
最复杂的提取器是 YouTube 提取器,它处理:
Sources: docs/supportedsites.md1-800
YouTube-DL 提供了丰富的配置选项,通过以下方式实现:
解析后的选项存储在 YoutubeDL 实例的 params 字典中,并影响下载过程的所有方面。
Sources: youtube_dl/options.py42-177 youtube_dl/YoutubeDL.py357-378
YouTube-DL 的设计旨在通过多种方式进行扩展:
Sources: CONTRIBUTING.md71-171
YouTube-DL 遵循基于日期的版本命名方案(YYYY.MM.DD)。当前版本存储在 youtube_dl/version.py 文件中的 __version__ 变量中。
它包含一个自更新机制,可以通过命令行选项 -U 或 --update 访问。
Sources: youtube_dl/version.py1-4 youtube_dl/__init__.py49-177
刷新此 Wiki
最后索引时间2025年4月17日(c052a1)