如何创建一个秒计数器,每分钟发出哔哔声

时间:2019-01-20 23:46:29

标签: javascript

我想在网络浏览器上每分钟产生一次“哔”声。

对于“每分钟”,我依靠setInterval(),因为有一个秒计数器,我想每秒更新第二个计数器。我非常了解发生的非实时计时事实,但是在这种情况下这没什么大不了的。

真正的交易每隔59秒就会产生一则简短的通知声音。

我目前正在使用音频API。

如下

a=new AudioContext();    
function pitar(volumen, frecuencia, duracion){
  v=a.createOscillator()
  u=a.createGain()
  v.connect(u)
  v.frequency.value=frecuencia
  v.type="square"
  u.connect(a.destination)
  u.gain.value=volumen*0.01
  v.start(a.currentTime)
  v.stop(a.currentTime+duracion*0.001)
}   

pitar(999,220,300);

出了什么问题?

这在Safari上不起作用。

这不适用于iOS上的chrome。

特定错误

针对Chrome的控制台日志说:“不允许启动AudioContext。必须在用户在页面上进行手势操作后恢复(或创建)AudioContext。”

它基本上可以在Firefox上正常工作。

我尝试通过检查AudioContext在当前浏览器中是否可用,并在不可用时使用base64编码的mp3蜂鸣声来做到这一点,按照这种较旧的方法:

How do I make JavaScript beep?

但是,如果没有用户交互(例如,点击页面上的某处),它仍然无法工作。

我可以通过以下方式迫使用户单击一次,方法是说一个类似“嘿,让我们开始”的按钮。

但这将仅允许第一次单击,而不会每隔一分钟启用一次。

我曾考虑过创建一个一分钟的音频文件,其中包括1秒钟的哔哔声和59秒钟的静音时间,然后在重放时播放。但是,即使那样也会有问题,因为蜂鸣声不会与计数器同步。

另一种解决方案是录制视频并循环播放。

关于这个问题-Play infinitely looping video on-load in HTML5-由于自动播放功能在某些浏览器上需要静音,因此它也将不起作用。

有什么方法可以隐藏控制器并创建自定义的javascript播放按钮?

还是您知道实现此目标的更好方法?

0 个答案:

没有答案