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
ffprobepara obtener los I-frames y su información asociada.ffprobeviene 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
grepcomando filtra las líneas conIellas y cuenta su índice (usando la-nopción). Elcutcomando 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.jpegathumbnail-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
ffprobepero 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_typelínea.-of csvopció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 15sin límite de tiempo o cambiar a su gusto. Eliminar-s 160x90 -f image2 thumbnail-%02d.jpego cambiar para adaptarse a la eliminación de miniaturas.fuente