NipaPlay v1.10.10 更新日志
新功能
ART-CNN 视频超分辨率 (#634)
基于 Erika Metal 引擎的实时视频超分辨率支持,提供两档质量预设(C4F16 速度模式 / C4F32 质量模式)。可在播放设置中选择模式,偏好会自动保存并在下次加载媒体时应用。播放信息菜单中可查看当前后端状态、处理帧数及编码/GPU 耗时。
播放器逐帧控制与窗口适配 (#631)
新增逐帧前进/后退按钮,默认快捷键为 E/Q/R,可在设置中自定义按键绑定。顶部控制栏新增"窗口适配视频"按钮,点击后自动调整窗口尺寸以匹配视频原始分辨率,避免画面拉伸。同一 PR 中同步修复了以下问题:音量步进因浮点累加导致的精度衰减(100%→95%→89%…);右箭头键长按变速后松键卡住不恢复;弹幕相似度引擎在处理重复字符时的断言崩溃。
备份与恢复系统全面升级 (#630)
备份/恢复功能从原有的云同步单一模式扩展为完整的全量备份方案。支持五类数据的按需勾选导出/导入:偏好设置、媒体库、观看历史、剧集匹配、账户绑定。导出和导入弹窗均显示各类数据的条目计数。恢复采用增量覆盖机制,不会删除现有数据,但冲突条目以备份内容为准。导入时自动剔除无效条目(如已不存在的本地媒体库路径)。已通过 Windows 导出、macOS 导入的跨平台测试。
C++ 原生字幕解析器 (#640)
新增基于 C++20 的原生字幕解析模块,通过 dart:fi 绑定集成,支持 AS、RT、SubViewer、MicroDVD 四种格式。内置自动编码检测与转换(BOM 识别、UTF-8 验证、多平台回退),并在 C++ 路径失败时自动回退至原 Dart 实现。
C++ 原生弹幕解析器 (#628)
新增基于 pugixml + rapidjson 的 C++ 弹幕解析器,通过 dart:ffi 暴露,同时兼容 XML 和 JSON 格式。包含 XML 实体解码、控制字符过滤,以及 C++ 返回空结果时对 Dart 原实现的防御性回退。Web 平台保持条件导出 stub,不受影响。
体验优化
弹幕渲染平滑度与性能优化(Mac / iPad /低帧率设备) (#647)
针对 macOS、iPad 及其他较低帧率设备对弹幕引擎进行了专项优化:
- 原生端插值补帧:Dart 以 30fps 提交弹幕,原生渲染器在 16ms 间隔上插值,实现 60fps 视觉平滑
- 高刷屏 Dart 提交封顶 60Hz,运动平滑交由原生补足,降低功耗
- 低帧率下 vsync 间隔过大时改为封顶而非清零,消除滚动卡顿感
- 无弹幕时跳过 MethodChannel 提交,静场功耗趋近于零
- 滚动速度按屏幕宽度归一化,大屏与小屏视觉速度保持一致
- 文字 tokenize 结果按 LRU 缓存,减少每帧重复切分开销
- 长视频每 30 秒清理超出可见窗口的布局缓存,防止内存持续增长
- 弹幕渲染超采样新增 1.5x 选项,可在性能与效果间取得平衡
- 修复倍速播放时弹幕滚动速率与播放倍速不匹配导致的抖动
弹幕搜索请求优化 (#629)
弹幕搜索 API 调用次数明显减少。所有本地、手动、Jellyfin、Emby 等来源的番剧搜索统一走共享路径,带内存缓存、持久化缓存和并发请求合并;文件识别失败的结果也会按短时效缓存,避免重复触发匹配和搜索请求。
安全提示
移除 AUR 安装入口 (#644)
Arch Linux AUR 上的 nipaplay-reload-bin 包原维护者已放弃维护,该包现已被恶意用户接管。README 已移除对应安装说明并添加安全警告,请勿通过 AUR 安装 NipaPlay。
维护与发布流程
- 修复 Linux 发行版构建中新版 Clang/C++20 下 RapidJSON 头文件的编译错误 (#635)
- 修复 macOS 构建因 freedesktop.org 反爬虫拦截导致 uchardet 下载失败,改用 Debian 镜像并验证 sha256;修复 Windows 构建因 SourceForge 插页式页面导致 mdk-sdk 解压失败,增加镜像轮询与 7z 魔数校验 (#649, #650, #651)
- CI 统一在构建前刷新 Erika 依赖的最新提交,保持构建与主干同步 (#632)
- 清理仓库中误跟踪的 IDE/缓存临时文件并补全 .gitignore 规则 (#636)
- 更新贡献文档,补充仓库目录结构说明及 Erika 内核、弹幕引擎等模块介绍 (#637, #646)
- 版本号升至 1.10.10
Contributors
@FurudeRika123, @Heylyx841, @MCDFsteve, @Shinokawa, @ddy314, @makabaka11