¿Cómo corregir el error ‘Duración pasada demasiado grande’ en FFmpeg?

FFmpeg es un programa de código abierto y de uso gratuito que se usa para manejar video, audio y otras transmisiones multimedia. El programa ha sido diseñado para manejar el procesamiento de archivos de video y audio basado en la línea de comandos. Sin embargo, recientemente, han estado llegando muchos informes de un “Duración pasada demasiado grande” Error al codificar o reducir la escala de un video.

Logotipo de MPEG

¿Qué causa el error «Duración pasada demasiado grande» en FFmpeg?

Después de recibir numerosos informes de varios usuarios, decidimos investigar el problema e ideamos un conjunto de soluciones para rectificarlo por completo. Además, analizamos los motivos por los que se desencadena este error y los enumeramos de la siguiente manera:

  • Falta la tasa de fotogramas de entrada: En la mayoría de los casos, el problema se debe a que no se ingresó la velocidad de fotogramas de entrada para las imágenes. Esto hace que el programa suponga que la velocidad de fotogramas de entrada es de 25 fps, lo que puede causar problemas si ese no es el caso.
  • Configuración de sincronización no implementada: Con la mayoría de los usuarios, la implementación de ciertas configuraciones de sincronización solucionó el problema. A veces, es posible que los cuadros no se sincronicen correctamente debido a que ciertos cuadros pueden perderse y este error puede desencadenarse.

Ahora que tiene una comprensión básica de la naturaleza del problema, avanzaremos hacia las soluciones. Asegúrese de implementarlos en el orden específico en que se presentan para evitar conflictos.

Solución 1: agregar marcos de entrada

Si no se ha agregado la velocidad de cuadros de entrada del video, es posible que se pierdan algunos cuadros y se active el error. Por lo tanto, en este paso, agregaremos los marcos de entrada para eso:

  1. Observe la convocatoria que usó para convertir el video, podría estar en similar a lo siguiente
    ffmpeg -i %05d.png -r 24 -c:v libx264 -crf 5 out.mkv
  2. Ahora simplemente agregar los cuadros por segundo a la convocatoria utilizada de la siguiente manera
    ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv
  3. Compruebe si el problema persiste.

Solución 2: uso de indicadores de sincronización

Agregar los indicadores de sincronización puede ayudar a sincronizar la salida y el video de entrada de acuerdo con las velocidades de fotogramas iniciales del video. Por lo tanto, si no se han agregado los comandos de sincronización, es posible que los fotogramas no se estén sincronizando correctamente. En este paso, agregaremos los comandos de sincronización

  1. En esta etapa, probablemente debe estar utilizando la siguiente convocatoria
    ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv
  2. Sin embargo, en lugar de esto, utilizar la siguiente convocatoria
    ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv -async 1 -vsync 1
  3. Tenga en cuenta que acabamos de agregar el «-async 1 -vsync1” a la convocatoria y esto debe agregarse al final de la convocatoria que está utilizando.
    Nota: Su convocatoria inicial puede diferir de la utilizada como ejemplo. Los cambios agregados a la convocatoria, sin embargo, no deben diferir.