
Я пытаюсь извлечь кадры изпеременная частота кадроввидео каждые 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 кадров в секунду)