我从一个网站上获得了此代码段(现在不记得在哪里),它已经停止工作。

我用它来播放声音。

是我做错了还是Chrome最近更改了?

 Play = (function () { var ctx = new(window.audioContext || window.webkitAudioContext); return function (duration, freq, finishedCallback) { duration = +duration; if (typeof finishedCallback != "function") { finishedCallback = function () {}; } var osc = ctx.createOscillator(); osc.type = 0; osc.connect(ctx.destination); osc.frequency.value = freq; osc.noteOn(0); setTimeout( function () { osc.noteOff(0); finishedCallback(); } ,duration ); }; })(); Play(50,500) 

#1楼 票数:5 已采纳

这里有两个问题-没有audioContext (小“ a”,虽然目前不影响Chrome)。 只需将其更改为:

var ctx = new (window.AudioContext || window.webkitAudioContext);

添加对start()的支持,这是更新的方法。 有几种方法可以执行此操作,这是一个基本示例:

if (osc.start) {
    osc.start(0);
}
else {
    osc.noteOn(0);
}

(当然还有osc.noteOff(0) osc.stop(0)

 Play = (function() { var ctx = new(AudioContext || webkitAudioContext); return function(duration, freq, finishedCallback) { duration = +duration; if (typeof finishedCallback != "function") { finishedCallback = function() {}; } var osc = ctx.createOscillator(); osc.type = 0; osc.connect(ctx.destination); osc.frequency.value = freq; if (osc.start) osc.start(); else osc.noteOn(0); setTimeout( function() { if (osc.stop) osc.stop(0); else osc.noteOff(0); finishedCallback(); }, duration ); }; })(); Play(50, 500) 

  ask by Phillip Senn translate from so

未解决问题?本站智能推荐:

4回复

带有音频标签的 Safari 不起作用

我正在使用这个简单的代码处理 HTML5 音频标签: HTML JS 使用 Chrome 这按预期工作,使用 Windows 上的 Safari 5.1.7 和 iPad 3 上的 Safari 我收到以下信息: 任何人都知道为什么?
2回复

为什么 onKeyPress 在反应中对我不起作用?

我想使用 ''onkeypress'' 事件播放音频: 但这对我不起作用。 注意:它仅在单击选项卡按钮后才起作用,但我想在任何按键上播放而不使用内部输入标签。 完整的代码是 在这里上codesandbox。
1回复

Android Chrome播放事件不起作用

我正在尝试自动从另一个音频元素开始并遇到麻烦。 我的想法是为每个音频元素的“ onplay”事件分配一个功能。 该函数获取被单击元素的对象(this),检查某些条件,启动下一个功能,然后进一步将被单击元素的对象(this)传递给它。 下一个函数试图获取下一个元素的ID,并将其自身
1回复

将MediaElementAudioSourceNode连接到AudioContext.destination不起作用

这是一个显示问题的小提琴 。 基本上,每当调用AudioContext对象的createMediaElementSource方法时,音频元素的输出就会重新路由到返回的MediaElementAudioSourceNode 。 这一切都很好,根据规格; 但是,当我尝试将输出重新连接到扬声器(
1回复

。玩(); 在HTML5 Media Elements上不起作用

我正在使用一个小的脚本来控制HTML5 Media。 该脚本尚无法使用。
1回复

“seeked”事件在 HTML 音频元素中不起作用吗?

我的情况: 我有一个音频元素,并通过 websocket 连接。 当我暂停、播放等时,我房间里其他人的音频元素也会这样做。 问题是: 通过seeking事件,如果有人玩搜索栏,我会发送数千个 websocket。 所以seeked事件是完美的,但它做同样的事情为求事件。 我的问题很简单。 是
1回复

AudioNode.disconnect() 后跟 .connect() 在 Safari 中不起作用

我已经构建了一个语音助手的演示,它获取麦克风数据,将其传递给分析器,然后使用.getByteFrequencyData()来显示视觉效果。 它的工作原理如下: 按麦克风按钮连接到麦克风输入 释放麦克风按钮断开麦克风流,并播放响应的 MP3。 MP3 结束时:返回待机状态,等待新按钮按下
1回复

加载图像后加载音频不起作用

加载图像后,音频文件无法加载(Javascript控制台不显示“已加载音频”): 那么为什么这段代码不起作用呢?