Baka 的技术架构——Flutter 跨平台外壳与 mpv 硬核播放内核
整体架构
Baka 采用经典的"UI 框架 + 原生播放引擎"双层架构:
┌──────────────────────────────────────┐
│ Flutter 跨平台 UI 层 │
│ 毛玻璃主题 · 深浅色模式 · 流畅动效 │
├──────────────────────────────────────┤
│ 业务逻辑层(Dart) │
│ 多源聚合 · 脚本适配器 · 弹幕管理 │
│ 下载引擎 · 数据同步 · 收藏夹 │
├──────────────────────────────────────┤
│ 播放引擎层(media_kit / libmpv) │
│ 4K/H.265/10bit 硬解 · Anime4K 着色器 │
│ 字幕渲染 · 音轨切换 · 弹幕覆盖层 │
└──────────────────────────────────────┘
Flutter UI 层
Flutter 负责整个应用的 UI 渲染和交互逻辑,优势在于:
- 一致的视觉体验:Android、iOS、桌面端使用同一套代码渲染,减少平台差异化 bug。
- 毛玻璃效果实现:Flutter 的 BackdropFilter 和 ImageFilter.blur 可以较方便地实现毛玻璃(Glassmorphism)效果,这在原生 UI 框架中反而需要更多工作。
- 流畅动画:Flutter 的动画系统性能优秀,页面跳转、列表滚动、交互反馈都能达到 60fps。
media_kit 播放引擎
Baka 没有自己从零写解码器,而是基于 media_kit——一个 Flutter 生态中对 libmpv 的封装层。这样做的好处是直接继承了 mpv 的工业级能力:
- 广泛的格式支持:mpv 几乎支持所有主流视频编码(H.264、H.265/HEVC、AV1、VP9)和容器格式(MP4、MKV、WebM、TS)。
- 硬件解码加速:在支持的设备上自动启用硬解,降低 CPU 占用、延长续航。
- Anime4K 着色器集成:mpv 的着色器系统可以直接加载 Anime4K 的 GLSL 文件,实现实时超分辨率处理。
- 高级字幕渲染:支持 ASS/SRT/VTT 等多种字幕格式,复杂的 ASS 字幕效果都能正确渲染。
脚本适配器机制
动态脚本系统是 Baka 架构中最有特色的部分。它允许用户加载 JavaScript 或 JSON 格式的适配器脚本来扩展新的番剧源。这一层独立于 UI 和播放引擎,通过统一接口调用,类似浏览器的扩展插件机制。
脚本机制的存在让 Baka 的内容来源不再受限于官方内置的几个源——社区可以持续贡献新脚本,用户可以按需加载。
开源与可追溯
Baka 以 GPL-3.0 协议开源,代码托管在 GitHub。这意味着整个架构的每一层都可以被审查和二次开发,不存在功能黑盒。对于在意隐私和可追溯性的用户,这一点比闭源播放器有优势。