【问题标题】:Is it possible to detect whether a browser tab is playing audio or not?是否可以检测浏览器选项卡是否正在播放音频?
【发布时间】:2017-03-14 09:41:00
【问题描述】:

我正在寻找一种方法来检测 Chrome 的当前标签中是否正在播放声音。我想强调一下,上下文是一个网络应用程序,不是 chrome 扩展程序,也不是单个音频元素。我的假设是浏览器通过在选项卡标题中显示一个声音图标“知道”选项卡正在播放声音,所以我猜测有某种浏览器 HTML5 API。

【问题讨论】:

    标签: javascript google-chrome audio html5-audio


    【解决方案1】:

    简单回答:

    长答案:

    Some-what-ish 在这种情况下是最好的情况。 Chrome 的浏览器有一个仅用于开发的 API,它可以连接连接的音频设备,但不可能在真实环境中使用它。 (source)

    提供 chrome.audio API 让用户获取信息 关于和控制连接到系统的音频设备。这个 API 目前仅针对 ChromeOS 实施。

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

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

    【讨论】:

    • 您可以使用以下代码检查当前是否有正在播放的 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));
    猜你喜欢
    • 2015-06-20
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多