Estoy recibiendo el mensaje de error...
Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
...cuando intento reproducir un vídeo en el escritorio utilizando la versión 66 de Chrome.
Sin embargo, encontré un anuncio que comenzó a reproducirse automáticamente en un sitio web utilizando el siguiente HTML:
<video
title="Advertisement"
webkit-playsinline="true"
playsinline="true"
style="background-color: rgb(0, 0, 0); position: absolute; width: 640px; height: 360px;"
src="http://ds.serving-sys.com/BurstingRes/Site-2500/Type-16/1ff26f6a-aa27-4b30-a264-df2173c79623.mp4"
autoplay=""></video>
Entonces, ¿es tan fácil evitar el bloqueador de reproducción automática de Chrome v66'como añadir los atributos webkit-playsinline="true",
playsinline="true"y autoplay="al elemento
Respondiendo a la pregunta en cuestión...
No, no es suficiente con tener estos atributos, para poder auto-reproducir un medio con audio es necesario tener un gesto de usuario registrado en el documento.
Pero, esta limitación es muy débil: si recibes este gesto de usuario en el documento padre, y tu vídeo se carga desde un iframe, entonces podrías reproducirlo...
Por ejemplo, [este fiddle](
), que sólo es<video src="myvidwithsound.webm" autoplay=""></video>
En la primera carga, y si no hace clic en cualquier lugar, no se ejecutará, porque no tenemos ningún evento registrado todavía.
Pero una vez que se pulsa el botón "Ejecutar", entonces el documento padre (jsfiddle.net) sí ha recibido un gesto del usuario, y ahora el vídeo se reproduce, aunque técnicamente esté cargado en un documento diferente.
Pero el siguiente fragmento, dado que requiere que se haga clic en el botón Ejecutar fragmento de código, se reproducirá automáticamente.
begin snippet: js hide: false console: true babel: false -->
<video src="https://upload.wikimedia.org/wikipedia/commons/transcoded/2/22/Volcano_Lava_Sample.webm/Volcano_Lava_Sample.webm.360p.webm" autoplay=""></video>
Esto significa que su anuncio probablemente pudo reproducirse porque proporcionó un gesto de usuario a la página principal.
Ahora bien, tenga en cuenta que Safari y Mobile Chrome tienen reglas más estrictas que eso, y le exigirán que active realmente al menos una vez el método play()
en el elemento <video>
o <audio>
desde el propio manejador de eventos de usuario.
begin snippet: js hide: true console: true babel: false -->
btn.onclick = e => {
// mark our MediaElement as user-approved
vid.play().then(()=>vid.pause());
// now we can do whatever we want at any time with this MediaElement
setTimeout(()=> vid.play(), 3000);
};
<button id="btn">play in 3s</button>
<video
src="https://upload.wikimedia.org/wikipedia/commons/transcoded/2/22/Volcano_Lava_Sample.webm/Volcano_Lava_Sample.webm.360p.webm" id="vid"></video>
Fin del fragmento;
Y si no necesita el audio, entonces simplemente no lo adjunte a su medio, un video con sólo una pista de video también se permite la reproducción automática, y reducirá el uso de ancho de banda de su usuario.
Escribe Chrome://flags en la barra de direcciones
Busca: Reproducción automática
Política de reproducción automática
Política utilizada para decidir si se permite que el audio o el vídeo reproducirse automáticamente.
- Mac, Windows, Linux, Chrome OS, Android
Establezca esto como "No se requiere ningún gesto del usuario**"
Reinicia Chrome y no tendrás que cambiar ningún código