É 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.