如何判断播放HTML5音频是否真的是在制造声音

How to determine if playing HTML5 audio is actually making sound?

本文关键字:真的 是否 声音 制造 音频 HTML5 何判断 判断 播放      更新时间:2023-09-26

对于我正在工作的项目的目的,我想通过JS控制台找出如果

你可以通过输入

找到该元素
$$("audio")[0] 

我使用了以下代码(改编自我在搜索过程中找到的这个jsfiddle)来显示何时调用不同的事件侦听器:

var audio = $$("audio")[0]; 
var events = 'abort,canplay,canplaythrough,durationchange,emptied,ended,error,loadeddata,loadedmetadata,loadstart,pause,play,playing,progress,ratechange,seeked,seeking,stalled,suspend,timeupdate,volumechange,waiting'.split(',');
// event handler
var onEvent = function(e) {
    console.log(e.type);
};
// add event listener to audio for all events
for (var i = 0, len = events.length; i < len; i++) {
    audio.addEventListener(events[i], onEvent, false);
}

然后输入:

播放音频
$$("audio")[0].play();

如果我检查$$("audio")[0]。暂停时,它会显示false,但我还没有找到任何属性或事件来指示它是否播放声音。(我不希望它在这里,因为我不认为它有音频数据播放,但如果有一种方法来检查,我可以比较它与音频元素播放声音。)

另外,我试着从隐身标签给自己发了一条消息,没有看到这种情况发生的痕迹。(我假设音频元素用于此。)

感谢帮助

要检查页面上是否播放过HTMLMediaElement(视频或音频),最好的解决方案是检查其played属性。

这将返回一个TimeRanges对象,您也可以使用它来获得播放了多少媒体。

如果它从未被播放过,那么这个TimeRanges对象的length属性将被设置为0:

if(audioElement.played.length){
  // This media has already been played
}else{
  // Never
}