Genera miniaturas de vídeo durante el cambio de escena a una velocidad mínima de 1 por segundo.

Genera miniaturas de vídeo durante el cambio de escena a una velocidad mínima de 1 por segundo.

Tengo los siguientes requisitos para las miniaturas:

  1. El cambio de escena debe ser al menos un 6% diferente del último.select=gt(scene\,0.06)
  2. la relación de aspecto se mantiene en un ancho de 1280 pxscale='min(1280\, iw):-1'
  3. mínimo de 1 segundo entre cada miniatura-r 1
  4. Los nombres de archivos representan el desplazamiento temporal de la miniatura.-vsync 0 -frame_pts 1

Actualmente, esto se introduce en un comando como se muestra a continuación:

ffmpeg -copyts -i file.mp4 -vf "select=gt(scene\,0.06),scale='min(1280\, iw):-1'" -r 1 -vsync 0 -frame_pts 1 snapshot.1280.% 04d.png -f nulo

Sin embargo, recibo errores en el resultado:

El uso de -vsync 0 y -r puede producir archivos de salida no válidos

[image2 @ 0x7f804500a000] La aplicación proporcionó dts no válidos y que no aumentan monótonamente al muxer en la secuencia 0: 463 >= 463

¿Deberían ser algo de qué preocuparse en el comando o debería ignorarlos?

Respuesta1

Si necesita un mínimo de 1 segundo entre instantáneas, entonces debe modificar la expresión de selección para eso. Todo lo -rque se hace en este comando afecta el nombre de archivo que se forma debido a frame_pts. (Puede ignorar la advertencia de "archivos no válidos"; está pensada para un escenario diferente).

ffmpeg -copyts -i file.mp4 -vf "select=eq(n\,0)+gt(scene\,0.06)*gte(t-prev_selected_t\,1),scale='min(1280\, iw):-1'" -r 1 -vsync 0 -frame_pts 1 snapshot.1280.%04d.png

información relacionada