Выберите ключевой кадр, ближайший к определенному моменту, с помощью 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