ffmpeg: извлечение кадров и получение их точных временных меток

ffmpeg: извлечение кадров и получение их точных временных меток

Я пытаюсь извлечь кадры изпеременная частота кадроввидео каждые 5 секунд и получить точные временные метки каждого извлеченного кадра. Вот что у меня есть на данный момент:

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

И вот что я получаю:

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

Мне нужна точная временная метка кадра, который использовался для извлечения, чтобы впоследствии я мог точно вырезать видео на основе сгенерированных миниатюр.

Кроме того, есть ли способ вывести vstats в stdout, а не в файл?

решение1

Я не уверен, что вы пытались сделать, но если это работает для вас, то все в порядке...

В любом случае, для пропуска кадров я бы использовалВЫБИРАТЬвидеофильтр (убедитесь, что у вас включен libavfilter). Для информации о кадрах я бы использовалШОУИНФОвидеофильтр.

Ваша команда должна быть примерно следующей:

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

(где 150 кадров — это 5 сек * 30 кадров в секунду)

Связанный контент