playsinline ipad html5-video seekbar

playsinline - Búsqueda de videos HTML5 en iPad



video html5 iphone autoplay (4)

Tengo un reproductor de video HTML5 con una barra de búsqueda personalizada, que funciona muy bien en el iPhone (en línea) y en el navegador.

También funciona bien en el iPad y la barra de búsqueda se actualiza a medida que se reproduce la película, pero por alguna razón, no puedo buscar.

Todos los valores son correctos y estoy tratando de establecer:

myPlayer.currentTime = XX;

Desafortunadamente, el iPad se niega a establecer el atributo .currentTime.

De lo que puedo deducir, la diferencia entre el navegador y el iPad es que en el navegador que obtengo:

myPlayer.networkState = 3 myPlayer.readyState = 4

En el iPad me sale:

myPlayer.networkState = 2 myPlayer.readyState = 3

Es exactamente el mismo código, ejecutando un video MP4 local.

¿Alguna idea de por qué esto está pasando?

Saludos, Andre


Este problema está relacionado con el valor utilizado en la propiedad video.currentTime . En mi caso específico, solucioné el problema asegurándome siempre de que estaba usando números de punto flotante con un dígito decimal durante la búsqueda.

Establecer video.currentTime en CERO en iOS 3.2 buscará el video al principio pero el valor no se actualizará después de eso: el evento timeupdate aún se envía normalmente, pero si intenta leer currentTime , siempre devolverá el mismo valor.

Para buscar el inicio del video, use 0.1 lugar de 0 , para buscar 12.2345 use 12.2 .

PS: puede usar (+(12.2345).toFixed(1)) para limitar el número de dígitos decimales a 1.


He tenido todo tipo de problemas para que JavaScript controle los elementos de audio, y mucha frustración con la propiedad currentTime, junto con las restricciones de Apple sobre lo que constituye el inicio directo de eventos por parte del usuario.

No me sorprendería si hubiera algún tipo de error extraño con la reproducción de video de JavaScript y HTML5 en el iPad (o "característica" que está sin documentar), que requiere una solución. Desde mi experiencia, el iPad tiene una forma única de hacer las cosas que la documentación oficial.

Debe verificar las propiedades de error , búfer , búsqueda y búsqueda del elemento de video. Al observar los valores de readyState y networkState, el iPad parece pensar que el video no se ha cargado completamente, lo que es extraño para un recurso local.

el búfer y la búsqueda deben ser iguales al rango de tiempo de todo el video. la búsqueda debe ser VERDADERO. Eso debería al menos darle un poco más de información sobre el problema.

¿Lo has probado con otros videos? Puede ser que haya algún tipo de problema de codificación con el video con el que el iPad tiene un problema.

Aparte de eso, hubo un error en una versión anterior del sistema operativo iPad que rompió la capacidad de establecer la propiedad currentTime. ¿Está utilizando la última versión del sistema operativo?


La respuesta de Kyle es buena. Yo agregaría, no puede asumir que el atributo de seekable se seekable después de un evento en particular . Esto significa que no puede esperar eventos como loadedmetadata , canplay o cualquier otro, y suponga que puede configurar el tiempo currentTime forma segura en ese momento.

Parece que la forma más segura de hacerlo es verificar la seekable después de cada evento relacionado con el video, y si abarca el tiempo que desea buscar, establezca currentTime en ese momento. En el iPad, la seekable no puede llenarse hasta después del evento de canplaythrough , que es bastante tarde.

Ver mi blog para más información sobre esto.


Tengo el mismo problema, aquí están las propiedades en mi caso:

UIWebView - iPad Simulator duration=4.861666679382324 startTime=0 currentTime=4.861666679382324 buffered(1)=[0-0] seekable(0)= seeking=false error=null readystate=4 networkstate=3 Chrome: duration=4.9226298332214355 startTime=0 currentTime=4.9226298332214355 buffered(1)=[0-4.9226298332214355] seekable(1)=[0-4.9226298332214355] seeking=false error=null readystate=4 networkstate=1

Entonces, nada se está amortiguando y nada se puede buscar. estoy reproduciendo un clip local desde el directorio de recursos de un paquete de iPad, a través de un UIWebView.

En mi caso, todo lo que necesito es restablecer la parte superior del video después de cada reproducción, y pude lograrlo mediante una llamada a "load ()"