是否可以检测浏览器选项卡是否正在播放音频?

Ram*_*oya 6 javascript audio google-chrome html5-audio

我正在寻找一种方法来检测Chrome 当前标签中是否正在播放声音.我想强调的是,上下文是一个Web应用程序,而不是chrome扩展,也不是单个音频元素.我的假设是浏览器通过在选项卡标题中显示可听图标来"知道"选项卡正在播放声音,因此我猜测存在某种类型的浏览器HTML5 API.

rob*_*t-s 5

简单的回答:没有

长答案:

在这种情况下,一些什么是最好的情况。Chrome 为其浏览器提供了一个仅限开发人员使用的 API,该 API 可以连接到所连接的音频设备,但在实际环境中无法使用它。(来源)

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

Jared Sohn 还回答了一个有趣的解决方案,其原理是插件(也应该是 Web 可能的)扫描网页以查找播放音频的文件。您可以为您的网页重写类似的内容(通过获取所有可能的音频来源并单独检查它们)。(来源)

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

  • 您可以使用以下代码检查当前是否有正在播放的 HTML5 音频或视频元素: `const mediaElementIsPlaying = (el) => { return el && el.currentTime > 0 && !el.paused && !el.ending && el.readyState > 2;const audioIsPlaying = !![...document.getElementsByTagName('audio')].find((el) => mediaElementIsPlaying(el)); const videoIsPlaying = !![...document.getElementsByTagName('video')].find((el) => mediaElementIsPlaying(el));` (2认同)