1

我正在使用 Chrome 22.0.1229.94,但无法弄清楚为什么我在使用 Web Audio API 的任何页面上都没有音频。我已经签入了标志,但似乎没有启用 API 的标志,我是否需要做其他事情才能让它工作?

我尝试运行一个简单的脚本来获得一些音频但没有声音。

<script type="text/javascript">
  var context = new webkitAudioContext(),
  oscillator = context.createOscillator();

  oscillator.type = 2;
  oscillator.frequency.value = 500;
  oscillator.connect(context.destination);
  oscillator.noteOn(0);
</script>
4

4 回答 4

2

根据最新规范,noteOn() 已更改为 start()。

于 2013-05-16T15:51:39.983 回答
1

为了使用当前版本的 API,您需要使用 start() 代替 noteOn(),使用 stop() 代替 noteOff(),并将振荡器类型指定为字符串。

<script type="text/javascript">

var context = new webkitAudioContext();
var oscillator = context.createOscillator();

oscillator.type = "square";
oscillator.frequency.value = 500;
oscillator.connect(context.destination);

var now = context.currentTime;
oscillator.start(now);
oscillator.stop(now + 1);

</script>

规范位于:http ://webaudio.github.io/web-audio-api/

于 2014-07-27T15:23:39.153 回答
0

这可能是您的 Chrome 的问题,但我还是看到脚本存在问题。在使用 Web Audio API 之前,您应该告诉它等待窗口完全加载。这是执行此操作的脚本版本:

var init = function () {
    var context, oscillator;
    try {
        context = new webkitAudioContext();
    } catch (e) {
        alert("Your browser does not support Web Audio API!");
        return;
    }
    oscillator = context.createOscillator();

    oscillator.type = 2;
    oscillator.frequency.value = 500;
    oscillator.connect(context.destination);
    oscillator.noteOn(0);
    oscillator.noteOff(1);
}
window.addEventListener("load", init);
于 2013-01-16T13:47:02.733 回答
0

您忘记添加 noteOn(0);

<script type="text/javascript">
var context = new webkitAudioContext(),
oscillator = context.createOscillator();

oscillator.type = 2;
oscillator.frequency.value = 500;
oscillator.connect(context.destination);
oscillator.noteOn(0);

</script>
于 2012-10-27T09:43:10.267 回答