AudioContext 无法在 Safari 上运行,但在 Google Chrome 上运行
Posted
技术标签:
【中文标题】AudioContext 无法在 Safari 上运行,但在 Google Chrome 上运行【英文标题】:AudioContext not working on Safari but working on Google Chrome 【发布时间】:2022-01-07 22:55:52 【问题描述】:我知道我需要在 Safari 中进行用户交互后创建音频上下文。但是,下面的代码还是不行。
<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)
)
在谷歌浏览器 bug safari 上运行相同的代码。
我在这里做错了什么吗?非常感谢!!
【问题讨论】:
【参考方案1】:对我来说真的没有意义,但在这种情况下,Safari 需要再次推动才能启动AudioContext
。在创建 AudioContext
后立即调用 resume()
应该可以工作。
// ...
var ctx = new AudioContext();
ctx.resume();
fetch('MP3_URL')
// ...
【讨论】:
以上是关于AudioContext 无法在 Safari 上运行,但在 Google Chrome 上运行的主要内容,如果未能解决你的问题,请参考以下文章
createMediaElementSource ios safari 没有音频
尝试运行 AudioContext.createMediaElementSource() 时如何解决“音频无法识别调用‘连接’的对象”错误?
iOS Safari 上的 webkitAudioContext createMediaElementSource 不起作用