aria2c 外部下载器 — 为什么 Seal 不用 yt-dlp 默认下载器
yt-dlp 默认下载器 vs aria2c
yt-dlp 自带了一个基础下载器(单 HTTP 连接)。它能工作但有明显局限:
| 特性 | yt-dlp 默认 | aria2c |
|---|---|---|
| 下载方式 | 单连接顺序拉取 | 多线程分割并发 |
| 断点续传 | 基础支持 | 完整支持 |
| HTTP 并发 | 1 | 默认 5,可配到 24 |
| 速度表现 | 受单连接带宽上限限制 | 能占满设备可用带宽 |
| 大文件稳定性 | 网络波动容易中断 | 分段独立抗波动 |
Seal 选择 aria2c 作为外部下载器,所有下载任务都通过 aria2c 执行——不只是视频音频,连 yt-dlp 自身的内核更新也是 aria2c 拉的。
aria2c 怎么塞进安卓 APK
aria2c 是 C 写的命令行工具,Seal 用 Android NDK 把 aria2c 编译成了安卓各架构的 native binary(arm64-v8a、armeabi-v7a、x86_64、x86),然后随 APK 一起打包。
用户安装 Seal 后,apk 解压时 aria2c 二进制会被释放到应用的 native 库目录,Seal 在需要下载时直接 exec 这个二进制文件,通过命令行参数传递下载任务。
aria2c 与 Seal 的协作链
一次下载的完整调用链:
Seal UI → 配置下载参数(URL、格式、字幕、目录)
→ 调用 youtubedl-android(Python)
→ yt-dlp 解析视频信息
→ 调用 aria2c(外部下载器模式)
→ aria2c 多线程下载各段
→ ffmpeg 合并流、重封装容器
→ mutagen 写入元数据
→ 文件归档到下载目录
整条链里 aria2c 负责最耗时的那段:实际抓取字节。把它从单连接换成多线程后,大文件下载速度和稳定性都会明显提升。
aria2c 参数与进阶调优
Seal 默认 aria2c 参数已经针对移动设备优化,但UI 上没有暴露线程数给用户手动调(Seal 线程数范围是 1-24)。进阶玩家可以在自定义命令模板里通过 yt-dlp 的外部下载器参数传递自定义选项,比如:
--external-downloader aria2c --external-downloader-args="-x 16 -s 16"
具体用法见 自定义 yt-dlp 命令模板。
继续到 mutagen 元数据引擎 看音频文件标签是怎么写进去的,或跳到 Kotlin + Jetpack Compose 了解 Seal 的 UI 技术栈。