Método 1: Use padrões de sequência
O que você realmente precisa é disso, se sua primeira imagem for chamada GOPR0001.JPG
:
ffmpeg.exe -i "GOPR%04d.JPG" -pix_fmt yuv420p out.mp4
Ou se a primeira imagem é chamada GOPR3973.JPG
, você precisa dar ao ffmpeg o número inicial para procurar:
ffmpeg.exe -start_number 3973 -i "GOPR%04d.JPG" -pix_fmt yuv420p out.mp4
Método 2: Use padrões de globbing
Se a sua versão do ffmpeg tiver suporte para globbing (que o Windows não possui, eu acho), então você pode simplesmente fazer:
ffmpeg.exe -pattern_type glob -i "GOPR*.JPG" -pix_fmt yuv420p out.mp4
Isso é preferível se você não souber o número inicial ou simplesmente não se importar com o controle preciso.
Por que não funciona
ffmpeg.exe -i GOPR*.JPG out.mp4
Isso não funciona porque ele se expandirá para algo assim (supondo que sua primeira imagem seja chamada GOPR0001.JPG
):
ffmpeg.exe -i GOPR0001.JPG GOPR0002.JPG … out.mp4
Como o ffmpeg trata a última opção de argumento sem nome (ou seja, qualquer coisa sem um -
) como o nome do arquivo de saída, GOPR2.JPG
seria a saída e nada até out.mp4
não será aplicado.
Algumas dicas
-
-pix_fmt yuv420p
é necessário para converter do espaço de cores YUV 4: 2: 2 do JPEG para subamostragem 4: 2: 0. Caso contrário, alguns players (a maioria dos não baseados em FFmpeg) não poderão exibir o vídeo -
Controle a qualidade definindo a opção
-crf 23
e escolhendo algo entre 18 e 28, onde menor significa melhor qualidade. -
Você pode querer definir o framerate de acordo com o qual os quadros de entrada (imagens) foram capturados. Faça isso executando
ffmpeg.exe -framerate 30 -start_number …
. Se você não especificar a taxa de quadros, o ffmpeg assumirá que seus quadros originais foram gravados em 25 Hz. -
Leia a
image2
demuxer parte do manual. -
As aspas duplas sempre são boas para evitar a expansão de padrões de shell.