Это очень просто с ffmpeg, и он can выводит по одному кадру каждые N секунд без дополнительного скриптинга. Для экспорта в виде последовательности изображений просто используйте myimage_%04d.png
или аналогичный вывод. Бит %0xd
преобразуется в нулевое целое число x
цифр длиной - в приведенном мною примере выводится
myimage_0000.png
,
myimage_0001.png
,
myimage_0002.png
Вы можете использовать множество форматов неподвижных изображений, png, jpeg, tga, что угодно (полный список смотрите в разделе ffmpeg -formats
).
Хорошо, теперь мы знаем, как экспортировать фильм как последовательность изображений, но скажем, что мы не хотим экспортировать каждый отдельный кадр?
Хитрость заключается в том, чтобы просто изменить частоту кадров на выходе на то, что мы хотим, используя опцию -r n
, где n
- это количество кадров в секунду. 1 кадр в секунду будет -r 1
, один кадр каждые четыре секунды будет -r 0.25
, один кадр каждые десять секунд будет -r 0.1
и так далее.
Таким образом, чтобы сложить все вместе, так будет выглядеть сохранение одного кадра input.mov
каждые четыре секунды до output_0000.png
, output_0001.png
и т.д.:
ffmpeg -i input.mov -r 0.25 output_%04d.png
Обратите внимание, что опция -r 0.25
идет после части -i input.mov
, потому что она контролирует частоту смены кадров выхода. Если вы поставите его перед, то он будет обрабатывать входной файл так, как если бы он имел указанную частоту кадров.
Измените %xd на столько цифр, сколько вам нужно, например, если команда создаст более 10,000 кадров, измените %04d
на %05d
. Это также работает для входных файлов, которые являются последовательностью изображений. Читайте подробнее здесь .
Пользователи Windows : В командной строке используйте %
пример: ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png
В CMD и BAT сценариях используйте %%
пример: ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png
Так что удвойте %%
в сценариях, и один %
в интерактивной командной строке. Ошибка в любой из этих ситуаций спровоцирует ошибку.