4

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

1 ответ1

2

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

В любом случае, для пропуска кадров я бы использовал видеофильтр SELECT (убедитесь, что у вас включен libavfilter). Для кадров info я бы использовал видеофильтр SHOWINFO .

Ваша команда должна выглядеть примерно так:

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .