- FFmpeg permite transformar secuencias de imágenes en vídeos personalizados controlando framerate, códecs y resolución.
- Existen varios métodos de entrada (especificadores de formato, glob patterns y concat demuxer) para adaptarse al tipo de nombres de archivo.
- Es posible enriquecer los vídeos resultantes añadiendo audio, marcas de agua, efectos, cambios de velocidad y escalado.
- FFmpeg destaca por su potencia y automatización, mientras que las alternativas gráficas ofrecen flujos más sencillos para usuarios no técnicos.

Si alguna vez te has preguntado cómo convertir una montaña de fotos en un vídeo fluido (ya sea un timelapse, una presentación o un clip para redes), FFmpeg es probablemente la herramienta más potente que vas a encontrar… y encima es software libre. Puede asustar un poco porque se maneja desde la terminal, pero con unos cuantos comandos claros y algo de práctica se vuelve un aliado brutal para automatizar tareas que con un editor gráfico serían eternas.
En esta guía vas a ver, con bastante detalle, cómo usar FFmpeg para crear vídeos a partir de archivos de imágenes: desde instalarlo y preparar las fotos, hasta controlar la velocidad, el formato de salida, añadir audio, superposiciones o incluso jugar con efectos de cámara rápida y lenta. Además, verás varios métodos distintos para trabajar con secuencias de imágenes (especificadores de formato, glob patterns, concat demuxer) y también alguna alternativa gráfica menos técnica por si la línea de comandos no es lo tuyo.
Qué es FFmpeg y por qué merece la pena aprender a usarlo
FFmpeg es un conjunto de herramientas y bibliotecas de código abierto para procesar prácticamente cualquier formato de vídeo, audio e incluso imágenes. Su nombre viene de “Fast Forward Moving Picture Experts Group” y, aunque no lo parezca, es la tecnología que hay detrás de muchas plataformas que usas a diario: servicios de streaming, redes sociales, reproductores multimedia, conversores online, etc.
A diferencia de los editores clásicos con interfaz gráfica, FFmpeg se controla con comandos escritos en la terminal. Esto puede impresionar al principio, pero te da un control milimétrico sobre la codificación, los códecs, los filtros, la calidad, las resoluciones y, sobre todo, te permite automatizar procesos por lotes con scripts o integrarlo en otros sistemas.
Entre sus puntos fuertes está que es multiplataforma: funciona en Linux, Windows, macOS y otros sistemas tipo UNIX. Además, se distribuye bajo licencias GPL/LGPL y partes BSD, así que puedes usarlo tanto en proyectos personales como comerciales sin pasar por caja.
Con FFmpeg podrás, por ejemplo, crear un timelapse a partir de miles de fotos, extraer imágenes de un vídeo, combinar fotos, añadir pistas de audio, insertar marcas de agua, cambiar el códec, reducir el peso del archivo o generar GIFs animados… todo desde la terminal.
Instalar FFmpeg en distintos sistemas

Antes de ponerte a convertir imágenes en vídeo necesitas tener FFmpeg correctamente instalado. En muchas distribuciones GNU/Linux ya viene disponible en los repositorios oficiales, y en macOS y Windows también es sencillo de añadir.
En Debian, Ubuntu y derivados, lo habitual es instalarlo con el gestor de paquetes del sistema. Desde la terminal puedes hacer algo tan sencillo como actualizar el índice de paquetes y luego instalar el paquete ffmpeg con privilegios de administrador.
En macOS la forma más cómoda es usar Homebrew como gestor de paquetes. Primero se instala Homebrew (si no lo tienes) y después se incorpora FFmpeg con un solo comando brew. Esto evita tener que andar descargando binarios a mano y gestionando rutas.
En Windows tienes varias opciones: descargar el ejecutable oficial desde la web de FFmpeg y añadirlo al PATH, o recurrir a gestores como Chocolatey para instalarlo desde la línea de comandos. En cualquier caso, una vez hecho, podrás lanzar el comando ffmpeg desde cualquier terminal o consola de comandos.
Sea cual sea tu sistema, puedes comprobar que la instalación ha ido bien escribiendo en la terminal ffmpeg -version. Si ves información de versión, compilación y una lista de códecs y formatos soportados, todo está listo para seguir.
Conceptos básicos: entradas, salidas y contenedores de vídeo
Antes de entrar a fondo con las secuencias de imágenes, conviene tener claros algunos conceptos sobre cómo FFmpeg maneja las entradas y salidas, y qué pinta tienen los formatos tipo MP4, MKV o AVI que verás en los comandos.
La estructura general de un comando FFmpeg suele seguir este esquema: parámetros y archivos de entrada (indicados con -i), luego filtros y opciones de codificación, y al final el archivo de salida. En medio, puedes añadir parámetros de vídeo (-vf), audio (-af), códecs (-c:v, -c:a), tasas de bits, velocidades de fotogramas, etc.
Los archivos de salida se guardan dentro de un contenedor de vídeo. MP4, MKV, AVI, MOV, WEBM… todos ellos son contenedores. No definen por sí mismos el códec de vídeo o de audio, solo indican cómo se empaqueta todo para que los reproductores lo entiendan. Por ejemplo, un MP4 puede llevar vídeo H.264 y audio AAC, mientras que un MKV puede mezclar H.265 con audio FLAC y subtítulos.
Para la mayoría de usos (sobre todo en web, móviles y reproductores domésticos) el formato más práctico es MP4 con vídeo H.264, ya que ofrece muy buena compatibilidad y una relación calidad/tamaño muy equilibrada. Si necesitas funciones avanzadas (múltiples pistas, subtítulos complejos, etc.) MKV es una gran opción, aunque no lo soportan tan bien los navegadores.
Con FFmpeg puedes listar la enorme cantidad de códecs disponibles con ffmpeg -codecs o encoders concretos con ffmpeg -encoders; en realidad, para la mayoría de proyectos con imágenes te bastará con H.264 (libx264) y un audio AAC o MP3, si decides añadir sonido.
Preparar las imágenes para convertirlas en vídeo
La clave para que FFmpeg haga bien su trabajo al unir fotos es que la secuencia de imágenes esté correctamente ordenada y nombrada. Esto es especialmente importante si vas a usar especificadores de formato como %d, %02d, %03d, etc.
FFmpeg entiende distintos patrones de nombres. Uno muy clásico es usar ceros a la izquierda para numerar, por ejemplo fotos como foto-001.png, foto-002.png, … foto-999.png. En ese caso, el patrón en el comando sería algo como foto-%03d.png (el 3 indica el número de dígitos).
Si no te preocupa tanto el número de dígitos, también puedes usar nombres sin ceros iniciales: image1.jpg, image2.jpg, image3.jpg… con un patrón image%d.jpg. De nuevo, FFmpeg se encargará de buscar los archivos cuyo nombre case con ese patrón.
Existe también la opción de usar comodines tipo glob pattern, como *.jpg o imagen-*.png, ideal cuando tus fotos no están numeradas pero sí comparten una extensión o un prefijo común. En ese caso, FFmpeg hace un barrido de todos los archivos que enganchen con ese patrón.
Si en los nombres de archivo aparece un carácter % por cualquier motivo, debes escapar ese símbolo duplicándolo, usando %% en lugar de %, para que FFmpeg no lo interprete como un especificador de formato del propio patrón de numeración.
Convertir una secuencia de imágenes en un vídeo básico
Una vez tengas todas las imágenes numeradas y en la misma carpeta, crear un vídeo sencillo es tan simple como indicar el patrón de entrada y el nombre del archivo de salida. Por ejemplo, si tus fotos se llaman img-01.png, img-02.png, etc., podrías hacer algo así:
ffmpeg -i img-%02d.png video_salida.avi
En este caso, FFmpeg buscará archivos cuyo nombre empiece por img- y continúe con dos dígitos, y los empaquetará en un archivo AVI. La velocidad de reproducción y el códec por defecto dependerán de los ajustes estándar de tu compilación de FFmpeg, pero para algo básico suele ser suficiente.
Si quieres un control más preciso, lo habitual es especificar también la velocidad de fotogramas de entrada con -framerate y el códec de salida con -c:v. Un ejemplo típico para MP4 podría ser:
ffmpeg -framerate 5 -i img-%02d.png -c:v libx264 -pix_fmt yuv420p video.mp4
Aquí indicas que se lean 5 imágenes por segundo, que el vídeo se codifique con H.264 (libx264) y que el formato de píxel sea yuv420p, que es el más compatible con televisores, navegadores y reproductores comunes.
Elegir la velocidad de fotogramas adecuada
La tasa de fotogramas (fps) determina cuántas imágenes se ven por segundo en tu vídeo final. No existe un valor único correcto: depende totalmente del efecto que busques y del material de origen.
Si estás generando una animación tipo stop-motion o un timelapse rápido, valores como 24 o 25 fps (el estándar cinematográfico/televisivo) suelen dar una sensación de movimiento fluido. Para timelapses muy intensos, puedes subir a 30 fps e incluso más.
En cambio, para una presentación de diapositivas pausada, en la que quieras que cada foto se vea unos segundos, probablemente te interese un framerate mucho menor: 1 o 2 fps, por ejemplo. Esto hace que cada foto permanezca más tiempo en pantalla sin tener que duplicar archivos.
Ten en cuenta que si no fijas -framerate en la entrada, FFmpeg puede usar un valor por defecto (muchas veces 25 fps) que quizá no cuadre con lo que quieres y te genere un vídeo demasiado rápido o demasiado lento en función del número de fotos.
Además de la velocidad de fotogramas, puedes controlar la velocidad de reproducción a posteriori con filtros como setpts para vídeo (por ejemplo, setpts=0.5*PTS para que se vea al doble de velocidad) y atempo para audio (atempo=2.0 para que el sonido también vaya el doble de rápido).
Crear vídeos a partir de una sola imagen
No siempre necesitas una secuencia completa. A veces basta con una única fotografía que permanezca en pantalla durante un tiempo determinado, por ejemplo, como intro o pantalla fija con título y logos antes del contenido principal.
Para esto se usa la opción -loop 1, que indica a FFmpeg que repita la imagen en bucle, junto con -t para fijar la duración total del clip. Un comando típico podría ser:
ffmpeg -loop 1 -i portada.jpg -c:v libx264 -t 10 -pix_fmt yuv420p portada.mp4
Ese ejemplo genera un vídeo de 10 segundos en el que tu imagen portada.jpg se mantiene fija. A partir de ahí, puedes concatenar este pequeño clip con otro vídeo principal para formar un único archivo continuo con la intro incluida.
Si además quieres aplicar un ligero efecto de movimiento (zoom suave, desplazamiento, etc.), puedes recurrir a filtros de vídeo como zoompan o combinaciones de scale, crop y pad para simular un pequeño movimiento de cámara.
Método 1: Especificadores de formato para secuencias numeradas
Cuando tus fotos están bien numeradas (image1.jpg, image2.jpg, image3.jpg…), el método más directo para convertir esa secuencia en un vídeo es utilizar especificadores de formato en la ruta de entrada.
Por ejemplo, si tus archivos son image1.jpg, image2.jpg, … image50.jpg, puedes crear un vídeo leyendo una imagen por segundo y generando una salida a 30 fps con este comando:
ffmpeg -framerate 1 -i image%d.jpg -c:v libx264 -r 30 -pix_fmt yuv420p salida.mp4
En este contexto, -framerate 1 indica que se lee una imagen por segundo y -r 30 fija la velocidad de fotogramas del vídeo de salida en 30 fps. FFmpeg tomará la primera imagen como la que tenga el número más bajo; si quieres empezar en otra, puedes añadir -start_number 8, por ejemplo, para comenzar en image8.jpg.
Si has numerado con ceros a la izquierda (image01.jpg, image02.jpg, …), deberás adaptar el patrón: image%02d.jpg para dos dígitos, image%03d.jpg para tres, y así sucesivamente. Es importante que el patrón coincida con la forma exacta en la que has escrito los nombres, o FFmpeg te devolverá errores de archivo no encontrado.
La opción -c:v libx264 especifica que se use el codificador de vídeo H.264, mientras que -pix_fmt yuv420p asegura que el archivo resultante sea compatible con la mayoría de reproductores, navegadores y dispositivos móviles actuales.
Método 2: Glob pattern para nombres no secuenciales
Si tus imágenes no siguen una numeración sencilla, pero comparten una extensión de archivo común o un prefijo, puedes usar el patrón glob de FFmpeg para seleccionarlas todas a la vez sin renombrar una por una.
Imagina que en una carpeta tienes un puñado de .jpg mezclados con otros formatos, y quieres usar todos los .jpg (sin importar el nombre) para montar un vídeo. Un comando típico sería algo así:
ffmpeg -framerate 30 -pattern_type glob -i «*.jpg» -c:v libx264 -pix_fmt yuv420p salida.mp4
Aquí indicas con -pattern_type glob que vas a usar un patrón de estilo comodín, y con «*.jpg» le dices a FFmpeg que tenga en cuenta todos los archivos que terminen en .jpg del directorio actual. De esa forma, se generará una presentación donde cada foto será un fotograma distinto del vídeo.
Si tienes nombres con un prefijo común, podrías hacer algo como «imagen-*.png» para seleccionar solo los archivos que comiencen por imagen- y terminen en .png. Es una forma limpia de filtrar sin necesidad de reorganizar demasiado las carpetas.
Eso sí, conviene recordar que el orden en que se procesan las imágenes vendrá dado por cómo el sistema devuelve los archivos que coinciden con el patrón. Si necesitas un orden concreto que no se corresponde con el alfabético, quizá te compense renombrar o pasar a otro método como el concat demuxer.
Método 3: Concat demuxer para presentaciones personalizadas
Cuando quieres un control total sobre el orden y la duración de cada imagen, el concat demuxer es tu mejor amigo. La idea es sencilla: creas un archivo de texto que lista las imágenes y cuánto tiempo debe mostrarse cada una, y luego FFmpeg genera el vídeo siguiendo ese guion.
Primero, en la misma carpeta de las fotos, creas un archivo llamado algo así como input.txt. Dentro, vas añadiendo líneas del estilo:
file ‘imagen01.jpg’
duration 3
file ‘imagen02.jpg’
duration 5
file ‘imagen03.jpg’
duration 2
Cada bloque file / duration indica la ruta de la imagen y el número de segundos que permanecerá en pantalla. Puedes variar la duración para que unas fotos se vean más tiempo que otras, lo cual es perfecto para presentaciones narradas, resúmenes de proyectos, etc.
Una vez tengas el archivo de texto listo, ejecutas un comando como este:
ffmpeg -f concat -safe 0 -i input.txt -c:v libx264 -pix_fmt yuv420p salida.mp4
El parámetro -f concat indica que estás usando el demuxer de concatenación, y -safe 0 permite rutas no tan restrictivas (por ejemplo, si pones rutas absolutas). FFmpeg leerá cada línea, montará internamente la secuencia en la memoria de trabajo y generará el vídeo con cada imagen mostrada durante el tiempo indicado.
Añadir audio, texto y marcas de agua a tus vídeos
Una vez dominas la parte de convertir fotos en vídeo, es muy habitual querer añadir una pista de audio (música, narración, efectos) y alguna superposición de texto o logo para darle un acabado más profesional.
Para incorporar audio a una presentación basada en imágenes, puedes aprovechar los patrones glob y añadir un segundo -i apuntando a un archivo de sonido. Por ejemplo:
ffmpeg -framerate 1 -pattern_type glob -i «*.jpg» -i audio.mp3 -shortest -c:v libx264 -r 30 -pix_fmt yuv420p salida.mp4
En este caso, -shortest indica que la duración final del archivo coincida con la pista de menor longitud, de modo que si el audio es más largo que la secuencia de imágenes, se cortará justo al terminar las fotos.
Si lo que quieres es superponer una imagen con un logo o marca de agua sobre un vídeo ya generado, puedes emplear el filtro overlay. Por ejemplo:
ffmpeg -i video.mp4 -i watermark.png -filter_complex «overlay=10:10» salida.mp4
La parte overlay=10:10 indica la posición (x,y) donde se coloca la imagen de la marca de agua sobre el vídeo. Si quieres ajustar la transparencia, puedes encadenar un filtro blend con all_opacity para fijar, por ejemplo, un 70 % de opacidad en la marca de agua.
Controlar calidad, resolución y tamaño de archivo
FFmpeg ofrece muchas opciones para equilibrar calidad de imagen, resolución y tamaño final del vídeo. Una de las más importantes es el parámetro -crf cuando usas libx264 como códec.
El valor de -crf (Constant Rate Factor) define la calidad objetivo: cuanto más bajo el número, mejor calidad (y mayor archivo); cuanto más alto, más compresión y menor peso. Valores como 18 suelen dar una calidad muy alta, casi sin pérdida visible, mientras que 22-23 economizan bastante espacio manteniendo un aspecto muy digno para proyectos web.
Si necesitas cambiar la resolución del vídeo, puedes usar el filtro de escala añadiendo un -vf scale=ANCHO:ALTO. Por ejemplo:
ffmpeg -i input.mp4 -vf scale=640:480 -c:v libx264 -pix_fmt yuv420p salida_480p.mp4
En este ejemplo se convierte el vídeo a 640×480 (480p). Puedes adaptar la pareja de valores a la resolución concreta que necesitas (1280×720 para 720p, 1920×1080 para Full HD, etc.), teniendo presente que escalar hacia arriba no inventa detalle, solo amplía la imagen.
Problemas frecuentes al pasar de imágenes a vídeo
Al trabajar con FFmpeg, especialmente cuando gestionas muchas fotos, es habitual encontrarse con algunos errores típicos que conviene tener presentes para no volverse loco.
Uno de ellos tiene que ver con los nombres de archivo incorrectos o incoherentes: si falta una numeración intermedia, si hay un salto raro o si el patrón del comando no coincide con el nombre real de las imágenes, FFmpeg puede detenerse con mensajes de error o ignorar algunos fotogramas.
También son habituales las erratas en los comandos: una comilla que falta, un guion mal escrito, un parámetro pegado que debería ir separado, etc. Conviene revisar con calma la sintaxis y, si hace falta, consultar la documentación oficial o ejemplos de uso antes de volverte loco.
Otro detalle importante es el formato de píxel. Si no estableces yuv420p en la salida, algunos reproductores menos modernos pueden dar problemas de compatibilidad con ciertos formatos de píxel por defecto. Añadir -pix_fmt yuv420p suele ahorrar dolores de cabeza.
Por último, recuerda que FFmpeg está en desarrollo activo. Si usas una versión muy antigua, es posible que tengas errores, comportamientos extraños o limitaciones que ya se han resuelto en versiones más recientes. Mantener FFmpeg actualizado suele ser una buena idea, especialmente si trabajas con formatos modernos o resoluciones altas.
Automatizar flujos complejos con scripts y YAML
Cuando empiezas a usar FFmpeg para algo más que un experimento puntual, tiene mucho sentido automatizar las tareas repetitivas con scripts. En algunos proyectos se combina FFmpeg con archivos de configuración YAML y utilidades como yq para construir flujos muy flexibles.
Por ejemplo, puedes tener un script que lea un config.yml donde defines una lista de elementos (imágenes, vídeos, duración de cada uno, niveles de volumen, recortes de inicio y fin, etc.) y que genere automáticamente clips temporales que luego concatena en un único vídeo final siguiendo esos parámetros.
Este tipo de sistemas permiten montar intros con imagen fija, bloques de vídeo principal y cierres institucionales, añadiendo transiciones suaves (con filtros como xfade para vídeo y acrossfade para audio), retocando resolución, estandarizando el audio, y en general asegurando un estilo y una calidad muy coherentes en toda una serie de vídeos.
La ventaja de este enfoque es que cualquiera puede editar el archivo YAML (o un formulario que lo genere) para definir qué se quiere montar, mientras que el script se encarga de todas las invocaciones a FFmpeg, sin necesidad de que el usuario final toque la línea de comandos directamente.
Alternativas no técnicas a FFmpeg para unir imágenes y vídeo
Todo lo anterior está genial si te sientes cómodo escribiendo comandos y no te importa lidiar con sintaxis y terminal. Pero es verdad que para muchas personas ese entorno se hace cuesta arriba, y prefieren algo más visual donde arrastrar y soltar.
En ese terreno existen programas de edición como Wondershare Filmora u otros editores con interfaz gráfica que permiten crear presentaciones de fotos, añadir transiciones, insertar música y exportar a MP4 con unos cuantos clics. No ofrecen la misma precisión ni capacidad de automatización que FFmpeg, pero resultan muy accesibles para usuarios no técnicos. Si buscas alternativas centradas en Windows, también puedes consultar guías sobre cómo crear vídeos con editores clásicos.
En los últimos tiempos también han surgido soluciones con IA para crear vídeos, donde simplemente subes una foto, escribes una pequeña descripción y el sistema se encarga de animar la imagen, añadir movimiento de cámara, interpolar fotogramas, extender la duración del clip o incluso generar bandas sonoras automáticas.
Estas herramientas están pensadas para quienes buscan un resultado vistoso sin tener que profundizar en conceptos de códecs, contenedores, framerate o filtros, a costa de sacrificar control fino sobre cada parámetro. FFmpeg, en cambio, sigue siendo la opción ideal cuando necesitas precisión, reproducibilidad y capacidad para integrarlo en flujos automatizados o proyectos complejos.
Una vez entiendes cómo FFmpeg interpreta patrones de nombres, cómo gestionar la velocidad de fotogramas, los códecs, el formato de píxel, las duraciones y la concatenación, se vuelve una especie de navaja suiza con la que puedes pasar de simples colecciones de imágenes a piezas de vídeo pulidas, listas para timelapses, presentaciones, cursos online, campañas de marketing o cualquier otro proyecto que se te ocurra, todo ello con la libertad del software libre y la potencia de la línea de comandos.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.