Sé que necesito crear un contexto de audio después de la interacción del usuario en Safari. Sin embargo, el siguiente código aún no funcionaba.
HTML
<button onclick="play">Play</button>JavaScript
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) }) }El mismo código que funciona en Google Chrome bug safari.
¿Hay algo malo que estoy haciendo aquí? ¡¡Muchísimas gracias!!
Realmente no tiene sentido para mí, pero en este caso, Safari necesita otro empujón para iniciar AudioContext . Llamar resume() justo después de crear el AudioContext debería funcionar.
// ... var ctx = new AudioContext(); ctx.resume(); fetch('MP3_URL') // ...