引擎 (Engines)
下载器是应用程序的核心。它们负责从源头下载视频流。该应用程序支持三种下载器:Mesio、FFMPEG 和 Streamlink。每个下载器都有其独特的功能和局限性。
TIP
对于 Mesio 用户,我们 强烈建议 启用 FLV 一致性修复 和 HLS 一致性修复。即使源流遇到时间戳跳变或网络中断等问题,这些功能也能确保录制的文件保持可播放性和一致性。
FFMPEG 下载器是默认下载器,也是最稳定可靠的选择。它使用 C 语言编写,能够下载 FLV 和 HLS 流。它对各种流媒体场景具有极佳的兼容性,包括支持 FLV/RTMP 容器中的非标准 HEVC。在 CPU 和内存使用率方面,它是最高效的下载器。但是,它不支持 HLS 下载的多线程。
NOTE
我们 Docker 镜像中提供的 FFMPEG 版本是来自 yt-dlp/FFmpeg-Builds 的专用构建版本。该版本针对流媒体进行了优化,包含(或已合并入上游)了许多确保与 yt-dlp 顺畅集成的关键补丁,例如修复 AAC HLS 流截断问题、支持 Windows 长路径以及解码 FLV 容器中的非标准 HEVC。
1. 引擎功能列表
| 功能 | Mesio | FFMPEG | STREAMLINK |
|---|---|---|---|
| FLV 下载 | ✅ | ✅ | ❌ |
| HLS 下载 | ✅ (多线程) | ✅ | ✅ (多线程) |
| 录制时长统计 | ✅ (不支持原始数据模式) | ✅ | ✅ |
| 下载码率统计 | ✅ | ✅ (不支持 -f segmentation) | ✅ (不支持 -f segmentation) |
| 按大小分段 | ✅ (不支持原始数据模式) | ✅ (不支持 -f segmentation) | ✅ |
| 按时长分段 | ✅ (不支持原始数据模式) | ✅ | ✅ |
| 下载格式 | FLV, M3U8, TS, M4S | 支持其他格式 | 支持其他格式 |
| FLV 一致性修复 | ✅ (推荐) | ❌ | ❌ |
| HLS 一致性修复 | ✅ (推荐) | ❌ | ❌ |
| CPU 使用率 | 最低 | 低 | 低 |
| 内存使用率 | 最低 | 低 | 中 |
2. FLV 一致性修复功能列表
| 功能 | 引擎操作 |
|---|---|
| 时间戳跳变 | 使用增量修复 |
| 视频头更改 (分辨率、其他参数) | 分割文件 |
| 音频头更改 | 分割文件 |
| AMF 元数据注入 (lastheadertimestamp, keyframes...) | 注入 |
| 重复 TAG (实验性) | 忽略 |
3. 原始数据模式 (Raw Data Mode)
原始数据模式是 Mesio 引擎支持的一种高性能下载模式。在该模式下,引擎会将从网络接收到的流数据直接写入磁盘,而不对内部媒体包(头信息、帧、元数据)进行解析或处理。
主要特点:
- 极致性能:由于不进行包解析或重采样(Re-muxing),CPU 和内存占用被降至绝对最低。
- 零开销:非常适合高带宽流或资源受限的环境(如入门级 NAS 或 VPS)。仅在网络稳定且 CDN / 流来源没有数据波动(如媒体头部信息变更)时推荐使用。
局限性:
由于不检查包结构,启用原始数据模式时,以下高级功能将无法使用:
- 数据统计:无法实时计算录制时长和下载码率统计。
- 自动分段:引擎无法检测帧边沿或时长,因此无法按大小或时长进行精确分段。
- 修复功能:无法应用 FLV 一致性修复或 HLS 一致性修复,因为这些功能需要包级别的操作。
4. HLS 一致性修复 (Mesio 独占)
当使用 Mesio 引擎下载 HLS 流时,HLS 一致性修复功能可以在数据写入最终文件之前,自动检测并解决常见的 HLS 传输问题,如时间戳不连续或分段缺失。这确保了录制内容在播放时更加流畅。