Мне нужно извлечь кадры самого высокого качества из видео. Я буду использовать ffmpeg следующим образом:

ffmpeg -i source_vid.mp4 -ss 15:10.123 -to 15:11.249 frames/frame_%03d.png

Мои вопросы:

  1. Будет ли ffmpeg автоматически находить «правильный» кадр по времени -ss или он будет «интерполировать» между двумя кадрами, если время -ss не точно соответствует времени кадра?
  2. Если ответ на поставленный выше вопрос «интерполировать», как я могу гарантировать, что получаю точный «правильный» кадр вместо «интерполированного» кадра?

(Я извиняюсь, если используемые мной термины не являются точными или правильными; не стесняйтесь исправлять мою терминологию)

Спасибо!

1 ответ1

1

Поскольку вы указали ss и to качестве параметров вывода, FFmpeg сгенерирует все кадры от начала файла, но отбросит их до достижения начальной позиции. Переместите эти параметры до ввода.

ffmpeg -ss 15:10.123 -to 15:11.249 -i source_vid.mp4 frames/frame_%03d.png

FFmpeg не будет интерполировать, если не указан фильтр.

Для точного выделения кадра по индексу используйте

ffmpeg -i source_vid.mp4 -vf trim=start_frame=n:end_frame=m frames/frame_%03d.png

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