Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

187
Visualizações
El contexto de audio de Javascript en Safari / IOS 15 - 14 ya no funciona

La reciente actualización de IOS/Safari parece romper la API de audio web...

Mire aquí el código simple que funcionó antes en IOS y Safari, pero desde la actualización ya no funciona ... por cierto, funciona en Firefox, Edge, Chrome.

https://www.mylooper.com/debug.html

 var url = 'https://www.mylooper.com/static/btf_10_loop1.aac'; var context = new AudioContext(); var source = context.createBufferSource(); //connect it to the destination so you can hear it. source.connect(context.destination); /* --- load buffer --- */ var request = new XMLHttpRequest(); //open the request request.open('GET', url, true); //webaudio paramaters request.responseType = 'arraybuffer'; request.onload = function() { context.decodeAudioData(request.response, function(response) { /* --- play the sound AFTER the buffer loaded --- */ //set the buffer to the response we just received. source.buffer = response; source.start(0); source.loop = true; }, function () { console.error('The request failed.'); } ); } //Now that the request has been defined, actually make the request. (send it) request.send(); </script>

Gran parte de la biblioteca se ve afectada como Howler js, tuna js... pero no sé si este "error"/"característica" puede solucionarse algún día...

Por cierto, por ahora, ¿cómo hacer un bucle de audio perfecto con JS ahora en Safari/IOS?

Muchas gracias, esto me está volviendo loco...

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

¿Qué quieres decir con "roto"?
Si significa que el audio no comienza a reproducirse con esta advertencia, debe llamar a source.start(0) después del gesto del usuario.

 The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page.

Por ejemplo, llame a request.send() en la función onclick de algún botón.
O envuelva todo su código en la función onclick de algún botón.

 const button = document.getElementbyId("foo"); button.oncklick = () => { var url = 'https://www.mylooper.com/static/btf_10_loop1.aac'; var context = new AudioContext(); var source = context.createBufferSource(); //connect it to the destination so you can hear it. source.connect(context.destination); /* --- load buffer --- */ var request = new XMLHttpRequest(); //open the request request.open('GET', url, true); //webaudio paramaters request.responseType = 'arraybuffer'; request.onload = function() { context.decodeAudioData(request.response, function(response) { /* --- play the sound AFTER the buffer loaded --- */ //set the buffer to the response we just received. source.buffer = response; source.start(0); source.loop = true; }, function () { console.error('The request failed.'); } ); } //Now that the request has been defined, actually make the request. (send it) request.send(); }

Esta es la característica descrita aquí. https://developer.chrome.com/blog/autoplay/#webaudio
Así que no se arreglará.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda