Reputation: 385
I have an React Audio Player that uses a useAudio hook to manage the HTML5 audio. It works fine everywhere except Mobile Safari, where the sound begins a few seconds after the player starts playing.
What's odd is that I'm checking canplaythrough
on the element before calling HTMLAudioElement.play()
. So Safari fires canplaythrough
and starts "playing" the audio, except that the audio doesn't actually start until a second or so in.
Here's a complete example on CodeSandbox: https://codesandbox.io/s/useaudioplayer-jvftw?file=/src/useAudio.tsx
To replicate, open in Mobile Safari and play the Audio.
Upvotes: 7
Views: 1120
Reputation: 419
In my case audio would play ok the 1st time.
And from the 2nd time and on, safari would skip some initial seconds.
Solved it by calling
myAudio.load();
just before
myAudio.play();
Upvotes: 4