菜单

元数据和字幕处理

相关源文件

概述

本页面介绍了 youtube-dl 中用于提取、处理和嵌入元数据(如视频标题、描述和缩略图)以及将字幕嵌入下载的媒体文件中的元数据和字幕处理系统。这些系统作为后处理流水线的一部分运行,在媒体内容成功下载后执行。

有关格式转换后处理的信息,请参阅格式转换

来源: youtube_dl/postprocessor/embedthumbnail.py28-133

架构

元数据和字幕处理在 youtube-dl 的后处理系统中进行。在视频文件下载后,后处理器按顺序运行,以根据用户偏好修改文件。

后处理管道

来源: youtube_dl/extractor/rtve.py173-179

元数据处理

youtube-dl 中的元数据处理包括从源平台提取媒体内容信息,对其进行适当格式化,然后将其嵌入下载的文件中。

元数据类型

系统处理各种类型的元数据,包括:

元数据类型描述来源
基本信息标题、描述、上传日期等。提取器的信息字典
媒体信息时长、格式、分辨率等。媒体检查和提取
缩略图视频缩略图/专辑封面平台特定的缩略图 URL
播放列表播放列表信息、曲目编号播放列表提取器
章节视频章节标记平台特定的提取器

来源: youtube_dl/extractor/rtve.py162-171

元数据嵌入过程

来源: youtube_dl/postprocessor/embedthumbnail.py33-133

字幕处理

字幕处理负责从各种平台提取、转换和可能的嵌入字幕轨道。

字幕格式

youtube-dl 支持多种字幕格式:

格式扩展描述
WebVTT.vttWeb Video Text Tracks 格式
SubRip.srtSubRip 文本格式
Timed Text.ttmlTimed Text Markup Language
LRC.lrc歌词/卡拉 OK 格式
JSON.json平台特定的 JSON 字幕格式

来源: youtube_dl/extractor/rtve.py173-179

字幕提取架构

来源: youtube_dl/extractor/rtve.py173-179

字幕提取实现

字幕提取过程因平台而异。例如,在 RTVE 提取器中,字幕从 JSON 文件中提取。

来源: youtube_dl/extractor/rtve.py173-179

RTVEALaCartaIE 中的实现展示了如何提取字幕。

  1. 字幕文件使用媒体信息中的 sbtFile 键定位。
  2. _get_subtitles 方法下载包含字幕信息的 JSON 文件。
  3. 该方法解析 JSON,按语言提取字幕信息。
  4. 它返回一个字典,将语言代码映射到字幕信息,包括格式和 URL。

缩略图嵌入

缩略图嵌入是一种特殊的元数据处理形式,它将视频缩略图或专辑封面嵌入媒体文件中。

EmbedThumbnailPP 实现

来源: youtube_dl/postprocessor/embedthumbnail.py24-133

EmbedThumbnailPP 类提供了将缩略图嵌入媒体文件的功能。该过程包括:

  1. 检查信息字典中是否存在缩略图。
  2. 将不支持的格式(如 WebP)转换为兼容格式(JPEG/PNG)。
  3. 根据文件类型使用不同的工具。
    • 对于 MP3 文件:使用 FFmpeg 嵌入缩略图。
    • 对于 M4A/MP4 文件:使用 AtomicParsley 嵌入专辑封面。

跨平台兼容性

为确保跨平台兼容性,youtube-dl 使用各种兼容性函数来处理不同的 Python 版本和操作系统。

兼容层使用

来源: youtube_dl/compat.py1-50 youtube_dl/extractor/rtve.py9-13 youtube_dl/swfinterp.py7-10

compat 模块提供了许多用于确保 Python 2 和 3 之间一致性的函数。

  1. 用于字符串处理的 compat_str
  2. 用于 URL 解析的 compat_urllib_parse
  3. 用于二进制数据解包的 compat_struct_unpack
  4. 用于 base64 解码的 compat_b64decode

这些函数在元数据和字幕处理代码中广泛使用,以一致地处理编码/解码和数据结构。

与提取器的集成

提取器负责从源平台收集元数据和字幕信息。

提取器到后处理器的流程

来源: youtube_dl/extractor/rtve.py145-171

RTVEALaCartaIE 这样的提取器会将包括元数据和字幕信息在内的信息字典填充。

  1. 提取器提取标题、缩略图 URL、时长等元数据。
  2. 如果字幕可用,提取器会将字幕信息包含在信息字典中。
  3. 然后将此字典传递给后处理器进行进一步处理。

外部工具依赖

一些元数据和字幕处理操作依赖于外部工具。

工具目的用途
FFmpeg格式转换、元数据嵌入多个后处理器
AtomicParsleyMP4/M4A 文件的元数据嵌入EmbedThumbnailPP

来源: youtube_dl/postprocessor/embedthumbnail.py80-129

常见文件格式和处理

不同的文件格式在元数据和字幕处理方面需要不同的方法。

格式元数据工具字幕嵌入
MP3FFmpeg外部 .srt/.vtt 文件
MP4AtomicParsley/FFmpeg可嵌入为轨道
MKVFFmpeg可嵌入为轨道
FLV有限支持有限支持

来源: youtube_dl/postprocessor/embedthumbnail.py80-129

结论

youtube-dl 中的元数据和字幕处理系统提供了强大的功能,用于通过丰富的元数据和字幕内容来增强下载的媒体文件。这些系统与提取器和其他后处理器协同工作,提供完整的媒体下载体验,使用户能够与媒体内容本身一起保留重要的上下文信息。