我正在使用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>
答案 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>
答案 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);