es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AudioContext no funciona en Safari 15 ejecutando el estado pero currentTime no avanza.

No puedo hacer que AudioContext funcione correctamente en Safari 15. Cuando lo inicias, está en estado de ejecución, pero el AudioContext.currentTime nunca avanza y no se reproduce nada. Todos los consejos anteriores cubren versiones antiguas de Safari donde era necesario llamar a resume dentro de un controlador de clic para sacarlo de un estado suspendido, pero como puedes ver a continuación, está en ejecución y llamar a resume no hace ninguna diferencia. Este es el ejemplo más básico que pude encontrar a continuación:

<html>
  <body>
    <button onclick="play()">Probar Audio</button>
    <div id="output"></div>
    <script>
    async function play() {
      var ac = new window.AudioContext();
      ac.resume();
      var response = await fetch('https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3');
      var buffer = await response.arrayBuffer();
      ac.decodeAudioData(buffer, onDecoded);
      function onDecoded(buffer){
        var bs = ac.createBufferSource();
        bs.buffer = buffer;
        bs.loop = true;
        bs.connect(ac.destination);
        bs.start(0);
      }
      var logloop = setInterval(() => {
        document.getElementById('output').innerHTML = '';
        document.getElementById('output').innerHTML = 'Estado de AudioContext: ' + ac.state + '<br>Tiempo actual: ' + ac.currentTime;
      }, 100);
    }
    </script>
  </body>
</html>
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en JavaScript y Safari, parece haber un problema con el AudioContext en Safari 15, donde se encuentra en un estado de ejecución pero el AudioContext.currentTime nunca avanza y no se reproduce nada.

    El consejo previo de llamar a resume dentro de un controlador de clics para sacarlo de un estado suspendido no es aplicable en este caso.

    Se ha proporcionado un fragmento de código de ejemplo, pero no parece funcionar correctamente en Safari 15.

Comments are closed.