/casos/montaje-automatico-video
La máquina lenta no es un problema: es la restricción de diseño
Un pipeline de montaje automático: entra material en bruto y sale un vídeo editado. Las decisiones de montaje —qué cortar, qué texto, dónde el zoom— las toma la IA; los píxeles los mueve ffmpeg.
- Cliente
- Herramienta propia
- Rol
- Diseño y desarrollo. Medición del equipo, arquitectura del motor y decisiones de compromiso entre calidad y tiempo.
- Periodo
- 2026 — en curso
- Estado
- En desarrollo
El problema
Montar vídeo corto a mano es repetitivo: transcribir, cortar los silencios, poner subtítulos, meter una tarjeta de texto, exportar. Automatizarlo es viejo. Lo que no es viejo es hacerlo en un portátil de 2012 con dos núcleos, sin tarjeta gráfica aprovechable y con la RAM contada.
La decisión
Se midió primero, y la medición cambió la arquitectura entera
La forma elegante de animar textos sobre vídeo es renderizar HTML fotograma a fotograma con un navegador: se escribe la animación en CSS y sale lo que uno quiera. Medido en este equipo, Chrome tardaba 864 ms por fotograma — 1,16 imágenes por segundo. Un vídeo de sesenta segundos son veintiséis minutos solo de rasterizar. ffmpeg, para el mismo material, iba a 1,2 veces la duración.
De ahí sale la decisión que explica todo el motor: Chrome se usa para rasterizar una tarjeta a una imagen, una sola vez, y ffmpeg la anima como una capa encima. Se pierde la animación CSS arbitraria; a cambio, un vídeo corto se monta en minutos en vez de en media hora. Veintidós veces más rápido, en el mismo equipo y con el mismo resultado en pantalla para lo que de verdad se usa.
La segunda medición movió el trabajo de sitio. La misma prueba en el portátil y en el servidor: diez segundos de vídeo vertical con subtítulos quemados y zoom tardaban 17 segundos en el portátil y 7 en el servidor. Lo pesado se fue allí, y el portátil se quedó con lo que decide, no con lo que calcula.
Y una restricción que no es técnica sino de disco: el sistema tenía 0,6 GB libres. Nada del proyecto vive ahí — ni modelos, ni caché, ni los temporales de ffmpeg. Cada paso pesado comprueba la memoria libre antes de empezar y avisa, porque quedarse sin RAM a mitad de una transcripción da un error que no le dice nada a quien lo lee.
Qué construí
- Transcripción con marcas de tiempo y corte automático de silencios.
- Tarjetas de texto rasterizadas una vez y animadas por ffmpeg como capa.
- Subtítulos quemados, zoom y recorte vertical para formato de teléfono.
- Comprobación de memoria y disco antes de cada paso pesado, con aviso legible.
- Trabajo pesado en el servidor; el portátil solo decide el montaje.
Este caso no lleva demo en vivo: no es una web, es un proceso. Lo que vale la pena enseñar es el resultado, y eso son vídeos.
- Python
- ffmpeg
- WhisperX
- Chrome headless
- Docker
Las cifras de esta página son medidas en el equipo real el 15 de septiembre de 2026, no estimaciones.