Miru 定位与核心能力一览
一句话概括
Miru 是扩展驱动的跨平台媒体聚合客户端。它不内置任何媒体源——所有视频、漫画、小说的数据源都通过 JavaScript 扩展加载。同一套 QuickJS 引擎同时承载三类扩展,让"一个应用搞定三类内容"成为可能。
它解决了什么问题
市面上的媒体客户端通常聚焦单一场景:要么是影视播放器、要么是漫画阅读器、要么是小说 App。用户想同时追番、看漫画、刷小说,往往需要装三四个应用,各自维护自己的收藏和进度。
Miru 的思路是用扩展系统做统一抽象:
- bangumi 扩展 输出
{ type: "hls" | "mp4", url },供视频播放器消费; - manga 扩展 输出
{ urls: string[] }(图片 URL 数组),供漫画阅读器消费; - fikushon 扩展 输出
{ content: string[], title, subtitle },供小说阅读器消费。
只要扩展写对了数据格式,Miru 就能把不同源的内容无缝接入。

核心能力清单
- 多平台覆盖:Android(三种架构)、Windows(安装包 + 绿色版)、Web(功能受限)。
- QuickJS 扩展引擎:嵌入式 JavaScript 运行时,每个扩展在隔离环境里运行,带
this.request代理避免跨域。 - 三种扩展类型统一接口:bangumi / manga / fikushon,各自返回不同的数据结构,但生命周期方法相同(latest / search / detail / watch)。
- 官方扩展仓库:内置官方视频源,开箱即可用。用户也能添加自定义仓库或直接导入单个 JS 文件。
- TMDB 元数据匹配:自动拉取影片封面、简介、演员、分集名称,多语言支持。
- 播放器:0.25–2x 倍速、清晰度/线路切换、本地字幕加载、HLS 与 MP4 双协议。
- 阅读器:漫画支持多种翻页模式,小说可调整字号、行距、背景色。
- 进度自动保存:视频、漫画、小说的观看进度都会自动记录。
- 收藏与追更:将内容加入收藏列表,新一集或新章节发布时提示。
- AniList 集成:与 AniList 账号同步观看列表。
- 网络支持:HTTP、SOCKS4、SOCKS5 三种代理协议。
- 系统 UI 跟随:应用界面自动跟随系统设计语言,Android Material / Windows Fluent。
技术栈速览
| 层 | 选型 |
|---|---|
| UI 框架 | Flutter |
| 扩展引擎 | QuickJS |
| 扩展语言 | JavaScript |
| 数据元信息 | TMDB API |
| 仓库托管 | GitHub miru-project/miru-app |
| 开源协议 | AGPLv3 |
它不做什么
Miru 不提供任何媒体源或扩展——所有视频、漫画、小说的实际来源都由用户安装的扩展决定。Miru 本身只是一个"扩展宿主 + 消费端"。这也是它能同时聚合多类内容的根本原因:扩展和消费端解耦了。