Вы можете использовать фильтр select чтобы выбрать кадры, которые соответствуют выражению. Если выражение оценивается как ненулевое число или true , оно выберет эти кадры. Например, если ваш фильтр -vf select="between(n\, 0\, 7)" , он выберет первые восемь кадров. Номер кадра равен n и начинается с нуля.
Комбинируя это с оператором mod (modulo), вы можете выбрать первые восемь кадров каждой группы, скажем, 24 кадра, то есть каждую секунду для видео с 24 кадрами в секунду:
ffmpeg -i input.mp4 -vf "select=between(mod(n\, 24)\, 0\, 7), setpts=N/24/TB" output.mp4
Фильтр setpts необходим для настройки временных меток кадров, чтобы в вашем видео не было пропусков.
Чтобы получить первые восемь кадров каждые пять секунд, умножьте 24 на 5:
ffmpeg -i input.mp4 -vf "select=between(mod(n\, 120)\, 0\, 7), setpts=N/24/TB" output.mp4
Чтобы вывести все в PNG, измените вывод с output.mp4 на output-%04d.png - вы получите последовательно пронумерованные PNG.