Baka 中文文档 下载 App

多线程并发下载引擎——边下边播还能断点续传

下载引擎架构

Baka 的下载功能不是简单的 HTTP 请求,而是一个独立的多线程下载引擎:

┌─────────────────────────────────┐
│      下载任务调度器               │  管理多个下载任务的排队与优先级
├─────────────────────────────────┤
│      多线程下载器(分块)         │  将大文件切成小块,多线程同时下载
├─────────────────────────────────┤
│      断点续传管理器               │  记录每个块的下载进度,断电可恢复
├─────────────────────────────────┤
│      边下边播接口                 │  下载同时 mpv 可以边下边播
└─────────────────────────────────┘

为什么用多线程

传统单线程下载的瓶颈:

多线程的改进:

下载速度的影响因素

因素影响说明
源站带宽最大瓶颈番剧源服务器的上行带宽
你的网速硬上限家庭宽带 / 移动网络的下行带宽
线程数有上限超过 8~16 线程后收益递减
服务器限流显著部分番剧源对下载请求有限速
CDN 节点间接影响离你近的 CDN 节点速度快

实际速度参考:

边下边播

Baka 支持"边下边播"模式——即使下载还没完成,也可以开始观看:

  1. 下载引擎先缓冲一小段数据(约 10~30 秒)
  2. 通知播放器可以开始播放
  3. 下载继续进行,播放器同时读取已下载的数据块
  4. 如果下载速度跟不上播放速度,播放器会暂停等待缓冲

优点:

缺点:

下载队列管理

可以同时管理多个下载任务:

下载失败的重试

Baka 的下载引擎有自动重试机制: