菜单

媒体处理

相关源文件

you-get 中的媒体处理子系统负责媒体文件的下载后操作。这包括合并多个视频片段、连接单独的音频和视频流、格式转换以及处理各种媒体特定处理需求。该组件主要利用 FFmpeg 进行媒体操作。

有关下载文件的信息,请参阅 下载系统。有关 URL 如何被解析并路由到相应提取器,请参阅 URL 路由

FFmpeg 集成

检测和初始化

you-get 在系统初始化期间自动检测 FFmpeg 的可用性,并相应地调整其功能。

来源: src/you_get/processor/ffmpeg.py10-40

系统首先尝试检测 ffmpeg,如果需要,则回退到 avconv。它将可执行文件路径和版本信息存储在全局变量 FFMPEGFFPROBEFFMPEG_VERSION 中,供整个应用程序使用。

FFmpeg 存在性检查

函数 has_ffmpeg_installed() 为其他组件提供了简单的 API 来检查 FFmpeg 功能是否可用。

这使系统能够就处理能力做出运行时决策。

来源: src/you_get/processor/ffmpeg.py42-43

媒体格式支持

格式处理逻辑

you-get 根据输入格式和 FFmpeg 的可用性确定输出格式。

来源: src/you_get/common.py959-973

支持的格式和处理能力

格式扩展处理支持
MP4.mp4完整(合并、连接)
FLV.flv, .f4v如果 FFmpeg 可用,则转换为 MP4
TS.ts如果 FFmpeg 可用,则转换为 MKV
MP3.mp3音频连接
Matroska.mkvTS 转换的输出格式
多种格式各种音视频同步

来源: src/you_get/common.py959-973 src/you_get/processor/ffmpeg.py57-301

核心处理操作

媒体文件合并

you-get 为不同媒体类型提供特定格式的合并功能。

来源: src/you_get/common.py1062-1124 src/you_get/processor/ffmpeg.py57-238

Concat 列表生成

对于支持 FFmpeg concat demuxer 的格式,you-get 会生成一个 concat 列表文件。

来源: src/you_get/processor/ffmpeg.py47-55

音视频流合并

一些提取器单独下载音频和视频,需要进行合并操作。

来源: src/you_get/processor/ffmpeg.py285-300

处理工作流

MP4 文件合并工作流

系统根据 FFmpeg 的版本,通过两种方法处理 MP4 文件合并。

来源: src/you_get/processor/ffmpeg.py200-238

实际用例:Coub 提取器

Coub 提取器展示了复杂的音视频同步处理。

来源: src/you_get/extractors/coub.py10-38 src/you_get/processor/ffmpeg.py285-300

命令构建

FFmpeg 参数构建

you-get 根据处理需求、格式和版本兼容性构建 FFmpeg 命令。

来源: src/you_get/processor/ffmpeg.py57-301

集成到下载流程中

媒体处理工作流在 common 模块中与下载流程集成。

来源: src/you_get/common.py985-1124

备用机制

当 FFmpeg 不可用时,you-get 会为某些格式提供替代处理方法。

格式主要方法(有 FFmpeg)备用方法(无 FFmpeg)
FLVffmpeg_concat_flv_to_mp4concat_flv (内置)
MP4ffmpeg_concat_mp4_to_mp4concat_mp4 (内置)
TSffmpeg_concat_ts_to_mkvconcat_ts (内置)
MP3ffmpeg_concat_mp3_to_mp3无(需要 FFmpeg)
AVffmpeg_concat_av无(需要 FFmpeg)

来源: src/you_get/common.py1066-1123

这种方法确保了即使在未安装 FFmpeg 的情况下,系统也能处理基本处理,同时在安装了 FFmpeg 时提供增强的功能。