Web Audio API:Chrome中没有声音

时间:2012-10-26 19:05:07

标签: api audio web

我正在使用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 个答案:

答案 0 :(得分:2)

根据latest spec,noteOn()已更改为start()。

答案 1 :(得分: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/

答案 2 :(得分: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>

答案 3 :(得分: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);