You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Electron、NPM或CLI工具获取电脑当前播放媒体信息?

实现类似旧版Windows媒体弹窗的方案

针对你开发的显示当前播放媒体名称、封面的Electron应用需求,以下是可落地的实现思路:

Windows平台核心方案

Windows系统原生的System Media Transport Controls (SMTC) 是获取媒体信息的关键,以下几种方式都能实现:

1. Electron集成原生API调用

  • 用ffi-napi或win32-api这类NPM库,直接调用Windows系统DLL封装的SMTC接口,获取当前媒体会话的标题、艺术家、封面URI等数据。
  • 若不想手动封装,可尝试基于windows-media-session这类轻量NPM包扩展,它已封装了SMTC的基础功能。

2. CLI/PowerShell辅助

通过Electron的child_process模块执行PowerShell命令,快速获取媒体信息:

$session = Get-SystemMediaTransportControlsSession; if ($session) { $session.GetMediaProperties() | ConvertTo-Json }

返回的JSON数据包含完整媒体属性,其中封面URI多为ms-appx://或file://格式,可直接转换为Electron能加载的图片路径。

3. 第三方工具适配

参考你提到的壁纸引擎媒体集成逻辑,它本质也是调用SMTC接口。你可以逆向其逻辑,或基于同类工具的实现思路做适配,原生方案更能保证稳定性。

跨平台扩展(可选)

如果需要支持macOS/Linux:

  • macOS:通过child_process执行AppleScript,获取主流播放器(Spotify、Safari等)的播放信息:
tell application "Spotify" to get {name, artist, album artwork url} of current track
  • Linux:基于MPRIS规范,使用mpris-client NPM包或mpris-ctl CLI工具,获取桌面环境下的媒体播放数据。

弹窗UI实现

在Electron中创建模拟旧版Windows音量弹窗的窗口:

  • 配置BrowserWindow参数:frame: false(无边框)、alwaysOnTop: true(置顶)、transparent: true(可选半透明)。
  • 监听媒体信息变化,实时更新窗口内的标题文本和封面图片。
  • 添加自动隐藏逻辑,比如检测到媒体暂停或无操作3秒后调用window.hide()。

内容的提问来源于stack exchange,提问作者wreper 12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:52:39