Saltar al contenido principal

Guía · CLI · 2026

Cómo extraer fotogramas de video con FFmpeg (guía completa)

FFmpeg puede sacar un still, muestrear cada N segundos, volcar todos los fotogramas o quedarse solo con keyframes. Abajo van comandos probados para pegar en la terminal — y cuándo un extractor en el navegador es más rápido.

Por Publicado Actualizado

Extraer un fotograma en un timestamp

Coloca -ss antes de -i para que FFmpeg haga seek primero y escriba exactamente un fotograma de video. Es el patrón más rápido en archivos largos.

ffmpeg -ss 00:01:23.000 -i input.mp4 -frames:v 1 frame.jpg

Cambia el timestamp según necesites. Para PNG, usa el nombre de salida frame.png.

Extraer un fotograma cada N segundos

Usa el filtro fps. fps=1 es un fotograma por segundo; fps=1/5 es un fotograma cada cinco segundos.

mkdir -p frames
ffmpeg -i input.mp4 -vf fps=1 frames/out_%04d.jpg

# one frame every 5 seconds
ffmpeg -i input.mp4 -vf fps=1/5 frames/out_%04d.jpg

Extraer todos los fotogramas

Si omites el filtro fps, se escribe cada fotograma decodificado. Un clip de 10 minutos a 30 fps puede generar ~18.000 imágenes — calcula el disco antes.

mkdir -p all_frames
ffmpeg -i input.mp4 all_frames/frame_%06d.png

Extraer solo keyframes

Conserva los I-frames con un filtro select y salida a tasa variable para no inventar duplicados entre keyframes.

mkdir -p keyframes
ffmpeg -i input.mp4 -vf "select='eq(pict_type\,I)'" -vsync vfr keyframes/k_%04d.jpg

Controlar la calidad JPG con -q:v

En salidas MJPEG/JPG, -q:v 2 es un buen valor de alta calidad (aprox. 2–5 para stills visualmente excelentes; números más altos = más chico / menos calidad).

ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 -q:v 2 still.jpg

Prefiere PNG cuando las etiquetas o reediciones no toleran pérdida generacional. Prefiere JPG cuando necesitas miles de previews.

Cuándo un extractor en el navegador es más rápido

FFmpeg gana en scripts, servidores y lotes de cientos de archivos. Un extractor en el navegador gana cuando quieres ver la línea de tiempo, probar tres candidatos de miniatura y bajar un ZIP sin instalar nada. Para ese camino, abre el extractor gratis de GetVideoFrames — local, sin subir el video. Aplican límites del navegador y del dispositivo. Los equipos de ML también pueden empezar en la herramienta de muestreo de datasets.

FAQ

Preguntas frecuentes

¿Cuál es el comando FFmpeg más rápido para un fotograma?
Pon -ss antes de -i y usa -frames:v 1. El seek antes del input es mucho más rápido en archivos largos que decodificar desde el inicio. Ejemplo: ffmpeg -ss 00:01:23 -i input.mp4 -frames:v 1 frame.jpg
¿Cómo extraigo 1 fotograma por segundo con FFmpeg?
Usa el filtro fps: ffmpeg -i input.mp4 -vf fps=1 frames/out_%04d.jpg. Para un fotograma cada 5 segundos usa fps=1/5. Crea la carpeta de salida primero.
¿Debo usar JPG o PNG con FFmpeg?
JPG con -q:v 2 es un buen default para previews y datasets que toleran compresión leve. PNG conviene para etiquetado sin pérdida y re-encodes repetidos. Elige según almacenamiento vs fidelidad.