Com 5 imagens, tenho que criar um vídeo de 60 segundos em ffmpeg, cada imagem deve ser exibida por 15 segundos. após 15 segundos, a primeira imagem deve desaparecer e a segunda imagem deve desaparecer, depois que a segunda imagem desaparecer, a terceira imagem desaparecer ... etc. Por favor, me guie como posso conseguir isso usando os comandos ffmpeg.
27
Respostas:
Dip / fade para preto
Role para baixo para o método crossfade.
Exemplo em que cada imagem é exibida por 5 segundos e cada uma desaparece por 1 segundo. Cada entrada de imagem tem a mesma largura, altura e proporção de amostra. Se eles variam em tamanho, veja o exemplo nº 3 abaixo.
Saída MP4
Com áudio
O mesmo que acima, mas com áudio:
Para imagens de entrada com tamanhos variados ou arbitrários
Como o primeiro exemplo, mas com imagens de entrada que variam em largura x altura. Eles serão preenchidos para caber em uma caixa de 1280x720:
Veja os exemplos em Redimensionando vídeos para caber no player de tamanho estático, se você deseja cortar (preencher a tela) em vez de teclado (caixa de correio / coluna) ou se deseja impedir o aumento de escala.
Saída GIF
Adiciona os filtros de Como converto um vídeo em GIF usando ffmpeg, com qualidade razoável?
Use a
-loop
opção de saída para controlar o número de vezes que o GIF faz um loop. O padrão é loop infinito se esta opção não for usada. Um valor de-1
é sem loop.Opções e filtros usados:
-t
para definir a duração em segundos de cada entrada.-loop 1
faz um loop na imagem, caso contrário, ela teria a duração de 1 quadro.-framerate
para definir a taxa de quadros da imagem de entrada (o padrão quando não declarado é 25). Útil para criar GIF.escala com pad para ajustar as imagens de entrada em um tamanho específico e uniforme (usado no exemplo nº 3).
desaparecer para desaparecer dentro e fora.
d
é a duração do desbotamento.st
é quando começa.concat para concatenar (ou "ingressar") em cada imagem.
formato para gerar um esquema de subamostragem de croma compatível com players não baseados em FFmpeg se estiver emitindo MP4 e codificando com libx264 (o codificador padrão para saída MP4, se for suportado por sua compilação).
dividir para fazer cópias de uma saída de filtro. Necessário pelos filtros da paleta * para fazer tudo em um comando.
palettegen e paletteuse para criar GIF com boa aparência.
Crossfade
Exemplo em que cada imagem é exibida por 5 segundos e cada uma possui um crossfade que dura 1 segundo. Cada entrada de imagem tem a mesma largura, altura e proporção de amostra. Se eles variam em tamanho, adapte o exemplo nº 3 acima.
Saída MP4
Com áudio
Faça o crossfade entre dois vídeos com áudio
Selecione 5 segundos de cada entrada e adicione um crossfade de 1 segundo:
Saída GIF
Use a
-loop
opção de saída para controlar o número de vezes que o GIF faz um loop. O padrão é loop infinito se esta opção não for usada. Um valor de-1
é sem loop.fonte
-t
no-loop 1 -t 1 -i 001.png
define a duração de quadros individuais, e que os números seguintesT/
dentro defilter_complex
bloco define a duração da transição? E a duração do quadro neste exemplo é contada, incluindo a duração da transição ou não?-preset ultrafast
.melt
.concat=n=9
parte do comando,9
vem das 5 imagens no exemplo + 4 transições entre as imagens. Se você estiver lidando com um número diferente de imagens, precisará ajustá-lo de acordo.Eu escrevi um script bash geral que leva no caminho para uma pasta de imagens e gera um vídeo crossfade com ffmpeg:
https://gist.github.com/anguyen8/d0630b6aef6c1cd79b9a1341e88a573e
O script essencialmente analisa as imagens em uma pasta e imprime um comando semelhante à resposta do @LordNeckbeard acima, e executa o comando. Esse script ajuda quando você tem muitas imagens em uma pasta e não deseja digitar manualmente um comando deprimente.
fonte