gpt4 book ai didi

javascript - Electron - 如何控制系统媒体(播放/暂停)?

转载 作者:行者123 更新时间:2023-12-03 01:21:59 28 4
gpt4 key购买 nike

我目前正在构建一个具有媒体控制功能的 Electron 应用程序。例如,Mac 上的触控栏能够自动检测正在播放音频的应用程序,并让您播放/暂停、跳过甚至搜索音频。这适用于 Spotify、Quicktime 甚至浏览器中的网站,例如 Google Chrome 上的 YouTube 标签。 Windows 在其媒体控件中也有自己的版本。

有没有办法让 Electron 以相同的方式访问有关当前播放音轨的元数据? 如果没有,我该如何使用 native API 来执行此操作?我尝试在 AppleScript 中查找如何执行此操作,但找不到任何内容。

最佳答案

您可以使用 Media Session API .
要更改元数据:

navigator.mediaSession.metadata = new MediaMetadata({
title: "Title",
artist: "Artist",
album: "Album",
artwork: [
{ src: "example.com", sizes: "192x192", type: "image/png" }
]
});

捕捉媒体事件:
您可以将回调设置为 null禁用事件,这可能会使相应的按钮变灰。
navigator.mediaSession.setActionHandler("seekto", (seekInfo) => {
console.log(`seek to ${seekInfo.seekTime} seconds!`)
} });
navigator.mediaSession.setActionHandler("play", () => {} });
navigator.mediaSession.setActionHandler("pause", () => {} });
navigator.mediaSession.setActionHandler("seekbackward", () => {} });
navigator.mediaSession.setActionHandler("seekforward", () => {} });
navigator.mediaSession.setActionHandler("previoustrack", () => {} });
navigator.mediaSession.setActionHandler("nexttrack", () => {} });
navigator.mediaSession.setActionHandler("skipad", () => {} });
navigator.mediaSession.setActionHandler("stop", () => {} });
navigator.mediaSession.setActionHandler("togglemicrophone", () => {} });
navigator.mediaSession.setActionHandler("togglecamera", () => {} });
navigator.mediaSession.setActionHandler("hangup", () => {} });
更改媒体持续时间以及是否正在播放:
navigator.mediaSession.playbackState = "playing";
navigator.mediaSession.playbackState = "paused";

navigator.mediaSession.setPositionState({ position: 30, duration: 60 }) // 0:30 / 1:00
请记住,您需要播放媒体(声音/视频)才能显示媒体控件。

关于javascript - Electron - 如何控制系统媒体(播放/暂停)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60987650/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com