El atributo de <video>
etiquetas autoplay="autoplay"
funciona bien en Safari.
Cuando se prueba en un iPad, el video debe activarse manualmente.
Pensé que era un problema de carga, así que ejecuté un bucle para verificar el estado de los medios:
videoPlay: function(){
var me = this;
console.log('STATE: ' + $("#periscopevideo").get(0).readyState);
if ($("#periscopevideo").get(0).readyState != 4){
setTimeout(function(){me.videoPlay();}, 300);
}
else {
$("#periscopevideo").get(0).play();
}
}
El estado permanece en 0
el iPad. En mi safari de escritorio, pasa 0
, 1
y finalmente 4
. En el iPad, solo llega 4
si toco manualmente la flecha "reproducir".
Además, llamar $("#periscopevideo").get(0).play()
desde un clic onClick
también funciona.
¿Hay alguna restricción de Apple con respecto a la reproducción automática? (Estoy ejecutando iOS 5+ por cierto).
Respuestas:
actualización de iOS 10
La prohibición de reproducción automática se levantó a partir de iOS 10, pero con algunas restricciones (por ejemplo, A se puede reproducir automáticamente si no hay una pista de audio).
Para ver una lista completa de estas restricciones, consulte los documentos oficiales: https://webkit.org/blog/6784/new-video-policies-for-ios/
iOS 9 y antes
A partir de iOS 6.1, ya no es posible reproducir automáticamente videos en el iPad.
¿Supongo por qué han deshabilitado la función de reproducción automática?
Bueno, como muchos propietarios de dispositivos tienen límites de uso de datos / ancho de banda en sus dispositivos, creo que Apple sintió que el propio usuario debería decidir cuándo iniciar el uso de ancho de banda.
Después de un poco de investigación, encontré el siguiente extracto en la documentación de Apple con respecto a la reproducción automática en dispositivos iOS para confirmar mi suposición:
Aquí hay una advertencia separada presentada en la página de referencia HTML5 de Safari sobre por qué los medios integrados no se pueden reproducir en Safari en iOS:
Lo que esto significa (en términos de código) es que los métodos
play()
y Javascriptload()
están inactivos hasta que el usuario inicia la reproducción, a menos que el métodoplay()
oload()
sea activado por una acción del usuario (por ejemplo, un evento de clic).Básicamente, un botón de reproducción iniciado por el usuario funciona, pero un
onLoad="play()"
evento no.Por ejemplo, esto reproduciría la película:
Mientras que lo siguiente no haría nada en iOS:
fuente
Quiero comenzar diciendo que me doy cuenta de que esta pregunta es antigua y ya tiene una respuesta aceptada; pero, como un desafortunado usuario de Internet que utilizó esta pregunta como un medio para terminar, solo se demostró que estaba equivocado poco después (pero no antes de molestar un poco a mi cliente) quiero agregar mis pensamientos y sugerencias.
Si bien @DSG y @Giona son correctas, y sus respuestas no tienen nada de malo, existe un mecanismo creativo que puede emplear para "moverse", por así decirlo, esta limitación. Eso no quiere decir que tolere eludir esta función, sino todo lo contrario, pero solo algunos mecanismos para que un usuario todavía "sienta" como si un archivo de video o audio se "reprodujera automáticamente".
La solución rápida es ocultar una etiqueta de video en algún lugar de la página móvil, ya que construí un sitio receptivo, solo hago esto para pantallas más pequeñas. La etiqueta de video (ejemplos HTML y jQuery):
HTML
jQuery
Con eso oculto en la página, cuando un usuario "hace clic" para ver una película (aún la interacción del usuario, no hay forma de evitar ese requisito) en lugar de navegar a una página secundaria, cargo el video oculto. Esto funciona principalmente porque la etiqueta de medios no se usa realmente, sino que se promociona a una instancia de Quicktime, por lo que no es necesario tener un elemento de video visible. En el controlador de "clic" (o "touchend" en el móvil).
Y viola. En lo que respecta a UX, un usuario hace clic en un video para reproducirlo y Quicktime abre la reproducción del video que eligió. Esto permanece dentro de la limitación de que los videos solo se pueden reproducir a través de la acción del usuario, por lo que no estoy forzando datos sobre nadie que no decida ver un video con este servicio. Descubrí esto cuando traté de descubrir cómo exactamente Youtube logró esto con su dispositivo móvil, que es esencialmente una construcción de página JavaScript realmente agradable y un elemento elegante que se esconde como en el caso de la etiqueta de video.
tl; dr Aquí hay una "solución" para intentar crear una función de UX de "reproducción automática" en dispositivos iOS sin exceder las limitaciones de Apple y hacer que los usuarios decidan si quieren ver un video (o un audio similar, aunque yo no se han probado) sin tener uno cargado sin su permiso.
Además, para la persona que comentó que es de sleep.fm, esto desafortunadamente aún no habría sido una solución a sus problemas, que es la reproducción de audio basada en el tiempo.
Espero que alguien encuentre útil esta información, me habría ahorrado una semana de malas noticias entregadas a un cliente que estaba convencido de que tienen esta característica y me alegré de encontrar una forma de entregarla al final.
EDITAR
Otros hallazgos indican que la solución anterior es solo para dispositivos iPhone / iPod. El iPad reproduce video en Safari antes de que se haya proyectado por completo, por lo que necesitará algún mecanismo para cambiar el tamaño del video al hacer clic antes de reproducirlo o, de lo contrario, terminará con audio y sin video.
fuente
$dummyVideo.get(0)
lugar de corchetes, por lo que jQuery puede fallar con gracia si su selección está vacía.Solo establece
webView.mediaPlaybackRequiresUserAction = NO;
La reproducción automática funciona para mí en iOS.
fuente
A partir de iOS 10, los videos ahora pueden reproducirse automáticamente, pero solo están silenciados o no tienen pista de audio. ¡Hurra!
En breve:
<video autoplay>
Los elementos ahora respetarán el atributo de reproducción automática, para los elementos que cumplan las siguientes condiciones:<video>
los elementos podrán reproducirse automáticamente sin un gesto del usuario si sus medios de origen no contienen pistas de audio.<video muted>
los elementos también podrán reproducirse automáticamente sin un gesto del usuario.<video>
elemento obtiene una pista de audio o se silencia sin un gesto del usuario, la reproducción se detendrá.<video autoplay>
Los elementos solo comenzarán a reproducirse cuando estén visibles en la pantalla, como cuando se desplazan a la ventana gráfica, se hacen visibles a través de CSS y se insertan en el DOM.<video autoplay>
los elementos se pausarán si se vuelven no visibles, como al desplazarse fuera de la ventana gráfica.Más información aquí: https://webkit.org/blog/6784/new-video-policies-for-ios/
fuente
En esta referencia de Safari HTML5 , puede leer
fuente
Deje que el video se silencie primero para garantizar la reproducción automática en ios, luego active el silencio si lo desea.
fuente