Skip to content

feat(external-player-console): 弹幕控制台新功能追加·其二#748

Merged
MCDFsteve merged 21 commits into
AimesSoft:mainfrom
Kuuhaku31:feat/external-player-console/danmaku
Jul 17, 2026
Merged

feat(external-player-console): 弹幕控制台新功能追加·其二#748
MCDFsteve merged 21 commits into
AimesSoft:mainfrom
Kuuhaku31:feat/external-player-console/danmaku

Conversation

@Kuuhaku31

@Kuuhaku31 Kuuhaku31 commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

预计添加的新功能

  • 播放控制
    • 播放/暂停键
    • 播放进度条和 mpv 播放器关联
    • 输入时间戳精确跳转
  • 弹幕列表
    • 列出所有弹幕
    • 展示当前活跃弹幕
  • 弹幕样式
    • 弹幕透明度实时调节
    • 弹幕描边粗细调节
  • 弹幕屏蔽
    • 根据弹幕发送者id屏蔽
    • 关键词屏蔽
    • 正则表达式屏蔽

以上部分功能还在绝赞开发中

备注

以上功能目前只支持 Linux + mpv 播放器,
不过本次修改了相关结构,
未来可以很方便的扩展到其他平台和播放器(交给有缘人).

其他细节

外部播放器控制台

  • 展示当前媒体, 番剧, 剧集和播放进度信息.
  • 支持暂停/继续播放和精确跳转.
  • 根据 mpv 播放位置实时计算并展示当前活跃弹幕.
  • 展示弹幕发送者身份标识, 同时移除容易造成混淆的弹幕来源标签.
  • 支持启动外部播放器后自动切换到弹幕控制台.

弹幕样式热更新

  • ExternalPlayerConsoleService 统一维护 DanmakuItem 列表, ASS 设置, 透明度和描边状态.
  • 调整透明度或描边后, 以源弹幕列表重新生成 ASS, 并通过 mpv Lua 脚本热重载字幕轨.
  • 串行处理连续样式更新, 避免多个任务并发写入同一个 ASS 文件.
  • 修复初始关闭描边时无法从控制台重新启用的问题: 重新启用时使用可恢复的原始样式/宽度, 缺少可恢复配置时回退到 stroke + 1.0.

弹幕模型与 ASS 转换

  • 使用 DanmakuItem 作为 ASS 生成和控制台展示的统一数据模型.
  • 保留并解析发送者身份等弹幕元数据.
  • 删除 AssDanmakuEvent, DanmakuAssConversionResult, ExternalPlayerDanmakuItem 以及不再需要的 WithEvents API.
  • ASS 转换接口直接返回字符串, 降低转换结果和控制台状态之间的重复建模.
  • 新增外部播放器 ASS 生成入口, 优先使用 DFM+ 布局, 失败时回退到经典算法.

进程生命周期与平台兼容性

  • ExternalPlayerSession 负责外部播放器的创建, 终止和进程状态管理.
  • Linux mpv Session 额外负责 IPC socket, 播放状态轮询, ASS 刷新和退出清理.
  • ExternalPlayerConsoleService 只维护控制台业务状态, 并监听 Session 的关闭状态.
  • Windows 继续支持 .lnk 和普通可执行文件: macOS 继续支持 .app, 普通可执行文件和 security bookmark: Linux 继续以独立进程启动播放器.
  • 保留 mpv, mpv.net, PotPlayer, VLC 和 generic 播放器原有的 ASS/Lua 参数注入方式.
  • 仅当 Platform.isLinux && session.type == ExternalPlayerType.mpv 时注册弹幕控制台: 控制台服务自身也会拒绝其他平台或播放器类型.

@Kuuhaku31
Kuuhaku31 force-pushed the feat/external-player-console/danmaku branch from 25f2ff2 to a9c84a4 Compare July 17, 2026 07:09
@Kuuhaku31
Kuuhaku31 force-pushed the feat/external-player-console/danmaku branch from 3405289 to 953d3a3 Compare July 17, 2026 08:09
@Kuuhaku31
Kuuhaku31 marked this pull request as ready for review July 17, 2026 08:10
@Kuuhaku31
Kuuhaku31 requested a review from a team as a code owner July 17, 2026 08:10
@MCDFsteve
MCDFsteve merged commit 7f555b6 into AimesSoft:main Jul 17, 2026
4 checks passed
@Kuuhaku31
Kuuhaku31 deleted the feat/external-player-console/danmaku branch July 18, 2026 05:56
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