seal 中文文档 下载 App

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 技术栈。