Skip to content

将 MediaSession 播放状态绑定在播放器上#164

Merged
YUCLing merged 2 commits into
mainfrom
chore/lock-media-session-to-player
Jun 12, 2026
Merged

将 MediaSession 播放状态绑定在播放器上#164
YUCLing merged 2 commits into
mainfrom
chore/lock-media-session-to-player

Conversation

@YUCLing

@YUCLing YUCLing commented Jun 12, 2026

Copy link
Copy Markdown
Owner

避免在播放 MV 的时候播放状态和媒体信息不一致

@greptile-apps

greptile-apps Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

此 PR 将 MediaSession 的播放状态与位置信息同步逻辑从外部迁移到 audio 元素的原生事件上,解决了播放 MV 时播放状态与媒体信息不一致的问题。同时新增了 seektoseekforwardseekbackward 三个 MediaSession 动作处理器,并对 stopProgressRaf 进行小幅重构。

  • 播放状态(playbackState)现在由 play/playing/pause/stalled 等原生事件驱动,updatePositionState 已正确防护 NaN/Infinity 时长。
  • 新增的 seek 动作处理器使用 ?? 运算符处理了 null/undefinedseekOffset,逻辑基本健壮。
  • PLAYING_EVENTS / HALTED_EVENTS 常量提取避免了重复字面量,代码可读性提升。

Confidence Score: 5/5

改动范围局限于 MediaSession 绑定逻辑,不影响核心音频播放流程,可安全合并。

本次改动将 MediaSession 状态同步从外部逻辑移入 audio 元素事件监听,逻辑路径清晰,NaN/Infinity duration 防护正确,seek 动作处理器的空值处理也已通过 ?? 运算符覆盖。唯一值得关注的是 seekto 对 Infinity 的防护缺失,但实际 OS 发出非有限 seekTime 的概率极低,不构成现实风险。

无需特别关注,所有改动均在 src/preload/audioplayer.ts 中,且变更范围可控。

Important Files Changed

Filename Overview
src/preload/audioplayer.ts 将 MediaSession 播放状态及位置同步绑定到 audio 元素事件,新增 seekto/seekforward/seekbackward 动作处理,重构 stopProgressRaf 并提取事件名常量。NaN/Infinity duration 防护已到位,seekto 对非有限数(如 Infinity)的防护略有不足。

Reviews (2): Last reviewed commit: "fix/player: mediaSession complicant" | Re-trigger Greptile

Comment thread src/preload/audioplayer.ts
Comment thread src/preload/audioplayer.ts
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@YUCLing YUCLing merged commit 3aeb1c2 into main Jun 12, 2026
8 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Open Orpheus Development Jun 12, 2026
@YUCLing YUCLing deleted the chore/lock-media-session-to-player branch June 12, 2026 10:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant