html AudioContext不能在Safari上运行,但可以在Google Chrome上运行

7xllpg7q  于 2023-04-10  发布在  Go
关注(0)|答案(1)|浏览(195)

我知道我需要在Safari中的用户交互之后创建音频上下文。然而,下面的代码仍然不起作用。
HTML

<button onclick="play">Play</button>

简体中文

function play() {  
  var AudioContext = window.AudioContext || window.webkitAudioContext
  var ctx = new AudioContext()

  fetch('MP3_URL')
    .then((response) => response.arrayBuffer())
    .then((arrayBuffer) => ctx.decodeAudioData(arrayBuffer))
    .then((audioBuffer) => {
      var source = ctx.createBufferSource()
      source.buffer = audioBuffer
      source.connect(ctx.destination)
      source.start(ctx.currentTime)
    })
}

同样的代码在谷歌Chrome上工作,但Safari。

8ftvxx2r

8ftvxx2r1#

我觉得这没有什么意义,但是在这种情况下,Safari需要另一个push来启动AudioContext。在创建AudioContext之后立即调用resume()应该可以工作。

// ...
var ctx = new AudioContext();

ctx.resume();

fetch('MP3_URL')
// ...

相关问题