如何检测 Safari 是否真的在播放带有 webkit 音频的音频文件?

问题描述

我正在开发一个用户网页,当任何用户按下按钮时都会播放声音。该系统使用 websockets 来传达谁按下了什么以及何时按下。

用户按下按钮启动声音时,它可以正常工作,并且当通过 websockets 从另一个用户接收到该声音时,该声音的未来播放可以正常工作。

当声音首先从 websockets 启动时,Safari 不会播放它,我理解这是因为它不是由用户的操作启动的。我遇到的问题是检测何时发生。

这是我的代码,从原始代码包括剪切错误处理)中截取以包含我认为只是相关部分的内容

var source = context.createBufferSource(); 
source.buffer = buffer; // tell the source which sound to play
context.createGainNode();
source.connect(volNode); 
volNode.connect(context.destination);
volNode.gain.setValueAtTime(startVol,context.currentTime);
source.loop = false;

source.onended = function () {
   console.log('Ended');
};
 
source.start();

检查 source,我无法区分何时播放声音和何时不播放。 playbackState 在两种情况下都是 1,在两种情况下体积都是 1。

有没有办法判断它是否有效?如果失败,我想向用户展示一个播放按钮。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)