是否可能检测浏览器标签页是否正在播放音频?

10

我正在寻找一种方法来检测Chrome的当前选项卡是否正在播放声音。我想强调的是,上下文是Web应用程序,而不是Chrome扩展或单个音频元素。我的假设是浏览器通过在选项卡标题中显示一个可听的图标来“知道”该选项卡正在播放声音,因此我猜测有一些浏览器HTML5 API可以做到这一点。

1个回答

5

简短回答:不行

详细回答:

在这种情况下,可能有一些可行的方法。Chrome浏览器有一个仅供开发人员使用的API,用于连接音频设备,但无法在实际环境中使用。 (来源)

提供chrome.audio API以允许用户获取有关系统上连接的音频设备的信息并对其进行控制。目前仅为ChromeOS实现此API。

Jared Sohn提供了一个有趣的解决方案,即插件(也应该适用于Web)扫描正在播放音频的网页。您可以为您的网页重写类似的代码(通过抓取所有可能的音频源并逐个检查它们)。 (来源)

也许最接近的方法是类似于MuteTab Chrome扩展程序所做的事情(由我编写, http://www.github.com/jaredsohn/mutetab),基本上扫描页面以查找对象、嵌入、音频、视频和applet标签,并将它们从页面中隐藏。不幸的是,这会错过Web音频。


2
你可以使用以下代码检查当前是否播放 HTML5 音频或视频元素:const mediaElementIsPlaying = (el) => { return el && el.currentTime > 0 && !el.paused && !el.ended && el.readyState > 2; } const audioIsPlaying = !![...document.getElementsByTagName('audio')].find((el) => mediaElementIsPlaying(el)); const videoIsPlaying = !![...document.getElementsByTagName('video')].find((el) => mediaElementIsPlaying(el)); - Motin
@Motin 如果使用播放器控件(如“静音”按钮)将video元素静音,那么这个答案就不起作用。 - aikind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接