Skip to content

feat(player): support local video playback#2052

Open
crazyname wants to merge 6 commits into
Predidit:mainfrom
crazyname:feature/local-video-playback
Open

feat(player): support local video playback#2052
crazyname wants to merge 6 commits into
Predidit:mainfrom
crazyname:feature/local-video-playback

Conversation

@crazyname
Copy link
Copy Markdown

@crazyname crazyname commented May 6, 2026

支持从本地选择视频文件并使用 Kazumi 播放器直接播放。本地视频可以手动绑定 Bangumi 条目和集数,也可以跳过绑定作为独立本地视频播放。

Kazumi 不会根据文件名自动推断或搜索 Bangumi 条目,绑定流程完全由用户手动选择。

Closes #710

行为变化:

  • 新增“打开本地视频”入口,本地文件使用文件路径直接播放。
  • 本地视频播放不会触发插件解析,也不会请求在线播放地址。
  • 支持手动搜索 Bangumi、选择条目和集数后绑定本地视频。
  • 绑定仅保存在本地,不要求登录 Bangumi。
  • 已绑定本地视频可复用所选 Bangumi 条目和集数加载弹幕。
  • 未绑定本地视频会隐藏追番、收藏、下载、番剧详情、换源、选集、Bangumi 弹幕等依赖 Bangumi 的入口。
  • 播放器内支持为未绑定的本地视频后续补充绑定。
  • 本地播放历史会记录本地文件路径、文件名、集数和播放进度。
  • 未绑定历史显示文件名和“本地”;已绑定历史显示文件名、集数和“本地”。
  • 从历史重新打开本地视频时会检查文件是否存在;文件缺失时显示“本地文件不存在或已移动”。
  • 修复播放器和弹层销毁过程中的焦点、Overlay、重复 GlobalKey、0 尺寸视频纹理、超大布局溢出和图片缓存尺寸断言问题。

验证:

  • 已运行代码生成。
  • 已运行格式化。
  • 目标静态检查无 error,仅有项目既有 info。
  • 全局静态检查无 error,仅有项目既有 info。
  • 全量测试通过。
  • 已手动确认本地视频独立播放、绑定播放、历史恢复、文件缺失提示和播放器弹层切换稳定性。

@Predidit
Copy link
Copy Markdown
Owner

Predidit commented May 6, 2026

感谢你的工作,主要有如下两个问题

  1. 本地播放功能的实现相当粗糙,体现在几乎完全不兼容现有模块,例如自动弹幕检索,历史记录,追番与收藏
  2. 此PR同时实现了弹幕时间轴调整功能,一个PR应该只做一件事,我们也许可以考虑将弹幕时间轴调整拆分出来作为单独PR,弹幕时间轴的实现也更成熟一些

@crazyname crazyname force-pushed the feature/local-video-playback branch from 4e2bb73 to 4c92c47 Compare May 7, 2026 06:22
@crazyname
Copy link
Copy Markdown
Author

感谢您之前的建议和反馈。本次更新补充了本地视频播放入口,支持直接播放未绑定的本地视频,也支持手动搜索 Bangumi 后绑定条目和集数再播放。绑定仅保存在本地,不会自动根据文件名匹配番剧,也不会触发插件解析或请求在线播放地址。

同时也补充了本地视频历史记录、文件缺失提示,并修复了播放器和弹层切换时的一些稳定性问题。辛苦再帮忙看一下,谢谢。

@Predidit
Copy link
Copy Markdown
Owner

Predidit commented May 7, 2026

就像上面提到的那样,我们可以考虑把弹幕时间轴部分拆出来单独PR吗

@crazyname
Copy link
Copy Markdown
Author

crazyname commented May 8, 2026

抱歉,上一次处理时我没有把已经写入的弹幕时间轴相关代码 diff 完全清理掉。
这次我已经继续清理了残留改动:danmaku_settings_sheet.dart 中与本地视频无关的弹幕设置改动已恢复到 upstream/main 一致。
感谢提醒,辛苦再帮忙看一下。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

能否加入本地视频播放

2 participants