FFMPEG - Cria um vídeo de apresentação de slides a partir de imagens em um diretório, classificado em ordem alfabética

2

Eu vejo esta página sobre como fazer isso com imagens numericamente. Mas eu tenho um diretório de imagens que se parece com isso, por exemplo:

ADAM SANDLER.jpg
JOHN DOE.jpg
SAM SMITH.jpg

Eu quero criar uma apresentação de slides de vídeo de todas as imagens desse diretório, classificadas em ordem alfabética.

Existe alguma maneira de fazer isso?

EDITAR

No final, estou tentando criar um vídeo vertical para postar no Instagram. Essas fotos são retratos, portanto, será necessário um vídeo "vertical". Parece que o FFMPEG está tendo problemas com isso, pelo menos reproduzir o vídeo no Quicktime parece não estar funcionando. Precisa ser um vídeo de 15 segundos e existem 25 imagens.

Este é o comando que estou executando, e está apenas aparecendo preto quando eu abri-lo no Quicktime. Quando eu abro no VLC ele está tocando, mas só mostra os primeiros quadros.

ffmpeg -r 1 -i img%03d.jpg -c:v libx264 -pix_fmt yuv420p out.mp4

    
por Corey 06.03.2016 / 19:55

2 respostas

2

Você pode usar o demuxer de concatenação.

Primeiro, prepare um arquivo de texto contendo a lista de todas as imagens na ordem desejada. No Windows, em um prompt de comando, você pode executar este comando, na pasta:

dir *.jpg /b /on > list.txt

Agora, prefixar cada linha com file ' e sufixo com ' , para que cada linha se pareça com

file 'ADAM SANDLER.jpg'

você pode querer duplicar a última linha devido a um bug no filtro fps.

Agora, se todas as suas imagens forem do mesmo tamanho, execute

ffmpeg -f concat -r 1/2 -i list.txt -crf 20 -vf fps=8,format=yuv420p video.mp4

Se não, e assumindo 1920x1080 como tamanho de vídeo de saída, execute

ffmpeg -f concat -r 1/2 -i list.txt -vf "scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2,fps=8,format=yuv420p" -crf 20 video.mp4

O -r 1/2 é o framerate de entrada e determina quanto tempo cada imagem permanece, neste caso, 2 segundos. Eu configurei a taxa de quadros de saída em 8 porque alguns jogadores podem falhar em reproduzir a saída. O CRF controla a qualidade. Valores menores produzem um resultado melhor, mas arquivos maiores.

Para o Q editado :

Use

ffmpeg -framerate 25/15 -i img%03d.jpg -c:v libx264 -vf "scale=iw*min(1080/iw\,1080/ih):ih*min(1080/iw\,1080/ih), pad=1080:1080:(1080-iw*min(1080/iw\,1080/ih))/2:(1080-ih*min(1080/iw\,1080/ih))/2,fps=30000/1001,format=yuv420p" out.mp4
    
por 06.03.2016 / 20:29
0

Você pode criar um gif animado usando o comando "converter" dos utilitários do ImageMagick:

convert -delay 500 -loop 0 *.jpg myimage.gif

Isto irá concatenar arquivos jpg, mostrando cada meio segundo cada, em um loop permanente.

    
por 10.03.2017 / 17:40

Tags