Skip to content

【SPW】mpris:artUrl 指向的封面文件在切歌后立即失效,外部客户端取图失败 #2249

Closed

Description

@tc1911

环境

  • Salt Player for Windows 1.18.5(Steam,appid 3009140,buildid 25418401)
  • 系统:Arch / CachyOS,Wayland(niri)
  • 消费端:桌面歌词插件与媒体控件(读取 MPRIS),读取库 playerctl 2.4.1

现象

mpris:artUrl 给出的是本地文件路径,例如
file:/home/<user>/.local/share/Salt%20Player/cache/cover_2116719806.png,
但这个文件在切歌后很快被删除 —— 缓存目录里长期只有当前这一张封面。
外部客户端只要稍微晚一点(比如插件在切歌前后重试取图)就会拿到不存在的文件。

证据

1)目录里始终只有一张(当前曲目):

$ ls -la ~/.local/share/"Salt Player"/cache/
-rw-r--r-- 1 tc191 tc191 202829 10月13日 23:13 cover_2116719806.png
drwxr-xr-x 1 tc191 tc191 109310 10月14日 20:14 shared_cover

2)之前几首歌上报过的文件名,切歌后再查已不存在:
cover_-2053424282.png、cover_1367738176.png、cover_-1041516775.png(均已被删除)。

3)消费端日志(Noctalia 的 media 面板,拿到的正是播放器自己上报的 URL):

[WRN] [media_tab] artwork load failed
  url="file:/home/tc191/.local/share/Salt%20Player/cache/cover_2116719806.png"

(第 3 条不排除客户端解转义 %20 也有问题,但 artUrl 指向的文件确实在切歌后消失,这一点是可复现的。)

期望

  • 封面缓存按最近 N 首保留(或替换后仍短暂保留),保证 mpris:artUrl 在一段时间内有效;或
  • MPRIS 侧给一个稳定路径,例如固定文件名 cover_current.png、内容原地替换,消费端就不必抢时间窗。

顺带两处 MPRIS 字段偏差(供参考,同一批)

  1. xesam:artist 是单个字符串,多歌手用 / 拼接(实测:王朝1982/朱旭BooBoo)。MPRIS 规范要求它为字符串数组;按规范取 [0] 的客户端会只拿到一个字(王),导致匹配歌词/封面失败。
  2. DesktopEntry 填的是显示名 "Salt Player",规范要求是 desktop 文件 id(本机为 com.xuncorp.voxzen);Identity 也填成了总线名形式 "salt-player",惯例是给人类可读名(如 Salt Player)。

原始元数据

$ playerctl metadata
salt-player xesam:album              江郎才尽
salt-player xesam:albumArtist        (空)
salt-player mpris:length             223600000
salt-player xesam:title              江郎才尽
salt-player xesam:artist             卦者灵风
salt-player mpris:artUrl             file:/home/tc191/.local/share/Salt%20Player/cache/cover_156949672.png
salt-player xesam:trackNumber        0
salt-player mpris:trackid            '/org/saltplayer/track/ztb4dw'
$ busctl --user get-property org.mpris.MediaPlayer2.salt-player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2 Identity
s "salt-player"
$ busctl --user get-property org.mpris.MediaPlayer2.salt-player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2 DesktopEntry
s "Salt Player"

Activity

  1. added this to the SPW 1.19 milestone on Oct 14, 2026
  2. GaodaGG commented on Oct 14, 2026

    @GaodaGG
    Collaborator

    应该是封面文件生命周期的问题,会在 1.19 中修复
    目前会在写入新封面后立即删除上一张,随后才异步发布新的元数据

    而固定文件名会导致客户端不更新封面,有些客户端在 URL 不变的情况下会继续使用缓存, 比如 KDE

  3. GaodaGG commented on Oct 15, 2026

    @GaodaGG
    Collaborator

    开发完成,预计 1.19 版本上线

  4. added
    Bug不符合业务逻辑
    已完成/待发布已在开发中修复或完成功能开发,等待发布,用以指示里程碑 若发布后依旧存在问题请重新打开
    on Oct 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Bug不符合业务逻辑WindowsSalt Player for Windows已完成/待发布已在开发中修复或完成功能开发,等待发布,用以指示里程碑 若发布后依旧存在问题请重新打开

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions