简单的振荡器,但IOS上的网络音频API没有声音

seb*_*piq 8 javascript web-audio-api

这是一个非常简单的例子,我试图在Chrome上运行iphone.其他网络音频API示例像这样一个http://alxgbsn.co.uk/wavepad/工作,但不是我的:(

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>

<body>

  <script>
    var audioContext, osc
    audioContext = new (window.AudioContext || window.webkitAudioContext);
    osc = audioContext.createOscillator()

    osc.connect(audioContext.destination)
    if (osc.noteOn) osc.start = osc.noteOn
    osc.start(0)
    osc.frequency.value = 440
  </script>

</body>

</html>
Run Code Online (Sandbox Code Playgroud)

知道什么是错的吗?

编辑

总结答案:

  1. 响应用户交互启动音频
  2. 检查静音开关是否关闭

Kev*_*nis 10

iOS只会让您通过用户操作开始使用Web Audio API播放声音.

尝试将该代码放在某种事件处理程序中.

var elem = document.getElementById('play'),
  audioContext = new (window.AudioContext || window.webkitAudioContext),
  osc = audioContext.createOscillator();

osc.connect(audioContext.destination);
if (osc.noteOn) osc.start = osc.noteOn
osc.frequency.value = 440;

play.addEventListener('click', function() {
  osc.start(0);
}, false);
Run Code Online (Sandbox Code Playgroud)

  • $ 10表示您的静音开关已打开.无论出于何种原因,当静音开关启用时,Safari将无法播放声音,但Chrome会播放.除此之外,Chrome使用与Safari相同的引擎来渲染您的页面(减去Nitro JS优化),因此没有其他原因可以使您的代码在一个而不是另一个中工作.我刚刚通过JSBin尝试过,当静音开关关闭时,两者都适合我. (4认同)