我使用的是 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>
根据最新规范,noteOn()已更改为start()。
为了使用当前版本的 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>
你忘记添加 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>
这可能是您的 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);