Cómo hacer un vídeo de fondo en bucle sin corte para una web
Cinco pasos para un bucle de hero sin corte visible, desde el prompt de generación hasta la etiqueta de vídeo final.

En resumen
Un vídeo de fondo en bucle sin corte sale de una cámara fija, una unión medida y un archivo codificado por pantalla. Genera el clip sin movimiento de cámara y compara su último fotograma con el primero usando SSIM en ffmpeg. Damos un bucle por limpio cuando esa puntuación llega al menos al 95 % de la que hay entre dos fotogramas normales. Codifica en H.264 MP4 sin audio, compatible con el 97,49 % de los navegadores. En los 31 archivos que medimos, la mediana pesa 2,91 MB en escritorio y 1,35 MB en móvil, con clips de 4,6 a 7 segundos.
- Pide una cámara fija con esas palabras e indica qué puede moverse.
- Da la unión por limpia al 95 % de la puntuación SSIM entre fotogramas normales.
- Cuenta con unos 0,45 MB por segundo en escritorio y 0,21 MB en móvil.
- Mantén ligeros los pósters, porque uno puede marcar tu Largest Contentful Paint.
- Añade un control de pausa, que WCAG 2.2.2 pide a partir de 5 segundos de movimiento.
Por qué se nota el corte en un vídeo en bucle
Un bucle muestra un corte cuando su último fotograma no coincide con el primero. El salto se ve sobre todo en lo que debería ser continuo, como un movimiento lento de cámara, un horizonte o la luz sobre una pared. Por eso es primero un problema de cámara, y el arreglo empieza al generar o rodar el clip.
El primer vídeo que hicimos para nuestro primer hero pedía una cámara fija, y el generador hizo una panorámica de todos modos. Su último fotograma coincidía con el primero solo en un 64 %, y salió a 832×464. Lo volvimos a generar.
Paso 1: fija la cámara y limita lo que se mueve
Pide que no haya movimiento de cámara con esas palabras e indica las pocas cosas que pueden moverse. Esta redacción nos dio un clip limpio de 5 segundos a 1280×720:
locked-off static camera, no camera movement, no zoom, no pan.
The woman stands perfectly still; only her hair and the hem of her dress move gently in the breeze.
Los generadores se toman las palabras de movimiento al pie de la letra. En nuestras pruebas con un modelo de vídeo, «calm» dio un clip casi congelado, mientras que «clearly visible» inventó gestos, nubes y ondas y dejó un final distinto del inicio. Pide un movimiento uniforme de un tamaño concreto, prohíbe por escrito lo que no quieras y cuenta con 2 intentos.
Si la herramienta tiene una opción de bucle, úsala. En Midjourney, escribir --loop en el prompt no nos bastó, y lo que marcó la diferencia fue el interruptor de la interfaz.
Paso 2: mide la unión en lugar de mirarla
Puntúa el último fotograma frente al primero con SSIM, y da el bucle por limpio cuando la unión llegue al menos al 95 % de la puntuación entre dos fotogramas normales. El ojo se acostumbra tras unas cuantas reproducciones, y un número no.
ffmpeg -i clip.mp4 -frames:v 1 first.png
ffmpeg -i clip.mp4 -vf "select=eq(n\,1)" -frames:v 1 second.png
ffmpeg -sseof -0.05 -i clip.mp4 -frames:v 1 last.png
# La unión y después el paso normal. Lee el valor "All:" de cada uno.
ffmpeg -i last.png -i first.png -lavfi ssim -f null -
ffmpeg -i first.png -i second.png -lavfi ssim -f null -
La comparación debe ser relativa. Un clip con grano puntúa bajo en cualquier par de fotogramas, así que un umbral fijo descartaría clips que enlazan a la perfección. El clip anterior puntuó 0,868 en la unión frente a 0,850 entre fotogramas, lo que significa que la unión no es mayor que cualquier otro paso del vídeo.
Paso 3: repara un clip que no pasa
La mayoría de los fallos se pueden reparar sin volver a generar, y la reparación adecuada depende de lo que haya fallado.
| Problema | Reparación | Cuidado con |
|---|---|---|
| Diferencia pequeña, cámara fija | Fundir el último segundo con el primero | Con movimiento de cámara salen imágenes dobles |
| La cámara se mueve | Reproducir hacia delante y hacia atrás | Parece un rebobinado si algo tiene dirección, como el humo |
| Algo se desplaza, como bruma o un sujeto | Usar una ventana más corta donde inicio y final coincidan | El bucle se acorta |
| Destellos de un fotograma | Interpolar esos fotogramas | Revisa el brillo de todo el clip: la primera pasada encontró 3 de 10 |
| La misma imagen como primer y último fotograma | Medirlo igualmente | Tuvimos una unión visible y hizo falta un fundido de 1 s |
Reparaciones que hemos usado en nuestros bucles, con el riesgo de cada una.
En clips muy sutiles, los fundidos estándar de 8 bits pueden dejar un escalón visible a mitad de la transición. Mezclar a 16 bits hizo que la unión pareciera un fotograma más en nuestro caso.
Paso 4: codifica un archivo por pantalla
Codifica en H.264 MP4 sin pista de audio, una vez para escritorio y otra como recorte vertical para móvil. El recorte debe centrarse en el sujeto, porque el archivo de escritorio reducido lo deja demasiado pequeño en un móvil.
# Escritorio
ffmpeg -i clip.mp4 -an -c:v libx264 -preset slow -crf 19 -pix_fmt yuv420p -profile:v high -movflags +faststart hero.mp4
# Móvil: recorte 9:16 a 540×960
ffmpeg -i clip.mp4 -an -vf "crop=ih*9/16:ih,scale=540:960:flags=lanczos" -c:v libx264 -preset slow -crf 21 -pix_fmt yuv420p -profile:v high -movflags +faststart hero-mobile.mp4
# Póster: el primer fotograma, para que nada salte cuando empieza el vídeo
ffmpeg -i clip.mp4 -frames:v 1 -q:v 3 hero-poster.jpg
-an quita la pista de audio, y +faststart lleva el índice del archivo al principio para que la reproducción pueda empezar antes de terminar la descarga. La guía de H.264 de FFmpeg (se abre en una pestaña nueva) indica que subir el CRF en 6 reduce el archivo aproximadamente a la mitad, así que es el primer valor que conviene ajustar. Estos son los pesos que salieron en nuestro catálogo.
| Archivo | Archivos medidos | Menor | Mediana | Mayor | Por segundo |
|---|---|---|---|---|---|
| Escritorio, de 1920 a 2560 px de ancho | 17 | 1,09 MB | 2,91 MB | 4,84 MB | 0,45 MB |
| Móvil, 720×1280 | 14 | 0,45 MB | 1,35 MB | 3,74 MB | 0,21 MB |
Bucles de hero de nuestros fondos animados y de APSIS, de 4,6 a 7 segundos, medidos el 4 de noviembre de 2026.
El grano sale caro, porque cambia en cada fotograma. Una grabación de 64 segundos con grano de película pesaba 70 MB con CRF 25. Una reducción de ruido ligera (hqdn3d=4:3:12:12) y CRF 30 a 1280×800 la dejaron en 16 MB con el mismo nivel medio de grano. H.264 también es el formato común con mayor alcance, como muestra Can I use (se abre en una pestaña nueva).
| Formato | Compatibilidad total | Parcial | Nuestro uso |
|---|---|---|---|
| H.264 MP4 | 97,49 % | 0 % | Todos los bucles |
| WebM | 96,41 % | 0,84 % | Ninguno |
| AV1 | 79,04 % | 16,93 % | Ninguno |
| HEVC | 19,99 % | 74,95 % | Ninguno |
Compatibilidad mundial en navegadores según Can I use, consultada el 4 de noviembre de 2026.
Si prefieres partir de un bucle terminado, nuestros vídeos de fondo en bucle pasaron por estos mismos pasos.
Paso 5: intégralo para que siempre haya algo que mostrar
Pinta primero el póster, inicia el vídeo por script y gestiona el autoplay bloqueado. Quien visita la página debe ver una imagen terminada en todo momento, aunque el vídeo nunca llegue a reproducirse.
<video id="hero" muted loop playsinline poster="/hero-poster.jpg" width="1920" height="1080"></video>
<script>
const hero = document.getElementById("hero");
const phone = matchMedia("(max-width: 767px)").matches;
const still = matchMedia("(prefers-reduced-motion: reduce)").matches;
if (!still) {
hero.src = phone ? "/hero-mobile.mp4" : "/hero.mp4";
hero.play().catch((error) => {
if (error.name === "NotAllowedError") showPlayButton();
});
}
</script>
Aquí importan cuatro detalles:
- Un vídeo silenciado puede arrancar solo. La política de autoplay de Chrome (se abre en una pestaña nueva) siempre lo permite, y las reglas de WebKit para iPhone (se abre en una pestaña nueva) añaden
playsinlinepara reproducir dentro de la página. - Solo un error significa bloqueo.
play()(se abre en una pestaña nueva) falla conNotAllowedErroren ese caso, y los demás errores significan otra cosa. - El póster puede marcar tu puntuación de velocidad. web.dev (se abre en una pestaña nueva) cuenta el póster o el primer fotograma para el Largest Contentful Paint, lo que llegue antes. En el clip de 5 segundos anterior, los nuestros se quedaron en 50 a 85 KB.
- El contenido en movimiento necesita una pausa. WCAG 2.2.2 (se abre en una pestaña nueva) la pide cuando el movimiento empieza solo, dura más de 5 segundos y aparece junto a otro contenido.
El vídeo es una opción entre tres, así que lee nuestra comparativa de vídeo, WebGL y CSS como fondo de un hero antes de decidirte. Los fondos animados de nuestro catálogo pasaron por estos cinco pasos.
Veredicto. Un bucle limpio se decide al generar el clip. Fija la cámara, porque un plano fijo deja menos que reparar. Mide la unión, porque el ojo se acostumbra. Codifica un archivo por pantalla, lo que lleva nuestra mediana de 2,91 MB en escritorio a 1,35 MB en móvil.
Preguntas
Respuestas cortas a lo que suele venir después.
¿Cuánto debe durar un vídeo de fondo en bucle?
De cinco a siete segundos bastan para la mayoría de los fondos. Nuestros bucles de hero duran entre 4,6 y 7 segundos. Los clips más largos disimulan mejor la repetición, pero suman peso a razón de unos 0,45 MB por segundo en escritorio, así que la duración es lo primero que conviene recortar si el archivo pesa demasiado.
¿Cuánto debe pesar un vídeo de fondo?
Lo menos posible sin que pierda limpieza, porque no existe un límite estándar. Las guías publicadas van desde unos cientos de kilobytes hasta 5 MB. Nuestros bucles de escritorio pesan de 1,09 a 4,84 MB, y los de móvil, de 0,45 a 3,74 MB. Como referencia, la página de inicio móvil mediana pesaba 2362 KB en julio de 2025, según el Web Almanac.
¿Es mejor MP4 o WebM para un vídeo de fondo?
Usa H.264 MP4 si quieres un solo archivo. Tiene compatibilidad total en el 97,49 % de los navegadores según Can I use, frente al 96,41 % de WebM. Nosotros solo publicamos H.264, de modo que hay un archivo que mantener por pantalla. WebM puede pesar menos, pero supone una codificación más y otra ronda de pruebas.
¿Un vídeo de fondo hace más lenta la página?
Puede hacerlo, y lo primero que hay que mirar es el póster. web.dev cuenta el póster o el primer fotograma del vídeo, lo que llegue antes, como candidato a Largest Contentful Paint, que debería quedar por debajo de 2,5 segundos. Varios vídeos automáticos también se acumulan. En una pantalla 2×, los nuestros bajaron el catálogo de 60 a unos 30 fotogramas por segundo al hacer scroll.
¿Por qué mi vídeo de fondo no se reproduce solo en el iPhone?
Lo más habitual es que le falte muted o playsinline, los atributos que WebKit pide para reproducir un vídeo integrado en la página sin un gesto. Si ya los tiene, el navegador o el sistema operativo aún pueden rechazar la reproducción. En ese caso, play() falla con un NotAllowedError, así que deja el póster en pantalla y ofrece un botón de reproducción.
¿Un vídeo de fondo necesita un botón de pausa?
Sí, si empieza solo, se mueve durante más de 5 segundos y aparece junto a otro contenido, según WCAG 2.2.2. Un clip corto en bucle también cuenta, porque el movimiento continúa. Añade un control visible con el estilo del resto de la web, y detén el vídeo para quienes prefieren movimiento reducido en su dispositivo.
Olvídate de la página en blanco
Empieza desde una web terminada.
Cada plantilla es un prompt probado con su código, sus recursos y su movimiento.Sigue leyendo
Todos los artículos
Cómo escribir un prompt para crear una web completa
Las seis partes que necesita un prompt para crear una web completa, medidas en 62 prompts de nuestro catálogo.
Cómo crear una página web con Claude Code que no parezca genérica
El proceso, las skills y las revisiones que usamos para crear webs animadas completas con Claude Code.





















































