Ограничение API Web Audio в iOS Safari - PullRequest
0 голосов
/ 02 июня 2019

Приведенный ниже код отлично работает при использовании Chrome, Firefox или Safari на рабочем столе. Он также отлично работает на Chrome и Firefox на мобильных устройствах. Но на мобильной платформе iOS, использующей Safari, он не воспроизводит звук. Просто тишина.

Я использую этот код в React SPA.

Документы MDN для decodeAudioData (https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/decodeAudioData) показывают, что iOS поддерживается , а не , поэтому мой вопрос заключается в том, как переработать это так, чтобы оно работало на всех платформах.

Спасибо.


        let url = "https://.....someAudioFile.mp3"
        let source

        const getRecordingData = url => {
          let request = new XMLHttpRequest()

          request.open('GET', url, true)
          request.responseType = 'arraybuffer'
          request.send()

          request.onload = function() {
            let audioCtx = new (window.AudioContext || window.webkitAudioContext)()

            audioCtx.decodeAudioData(
              request.response,
              function onSuccess(decodedBuffer) {
                // Decoding was successful
                source = audioCtx.createBufferSource()
                source.buffer = decodedBuffer
                source.connect(audioCtx.destination)
                source.loop = false
                source.start(0)
              },
              function onFailure(e) {
                console.log('Error with decoding audio data' + e.err)
              }
            )
          }
        }

        getRecordingData(url)
...