我目前正在为我正在处理的项目调整此网络音频 API 演示,但在 iPhone 上测试时没有声音。它在 iPad 上运行良好。
我已经搜索了解决方案,并在 StackOverflow 上找到了此线程,其中包含以下答案片段:
iOS 6 上的 Safari 有效地从 Web Audio API 静音开始。直到您尝试在用户输入事件中播放声音(创建缓冲区源,将其连接到目标,然后调用 noteOn()),它才会取消静音。在此之后,它会取消静音并且音频播放不受限制并且应该如此。这是 Web Audio API 如何在 iOS 6 上工作的一个未记录的方面(Apple 的文档在这里,希望他们尽快更新它并提及这一点!)
用户输入事件应该是播放按钮上的 onclick 事件,但更改为使用noteOn()
而不是start()
仍然无法修复它。
更新:我也尝试将播放按钮与touchend
事件绑定,但无济于事。
这是使用 noteOn() 的函数:
function playNote(buffer, pan, x, y, z, sendGain, mainGain, playbackRate, noteTime) {
// Create the note
var voice = context.createBufferSource();
voice.buffer = buffer;
voice.playbackRate.value = playbackRate;
// Optionally, connect to a panner
var finalNode;
if (pan) {
var panner = context.createPanner();
panner.panningModel = "HRTF";
panner.setPosition(x, y, z);
voice.connect(panner);
finalNode = panner;
} else {
finalNode = voice;
}
// Connect to dry mix
var dryGainNode = context.createGain();
dryGainNode.gain.value = mainGain * effectDryMix;
finalNode.connect(dryGainNode);
dryGainNode.connect(masterGainNode);
// Connect to wet mix
var wetGainNode = context.createGain();
wetGainNode.gain.value = sendGain;
finalNode.connect(wetGainNode);
wetGainNode.connect(convolver);
if (iOS) {
voice.noteOn(noteTime);
}
else {
voice.start(noteTime);
}
}
任何建议将不胜感激。谢谢。
我真的觉得很傻。显然,如果您的 iPhone 处于振动模式,则不会播放声音。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句