Baka 是使用 Flutter 开发的多端媒体客户端,通过规则驱动的视频源系统完成搜索、详情和播放解析,并提供弹幕、字幕、离线缓存、投屏及本地媒体库等功能。
本仓库包含完整源代码。Baka 本身不托管、不上传、不存储或分发视频内容,规则所访问的内容及服务由对应第三方提供。
- 规则驱动的视频源、规则订阅库和自定义规则
- 基于
media_kit的播放器,支持选集、换源、倍速、字幕和播放进度 - 弹幕加载、发送、屏蔽与本地弹幕文件
- MP4/HLS 离线缓存及下载任务管理
- Magnet、Torrent 下载与边下边播
- DLNA 投屏
- 本地文件夹和 WebDAV 媒体库
- 本地播放历史及登录后的历史同步
- Windows、Android、macOS、iOS 和 Android TV 界面
- Windows Anime4K 实时画质增强
- Windows DLSS 5 实验性视频增强,实验室开关可为所有内置播放启用 NVIDIA 神经渲染、2 倍超分与帧生成,仅作用于内置播放器
内置规则随应用打包,社区规则由 AniBakaRule 维护并通过规则中心获取。
预构建版本发布在 GitHub Releases。请根据系统和 CPU 架构选择对应安装包。
iOS 构建产物未签名,需要自行签名后安装。不同系统的发行包和签名状态以具体 Release 说明为准。
Windows 发行产物使用 SignPath.io 完成代码签名,证书由 SignPath Foundation 提供。
Free code signing on Windows is provided by SignPath.io, with a certificate issued by the SignPath Foundation.
- Flutter
3.44.9,项目通过.fvmrc固定版本,建议使用 FVM - Dart
>=3.8.0 <=4.0.0 - 对应目标平台的 Flutter 桌面或移动端开发工具链
- Android 构建需要 JDK 17 和 Android SDK 36
git clone https://github.com/AniBakaBaka/AniBaka.git
cd AniBaka
fvm install
fvm flutter pub get
fvm flutter run不使用 FVM 时,请确保当前 Flutter 版本与 .fvmrc 一致,然后将命令中的 fvm 前缀移除。
# Android
fvm flutter build apk --release
# Windows
fvm flutter build windows --release
# macOS
fvm flutter build macos --release
# iOS(无签名)
fvm flutter build ios --release --no-codesign仓库的 GitHub Actions 使用 Fastforge 生成多平台发行包,配置见 distribute_options.yaml。
media_kit_video 和 screen_brightness 通过 pub 的 Git 依赖引用组织 fork,
pubspec.yaml 固定提交,pubspec.lock 记录解析结果。运行 fvm flutter pub get
即可获取,无需复制 third_party 或修改 Pub 缓存。
- media-kit:
Windows 播放器增强补丁;主项目 CMake 启用
MEDIA_KIT_VIDEO_ENABLE_DLSS, 并提供windows/runner/dlss_realtime中的 GPU 后端。 - screen_brightness: 移除 Windows 亮度插件注册,保留上游 Dart API 和其他平台实现。
更新补丁时,先合并到对应 fork 的 main,再更新 pubspec.yaml 的 ref 并运行
fvm flutter pub get,同时提交锁文件。两个仓库保留上游 fork 关系。
内置源与规则库使用相同的 anx-rulehub/2 整数 rev,独立于 App 版本。
更新内置源时,从规则库同时同步规则文件和版本清单,不要单独修改版本号:
dart run tool/sync_bundled_rules.dart ../AniBakaRule
dart run tool/sync_bundled_rules.dart ../AniBakaRule --check同步结果保存在 assets/rules/;index.json 记录对应版本及内容摘要,
测试会检查版本清单与打包内容是否匹配。规则库未登记的内置源使用 rev: 0。
fvm flutter analyze
fvm flutter test测试按核心逻辑、服务和用户交互整理在 test/core/、test/services/、
test/features/。保留范围和维护约定见 测试说明。
第三方站点接口和页面结构可能随时变化。修改规则时,请至少验证搜索、详情、播放清单及实际媒体分片。
欢迎提交 Issue 和 Pull Request:
- 将功能改动保持在明确范围内,避免无关格式化或生成文件变更。
- 新增功能应尽量补充测试。
- 提交前运行静态分析和相关测试。
- 视频源失效问题请附上规则名称、复现关键词和失败阶段,不要提交个人 Cookie、Token 或其他敏感数据。
应用每次启动时会向 https://dau.anibaka.com/track 发送一个匿名安装标识,用于统计各平台的日活跃安装量。该标识由应用首次运行时使用安全随机数在本地生成,格式为 install_<platform>_<random>,保存在本地设置中并在后续启动时复用;上报内容不包含账号 Token、用户名或设备硬件标识。对应实现位于 lib/services/dau_tracker.dart。
其他主要网络端点如下:
www.anibaka.com:默认社区 API;可在应用的服务器设置中替换。version.anibaka.com、app.anibaka.com:版本与下载信息。bgm.anibaka.com、p1.anibaka.com:Bangumi 元数据代理。gh.dpik.top/https://raw.githubusercontent.com/AniBakaBaka/AniBakaRule:默认使用 GitHub 加速节点,失败时依次回退到 jsDelivr 和 GitHub。- 各规则文件声明的第三方站点:仅在搜索、查看详情或播放等对应操作时访问。
使用者可通过源码审查具体请求及数据字段。登录、评论、历史同步等功能会向所选社区服务器发送完成相应操作所需的数据。
本项目是通用媒体播放与规则解析工具,不提供内容授权。使用者应自行确认所访问内容、站点和网络服务符合所在地法律法规及相应服务条款。
项目按 GPLv3 的“无担保”条款提供。第三方站点的可用性、内容准确性、安全性和版权状态不受本项目控制。
在播放器设置中开启“智能跳过”,按当前剧集的 OP/ED 区间跳到终点。无数据、 身份不明确或版本不匹配时保持正常播放;跳过后可在 5 秒内撤销,片尾后的彩蛋继续播放。 自动绑定使用播放资料中已有的 Bangumi ID 和明确集数;只有标题搜索结果或合集编号时, 请先在标注面板绑定具体剧集。
公共时间戳来自 AniSkip,通过 BangumiExtLinker 关联 MAL 条目。仅在条目、集数明确且 实际时长与参考时长相差不超过 2 秒时自动使用。相同总时长仍可能对应不同剪辑版本, 可在“标注与校正片头片尾”中更正或关闭当前片源的片头/片尾跳过。
手动标注保存在本机;登录后可以主动共享。其他两位用户确认后用于当前片源自动跳过, 两位用户报错后暂停使用。切换片源、线路或 HLS 去广告结果会重新匹配;过滤后的时间轴 只使用该版本上确认的标注。新接口需要配套后端,旧服务器仍可使用本机标注。
查询通过所选社区服务器完成,发送 Bangumi 条目和剧集 ID、视频时长、片源摘要及 时间轴摘要,不发送播放地址、请求头或本地文件路径。提交与反馈需登录,并关联提交账号。 服务器向 AniSkip 查询 MAL 条目、集数及视频时长,并定期更新 BangumiExtLinker 映射。
- Flutter — 跨平台 UI 框架
- media_kit — 媒体播放框架
- GetX — 状态与依赖管理
- Hive — 本地数据存储
- Anime4K — 动漫画质增强着色器
- 弹弹Play — 弹幕 API 服务
- AniSkip — 社区贡献的片头、片尾时间戳服务
- Rhilip / BangumiExtLinker — Bangumi 与 MyAnimeList 条目映射数据(CC BY 4.0);服务端提取所需 ID,并允许独立的逐集校正
- 感谢提交、确认和纠正片头片尾区间的社区用户
除单独标注的第三方组件和资产外,本项目以 GNU General Public License v3.0 发布,对应 SPDX 标识为 GPL-3.0-only。
依赖、第三方源码和资产继续适用其各自许可证及版权声明,仓库内直接包含的第三方材料见 THIRD_PARTY_NOTICES.md。






