Cómo dividir un video en segmentos de 150 frames con ffmpeg y Windows

Dividir un video en segmentos exactos usando herramientas de línea de comandos puede parecer una tarea sencilla, pero el proceso con ffmpeg en Windows tiene sus propios desafíos. En este artículo, exploramos cómo lograr cortar un archivo de video en múltiples fragmentos idénticos.

Visualización del proceso de segmentación de video por lotes.
El proceso final de dividir el video en segmentos exactos de 150 frames usando ffmpeg y un script de Windows.

El inicio y los errores iniciales

Al intentar dividir el video, la primera aproximación no funcionó como se esperaba. El comando original solo generaba dos archivos: uno con 150 frames y otro con todo lo que quedaba del resto del archivo. Esto confirmó rápidamente que la herramienta estándar no era suficiente para realizar múltiples cortes automáticos.

La necesidad de un bucle

Se descubrió que `-segment_frames` solo genera un segmento por cada valor indicado, sin cortar sucesivamente. La solución requería escribir un script en Windows (un archivo `.bat`) que llamara a ffmpeg dentro de un bucle para extraer 150 cuadros por vez.

Depurando los argumentos y el JSON

Durante la implementación, surgieron varios errores técnicos. Primero, `ffprobe` rechazaba ciertos argumentos como `nokey` o `noprint_wrappers`. Luego, al intentar obtener el número total de frames para calcular los límites del bucle, el script falló porque el JSON devuelto incluía comillas alrededor del número (como «2062»). Esto rompió la lógica de comparación y dejó el bucle sin avanzar.

El error final: At least one output file must be specified

A pesar de corregir los argumentos, el comando de ffmpeg seguía fallando con el mensaje «At least one output file must be specified». Esto indicaba que algo en la expansión de las variables estaba fallando justo antes de ejecutar el comando.

La solución definitiva

Para resolverlo, se implementó una versión del script que imprimía el comando completo en pantalla antes de ejecutarlo. Esta estrategia permitió identificar exactamente qué estaba sucediendo y confirmar que todas las variables se estaban expandiendo correctamente. Con los ajustes finales para limpiar las comillas del conteo de frames y asegurar que el archivo de salida estuviera bien definido, el proceso funcionó perfectamente.

El resultado final fue un video dividido en segmentos exactos de 150 frames cada uno, demostrando cómo la depuración paso a paso puede resolver incluso los errores más complejos con herramientas de línea de comandos.