如何检测Chrome标签页是否正在播放音频?

9
我想在特定的标签页上执行控制台命令,并在该标签页正在播放音频时收到布尔答案。 (通常在标签页标题附近显示为小扬声器图标)
这可以实现吗?
2个回答

9
您可以使用Chrome扩展程序中的chrome.tabs API检测Chrome标签是否正在播放音频。该API提供了一个布尔属性audible,如下所述:

该选项卡在过去几秒钟内是否产生声音(但如果也被静音,则可能听不到)。相当于扬声器音频指示器是否显示。

来源: https://developer.chrome.com/extensions/tabs 无法从控制台本身访问选项卡,因为它是从当前页面的上下文中运行的。在Chrome扩展程序的后台页面中,您可以访问所有选项卡,并使用上面概述的API查询它们。您的扩展程序只需提供一个面板,显示所有打开的选项卡列表和播放音频的标志。
此外:如果您只想使用Chrome控制台快速将HTML5音频/视频静音,请运行以下命令($$等同于document.querySelectorAll()):
$$('video', 'audio').forEach((element) => element.muted = true);

谢谢伙计! 我的意图是找出选项卡是否正在播放音乐,以便小型分析应用程序可以检测控制台错误,并且客户想知道是否已将音频加载到给定的URL。 我将尝试使用chrome.tabs API。 - Omer H

6
也许像这样的代码可以解决你的问题: !!Array.prototype.find.call(document.querySelectorAll('audio,video'),function(elem){return elem.duration > 0 && !elem.paused}) 它可以检测当前正在播放的音频和视频元素,而且可以在各种浏览器上正常运行。

无法检测,因为音频正在从JavaScript音频对象播放。 - Ameer Hamza

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