Tengo una especie de problema extraño. Intento crear un sitio web con un video de fondo en bucle. El código se parece a este:
<video src="video/bg.mp4" style="z-index: -1;object-fit: cover;" poster="video/bg.jpg" autobuffer autoplay loop muted></video>
Esto funciona perfectamente bien en la mayoría de los navegadores (IE tiene problemas con este ajuste de objetos, pero no me importa) pero en iPhone el video no se reproduce automáticamente pero en iPad sí. Ya leí las nuevas políticas para iOS y creo que cumplo con los requisitos (de lo contrario, el iPad no se reproducirá automáticamente). Hice algunas otras pruebas:
- Eliminar divs superpuestos no lo solucionará
- Eliminar el índice z no lo solucionará
- Wifi o celular no hace la diferencia
- El video tampoco marca la diferencia
¿Lo estoy haciendo mal o el iPhone simplemente no reproduce videos automáticamente y siempre requiere interacción? Solo me preocupo por iOS 10, sé que los requisitos eran diferentes en iOS 9
Respuestas:
¿
playsinline
Ayuda el atributo?Esto es lo que tengo:
<video autoplay loop muted playsinline class="video-background "> <source src="videos/intro-video3.mp4" type="video/mp4"> </video>
Vea el comentario
playsinline
aquí: https://webkit.org/blog/6784/new-video-policies-for-ios/fuente
playsinline
funcionó para mí junto conmuted
tener en cuenta la peculiaridad del modo de bajo consumo en el iPhoneplaysinline
¡¡¡¡Salvó el día!!!! Gracias hombre. Por cierto, las nuevas políticas del navegador exigen que si desea iniciar automáticamente un video, comience en silencio o no podrá hacerlo. +1 a @ken Ejemplo para Chrome: [ developers.google.com/web/updates/2017/09/…playsinline
debe estar escrito en camelCase:playsInline
. De lo contrario, no funcionará.iOs 10+ permite la reproducción automática de video en línea. pero tienes que desactivar el "Modo de bajo consumo" en tu iPhone.
fuente
Aquí está el pequeño truco para superar todas las luchas que tiene para la reproducción automática de videos en un sitio web:
Nota: algunos navegadores no permiten que los videos se reproduzcan automáticamente a menos que el usuario interactúe con el dispositivo.
Entonces, los guiones para verificar si el video se está reproduciendo son:
Object.defineProperty(HTMLMediaElement.prototype, 'playing', { get: function () { return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2); }});
Y luego simplemente puede reproducir automáticamente el video adjuntando oyentes de eventos al cuerpo:
$('body').on('click touchstart', function () { const videoElement = document.getElementById('home_video'); if (videoElement.playing) { // video is already playing so do nothing } else { // video is not playing // so play video now videoElement.play(); } });
Nota: el
autoplay
atributo es muy básico y debe agregarse a la etiqueta de video ya que no son estos scripts.Puede ver el ejemplo de trabajo con código aquí en este enlace:
Cómo reproducir video automáticamente cuando el dispositivo está en modo de bajo consumo / modo de ahorro de datos / problema con el navegador Safari
fuente