ffmpeg: extrae fotogramas y obtiene sus marcas de tiempo exactas

ffmpeg: extrae fotogramas y obtiene sus marcas de tiempo exactas

Estoy intentando extraer fotogramas de unvelocidad de fotogramas variablevideo cada 5 segundos y obtenga las marcas de tiempo exactas de cada fotograma extraído. Esto es lo que tengo hasta ahora:

-i inputfile -vstats_file vstats.log  -vsync 2 -vcodec png -r 0.2 -f image2pipe -

Y esto es lo que obtengo:

frame=     1 q= 0.0 f_size= 136261 s_size=      133kB **time= 5.000** br=   218.0kbits/s avg_br=   218.0kbits/s type= I
frame=     2 q= 0.0 f_size= 139382 s_size=      269kB **time= 10.000** br=   223.0kbits/s avg_br=   220.5kbits/s type= I
frame=     3 q= 0.0 f_size= 141631 s_size=      407kB **time= 15.000** br=   226.6kbits/s avg_br=   222.5kbits/s type= I

Necesito la marca de tiempo exacta del fotograma que se utilizó para la extracción, para luego poder cortar con precisión el vídeo en función de las miniaturas generadas.

Además, ¿hay alguna manera de imprimir vstats en stdout en lugar de en un archivo?

Respuesta1

No estoy seguro de lo que intentaste hacer, pero si te funciona, entonces está bien...

De todos modos, para saltar cuadros habría usadoSELECCIONARfiltro de video (asegúrese de tener habilitado libavfilter). Para información de marcos, habría usadoMOSTRAR INFORMACIÓNfiltro de vídeo.

Su comando debería ser algo como lo siguiente:

ffmpeg -i inputfile -vf '[in]select=not(mod(n\,150))[s1];[s1]showinfo[out]' -vcodec mpeg2video outputfile

(donde 150 cuadros son 5 segundos * 30 fps)

información relacionada