ffmpeg: extrai frames e obtém seus carimbos de data/hora exatos

ffmpeg: extrai frames e obtém seus carimbos de data/hora exatos

Estou tentando extrair frames de umtaxa de quadros variávelvídeo a cada 5 segundos e obtenha os carimbos de data/hora exatos de cada quadro extraído. Isto é o que tenho até agora:

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

E é isso que eu recebo:

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

Preciso do carimbo de data/hora exato do quadro que foi usado para extração, para posteriormente poder cortar o vídeo com precisão com base nas miniaturas geradas.

Além disso, existe uma maneira de imprimir vstats em stdout em vez de em um arquivo?

Responder1

não tenho certeza do que você tentou fazer, mas se funcionar para você, tudo bem ...

De qualquer forma, para pular frames eu usariaSELECIONARfiltro de vídeo (certifique-se de ter o libavfilter ativado). Para informações sobre quadros, eu teria usadoMOSTRAR INFORMAÇÕESfiltro de vídeo.

Seu comando deve ser algo como o seguinte:

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

(onde 150 quadros são 5 segundos * 30fps)

informação relacionada