Foros del Web » Programando para Internet » Javascript »

Reproducir video solo cuando este en pantalla

Estas en el tema de Reproducir video solo cuando este en pantalla en el foro de Javascript en Foros del Web. Hola, he visto algunas paginas que cargan videos en HTML5, y que solo se reproducen cuando la pantalla del visitante (scroll) muestra el contenedor del ...
  #1 (permalink)  
Antiguo 21/04/2014, 18:40
Avatar de insyse  
Fecha de Ingreso: abril-2005
Ubicación: Colombia
Mensajes: 206
Antigüedad: 19 años, 8 meses
Puntos: 5
Reproducir video solo cuando este en pantalla

Hola, he visto algunas paginas que cargan videos en HTML5, y que solo se reproducen cuando la pantalla del visitante (scroll) muestra el contenedor del video, si se baja o sube el scroll el video se pausa.

Como se hace eso?

Tengo una pagina que de acuerdo al menú seleccionado sube o baja el scroll y quiero un colocarle un video autoreproducible, pero que solo se reproduzca cuando el scroll llegue al div que contiene el video.
__________________
.................................................. ...........................
No todos nacemos aprendidos !
  #2 (permalink)  
Antiguo 22/04/2014, 01:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Reproducir video solo cuando este en pantalla

Creo que esto es lo que buscas. También hay un plugin en jQuery de nombre Lazy Load que permite hacer lo mismo.

En el primer enlace, se retrasa la carga de imágenes en un documento hasta que la barra de desplazamiento se encuentre a la altura de las mismas, recién en ese momento se cargan y muestran. En tu caso, harías algo similar, con la diferencia que para reproducir y pausar el vídeo, utilizarías los métodos play y pause.

Saludos

Edito:

Como me interesó el tema, decidí hacer mi algoritmo:

Código Javascript:
Ver original
  1. var video = document.getElementsByTagName("video")[0];
  2. window.addEventListener("scroll", function(){
  3.     if (this.scrollY >= (video.offsetTop - document.documentElement.clientHeight))
  4.         video.play();
  5.     else
  6.         video.pause();
  7. }, false);

Cuando hago scroll (desplazarnos con la barra de desplazamiento vertical), verifico lo siguiente; si la cantidad de píxeles que me he desplazado es mayor o igual a la diferencia de la distancia que hay entre el elemento <video> y el cuerpo del documento (el tope) menos la altura del elemento raíz del documento, ejecuto el método play(), caso contrario, ejecuto el método pause().

Métodos utilizados:

- scrollY
- offsetTop
- clientHeight
- documentElement (propiedad)

Lo he probado localmente y va de maravilla.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 22/04/2014 a las 11:46 Razón: Otra solución
  #3 (permalink)  
Antiguo 22/04/2014, 04:47
Avatar de insyse  
Fecha de Ingreso: abril-2005
Ubicación: Colombia
Mensajes: 206
Antigüedad: 19 años, 8 meses
Puntos: 5
Respuesta: Reproducir video solo cuando este en pantalla

Hola Alexis,

Gracias por tu respuesta, la voy a probar y te cuento, pero de antemano te digo que me gusta mucho la explicación de la misma. No siempre explican el código y no todos somos programadores para entenderlo.
__________________
.................................................. ...........................
No todos nacemos aprendidos !

Etiquetas: autoplay, html5, scroll, video
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:58.