É muito simples com o ffmpeg, e can sai um frame a cada N segundos sem guião extra. Para exportar como uma sequência de imagem basta usar myimage_%04d.png ou semelhante como saída. O %0xd bit é convertido para um inteiro de x inteiro de myimage_0000.png dígitos - o exemplo que dei obtém a saída como
myimage_0001.png,
myimage_0002.png,
ffmpeg -formats -r n
Pode usar muitos formatos de imagem estática, png, jpeg, tga, o que quer que seja (ver n para uma lista completa).
Ok então agora sabemos como exportar o filme como uma sequência de imagens, mas digamos que não queremos exportar cada frame?
O truque é simplesmente mudar a taxa de frames da saída para o que quisermos utilizando a opção -r 1 onde -r 0.25 é o número de frames por segundo. 1 frame por segundo seria -r 0.1, um frame a cada quatro segundos seria input.mov, um frame a cada dez segundos seria output_0000.png e assim por diante.
,
Assim, para juntar tudo isto, seria assim que pouparia um frame de output_0001.png a cada quatro segundos a -r 0.25, -i input.mov etc.:
ffmpeg -i input.mov -r 0.25 output_%04d.png
Note que a opção %04d vai após a parte %05d, porque está a controlar a taxa de frames da saída. Se a colocar antes da entrada, trataria o ficheiro de entrada como se tivesse a taxa de fotogramas especificada.
Mude a %xd para o número de dígitos que precisar, por exemplo, se o comando criar mais de 10.000 fotogramas mude a % para ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png. Isto também funciona para ficheiros de entrada que são sequência de imagens. Leia mais aqui .
Usuários do Windows : Na linha de comando usar %%
exemplo: ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png
Em CMD e BAT Scripts usar %%
exemplo: %
Então duplo 0x6& em scripts, e simples 0x6& na linha de comando interactiva. Enganar-se em qualquer uma das situações gerará um erro.