https://developer.chrome.com/blog/autoplay
- Safari will not autoplay any videos when in low power mode.
- Requires a user interaction, after which the remainder of autoplay videos in the page work fine.
- Interaction means some form of click interaction. Doesn't even matter on what.
- Attempting to trigger an unumuted video with the
element.play()
api only works after interaction. Attempting this without an interaction will throw immediately, it does NOT return a rejected promise. - It's not straightforward to detect the low power behaviour happening because Safari runs through all the standard video events as if the video is playing correclty. But the very last event will be "paused" which we can use to show a button to start the interactive.
- Chrome will always play muted autoplay videos.
- Attempting to play an unmuted video in Chrome with
element.play()
will return a rejected promise.
The following code will attempt to play a video, falling back to a muted video: