

The play() method also returns a promise, which can be used to check whether muted programmatic playback is enabled. The muted autoplay change will also make it possible to use play() with a video element not created in the DOM, for example to drive WebGL playback. It's possible to unmute a video programmatically in response to a user gesture such as a click, but if you attempt to unmute a video programmatically without a user gesture, playback will pause. We recommend using the autoplay attribute whenever possible, and the play() method only if necessary.

Compare the following two demos on Android - try them on Chrome 53, then on an older version: Previously, play() would only initiate playback if it came from a user gesture such as a button click. In addition, muted playback can now be initiated using the play() method. Playback of the muted video starts automatically in Chrome 53 or later. You can see this in action by visiting this sample. Previously, playback on mobile had to be initiated by a user gesture, regardless of the muted state. Playback will start automatically for a video element once it comes into view if both autoplay and muted are set, and playback of muted videos can be initiated pragmatically with play(). Muted autoplay for video is supported by Chrome for Android as of version 53.
