
Tenho uma pasta cheia de imagens que vão de 0 a qualquer número e preciso transformar essas imagens em vídeo. Eles são todos arquivos .PNG. Aqui está o meu comando que estou usando:
ffmpeg.exe -f image2 -framerate 30 -pattern_type sequence -start_number 1 -r 30 -i "img%%04d.jpg" -s 1280x720 test.avi
Quando executo isso, recebo este erro:
[image2 @ 002be580] Could find no file with path 'img%04d.jpg' and index in the range 1-5
img%04d.jpg: No such file or directory
O que posso mudar para que isso funcione?
Responder1
padrão de sequência
O tipo de padrão padrão. img%d.jpg
esperará img1.jpg
, img2.jpg
etc. Usar img%04d.jpg
esperará img0001.jpg
, img0002.jpg
etc.
ffmpeg -framerate 30 -i img%d.jpg -vf scale=1280:-1,format=yuv420p output.mp4
padrão glob
Um tipo de padrão curinga glob é flexível. Este tipo de padrão está disponível se libavformat foi compilado com suporte globbing.
ffmpeg -framerate 30 -pattern_type glob -i "*.png" -vf scale=1280:-1,format=yuv420p output.mp4
Notas
Veja oDocumentação do desmultiplicador FFmpeg image2para mais informações.
O
scale
filtroneste exemplo a largura será alterada para 1280 e a altura será calculada automaticamente para preservar o aspecto.Dependendo da sua versão, tipo de entrada (como PNG), codificador (especificamente libx264) e opções de codificação,
ffmpeg
podem tentar evitar ou minimizar a subamostragem de croma, mas a maioria dos players não baseados em FFmpeg não conseguirão decodificar adequadamente a saída. Oformat
filtrogarantirá que a saída use um esquema de subamostragem de croma compatível com esses reprodutores.
Responder2
Só isso funcionou para mim executando o cmd no mesmo diretório:
ffmpeg -framerate 20 -i Animation%3d.jpg -r 5 -y fileout.mp4
Para arquivos nomeados Animation000 a 999.jpg.
Isso não funcionou para mim:
ffmpeg -framerate 20 -pattern_type glob -i "*.jpg" -vcodec libx264 out.mp4
Gerou o erro:
O tipo de padrão 'glob' foi selecionado, mas globbing não é suportado por esta compilação do formato libav *.jpg: Função não implementada