Tengo los siguientes requisitos para las miniaturas:
- El cambio de escena debe ser al menos un 6% diferente del último.
select=gt(scene\,0.06)
- la relación de aspecto se mantiene en un ancho de 1280 px
scale='min(1280\, iw):-1'
- mínimo de 1 segundo entre cada miniatura
-r 1
- 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 -r
que 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