Estoy usando ffmpeg para extraer fotogramas clave de un video. Este es el comando:
ffmpeg -i test2.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 160x90 -f image2 thumbnails-%02d.jpeg
¿Cómo puedo obtener el índice de cada fotograma clave extraído en el video? Por ejemplo, para el primer cuadro I, el índice sería 0, para el segundo sería 24, etc.
Respuestas:
Como mencionó @dstob, puede usar
ffprobe
para obtener los I-frames y su información asociada.ffprobe
viene con algunas de las compilaciones estáticas en la página de descarga y también se puede construir desde la fuente.Esto supone que estás en Linux / Unix:
Extraer cuadros y tipos de cuadros
El
grep
comando filtra las líneas conI
ellas y cuenta su índice (usando la-n
opción). Elcut
comando selecciona solo la primera columna de la salida (el índice). Tenga en cuenta que este índice se basa en 1, no en 0.Cambiar el nombre de los archivos de salida según el índice
En realidad, puede canalizar estos índices a una lista:
Luego haga una lista de todas las miniaturas también:
Luego pegue esos dos juntos:
La lista ahora contiene el nombre de la miniatura y el índice. Realice un cambio de nombre basado en eso:
Lo anterior cambiará el nombre
thumbnail-01.jpeg
athumbnail-0.jpeg
. Tenga en cuenta que no hay relleno de cero en el índice de salida. Si desea ponerlo a cero, digamos, 5 dígitos, useprintf
:En Windows, haría exactamente lo mismo
ffprobe
pero analizaría la salida de manera diferente. Sin embargo, no tengo idea de cómo realizar el cambio de nombre allí.fuente
[FRAME]
línea y una[/FRAME]
línea para cadapict_type
línea.-of csv
opción paraffprobe
. Sin embargo, lo que está describiendo es el formato de salida predeterminado.Si desea utilizar FFMPEG como se indicó originalmente, puede enumerar todo o una lista parcial, así como crear jpg con lo siguiente:
Retirar
-t 15
sin límite de tiempo o cambiar a su gusto. Eliminar-s 160x90 -f image2 thumbnail-%02d.jpeg
o cambiar para adaptarse a la eliminación de miniaturas.fuente