Cálculo da posição de transição de sobreposição para efeito de slide

0

Eu concatenei 9 fotos que têm exatamente a mesma dimensão, 320x562 cada. Eles são colocados em uma única linha horizontal, o que resulta em um arquivo de 2880x562.

Agora, quero criar uma tela em branco de 320 x 562 como plano de fundo e mover esse grande arquivo simples da direita para a esquerda como uma sobreposição para gerar o efeito deslizante.

Este é o comando que usei depois de experimentar:

ffmpeg -loop 1 -i result.jpg -filter_complex "nullsrc=size=320x562 [background];[0:v] setpts=PTS-STARTPTS [catalog]; [background][catalog] overlay=shortest=1:x='if(gte(t,4)*lte(x, 2880), -(t-4)*165)'" -t 24 -y out.mp4

Ele coloca a imagem de superposição na mesma posição com plano de fundo como ponto de partida.

Embora pareça estar fazendo o que eu queria fazer, estou tendo problemas para entender as expressões usadas para calcular o valor X da sobreposição.

  • Eu queria fazer a sobreposição começar a flutuar em que t>4 e x<=2560 , portanto, mesmo que t aumente, o slide deve parar onde a posição superior direita da sobreposição se encontra com a posição superior direita do plano de fundo . O tempo parece estar funcionando, mas a restrição de posição não funciona. Como posso referenciar o atual X ?

  • Ocorreu um erro sobre -(t-4)*144 parte da expressão. A duração total é dada para 24. A sobreposição começa a deslizar após o quarto segundo. Assim, o vídeo deve mostrar um deslizamento de 9 * 320 pixels (2880) em 20 segundos. Mas está dando 144 como resultado de 2880/20 faz a sobreposição esgotada após cerca de 22 segundos, e alguns pixels de lixo aparecem depois disso. Qual é a melhor maneira de fazer com que a sobreposição termine exatamente quando termina?

por sardok 25.10.2016 / 19:55

1 resposta

0

Como você está deslizando a imagem do catálogo da direita para a esquerda e deseja parar quando a 9ª imagem coincide com o plano de fundo, você precisa da sobreposição x para ser -8*320 = -2560 . Mas como você está parando a sobreposição quando isso acontece, basta calcular a velocidade, que é 2560/20 = 128.

Então,

ffmpeg -loop 1 -t 24 -i result.jpg
       -filter_complex
        "nullsrc=size=320x562[background];
        [background][0:v]overlay=shortest=1:x='min(0,-(t-4)*128))'"
       -y out.mp4
    
por 26.10.2016 / 07:10

Tags