¿Cómo puedo sincronizar dos elementos de video HTML que están reproduciéndose automáticamente y en bucle?
Tengo dos elementos de video HTML que comienzan a reproducirse automáticamente al cargar la página y continúan en bucle sin fin hasta que el usuario abandone la página. Ambos videos tienen una duración de 8 segundos y necesito que siempre estén sincronizados entre sí, pero por supuesto, se desincronizan. Para el audio, el Video 1 reproduce una canción completa y el Video 2 reproduce solo un instrumento en la misma canción, por lo que, para mostrar que están relacionados, deben estar sincronizados.
<video id="first-video" autoplay="" muted="" loop="" playsinline="" loading="lazy" src="videos/video-1.mp4"></video>
<video id="second-video" autoplay="" muted="" loop="" playsinline="" loading="lazy" src="videos/video-2.mp4"></video>
Hay varias soluciones en esta pregunta de SO:
https://stackoverflow.com/questions/2654817/is-there-a-way-to-keep-two-videos-synchronized-in-a-webpage-without-plugins
Pero cuando intento implementarlas, no veo ningún cambio en la calidad de la sincronización, se desincronizan con facilidad. Soy nuevo en JS, pero supongo que hay algún método para detectar el primer y último fotograma de un vídeo, y luego podría usarlos para iniciar/detener un segundo vídeo, y con el video en “bucle”, esto podría continuar indefinidamente. Si alguien puede indicarme en la dirección correcta para eso u otra solución, ¡sería de gran ayuda!
Gracias.
davy.ai
Solución para mantener dos videos HTML en sincronía
Existen varias soluciones disponibles para sincronizar dos videos HTML en una página web. Un enfoque consiste en utilizar JavaScript para detectar los primeros y últimos fotogramas de un video y luego utilizar esos fotogramas para iniciar/detener el segundo video. Aquí están los pasos:
Este método debería mantener los dos videos en sincronía siempre y cuando los videos tengan la misma duración y el navegador pueda manejar la carga. Si quieres ajustar la sincronización, puedes modificar la propiedad
currentTime
del segundo video en el event listenerplay
.¡Espero que esto sea de ayuda!