Выберите ключевой кадр, ближайший к определенному моменту, с помощью FFMPEG.

У меня есть видео MP4, созданное сторонним программным обеспечением. Я не знаю, есть ли ключевые кадры с регулярными интервалами или нет. Я успешно извлек видеокадр, соответствующий 3-й минуте (180 секунд * кадров / с), с помощью FFMPEG.

То, что я хочу сделать, это извлечь "ближайший" ключевой кадр на третью минуту - поскольку часто бывает так, что кадр, который я извлекаю с текущим успешным кодом, НЕ является ключевым и, следовательно, размытым.

Я знаю, что есть способ извлечь все ключевые кадры в FFMPEG, но есть ли способ извлечь ключевой кадр, ближайший к определенному времени в видео?

Спасибо большое!

2 ответа

Вы можете использовать фильтр выбора , чтобы выбрать кадр «I» (также известный как ключевой кадр).

       ffmpeg -ss 3:00 -i "my_video.mkv" -map 0:v:0 -filter:v "select=eq(pict_type\,I)" -vframes 1  3_min.jpg

В приведенном выше примере мы используем FFmpeg для:

  • перейти к трехминутной отметке следующего ввода -ss 3:00
  • определить ввод -i "my_video.mkv"
  • выберите из первого ввода: видеодорожка: особенно первая -map 0:v:0
  • используйте волшебный фильтр выбора на видео -filter:v "select=eq(pict_type\,I)"
  • взять только один кадр из фильма -vframes 1
  • определить, где сохранить изображение и в каком формате (можно изменить на .bmp, .png, так далее...) 3_min.jpg

Вы можете использовать Avidemux для поиска ключевых кадров, также известных как I-кадры.

Другие вопросы по тегам