FFMPEG - Converta png em arquivos de vídeo

FFMPEG - Converta png em arquivos de vídeo

Tenho cerca de 10 mil arquivos PNG que gostaria de converter em um vídeo.

Deolhando pela InternetMe deparei com o ffmpeg e optei por executar o seguinte comando:

ffmpeg -f image2 -r 25 -i img/* -vcodec libx264 -crf 22 video.mp4

Em primeiro lugar, a execução deste comando rendeu o prompt File 'img/00001.png' already exists. Overwrite ? [y/N], o que me parece um pouco estranho, pois, pelo que entendi, o comando não deve modificar as imagens em si, apenas criar um novo video.mp4arquivo?

De qualquer forma, eu não queria pressionar y10 mil vezes, então fiz backup das minhas imagens e modifiquei o comando:

ffmpeg -f image2 -r 25 -i img/* -vcodec libx264 -crf 22 -y video.mp4

Agora, o programa parece funcionar bem para 254 imagens, mas depois gera o erro:

[png @ 0x7facf0503800] ff_frame_thread_encoder_init failed
Error initializing output stream 255:0 -- Error while opening encoder for output stream #255:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

Caso seja útil, adicionei oarquivo de log completo aqui. E, para garantir,aqui está um exemplo das imagensEu quero me converter. Também,aqui está o infame quadro 255, no qual o programa trava.

Responder1

O ffmpeg exige que cada arquivo de entrada tenha seu próprio -iargumento, portanto, quando você executa -i img/*, seu shell expandirá o curinga para uma série de imagens, que o ffmpeg, por sua vez, lerá apenasumimagem de entrada, mas 10k (menos uma) imagens de saída. Em outras palavras, o ffmpeg verá:

ffmpeg … -i img/00000.png img/00001.png …

que está dizendo para usar 00000.pngcomo entrada e 00001.pngcomo saída. Na verdade, você terá substituído todos os seus arquivos 00001.pngpelo 00254.png conteúdo de 00000.png. Espero que você tenha um backup deles.

Depois de restaurar seus arquivos de entrada originais, verifique seu comando novamente. Você não usou o %dcuringa para especificar os números das imagens (que foi mostrado na resposta vinculada). Então, use:

ffmpeg -f image2 -framerate 25 -i img/%05d.png -vcodec libx264 -crf 22 video.mp4

Para mais informações, verifique oGuia de apresentação de slides. Lá você também encontrará diferentes opções para especificar a lista de arquivos de entrada (por exemplo, através de um padrão glob, semelhante ao que você estava tentando fazer).

Responder2

Vocêpodetambém use curingas asterisco, mas a lista de arquivos precisa ser citada para evitar a expansão conforme a resposta de@slhck, e você precisa de uma opção extra pattern_typepara instruí-lo a usar globbing.

ffmpeg -f image2 -r 25 -pattern_type glob -i 'img/*.png' -vcodec libx264 -crf 22 video.mp4

informação relacionada