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, а не a файл?

20
задан Mango
03.12.2022 12:21 Количество просмотров материала 2488
Распечатать страницу

1 ответ

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

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

ваша команда должна быть примерно такой:

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

(где 150 кадров 5sec * 30fps)

2
отвечен E.G. 2022-12-04 20:09

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх