ffmpeg torna a animação de sobreposição suave

0

estou usando a versão mais recente do ffmpeg e adicionei superposição de imagem ao vídeo e estou tentando animar a superposição de imagem em vídeo, está funcionando ok, mas o movimento de sobreposição não é suave, por isso qualquer ideia de como fazer o animação suave

ffmpeg.exe -y -i small.mp4 -loop 1  -i google.png -filter_complex   [1]fade=t=in:st=1:d=1,fade=t=out:st=4.6:d=1[over1];[0:v][over1]overlay=x=20+((t-1)*85):shortest=1:y=66+((t-1)*23.04):enable='between(t,1,5.6)' -c:v libx264 output.mp4

vídeo de entrada: link

imagem: link

vídeo de saída: link

Atualização: explicação do fator de sobreposição

x=20+((t-1)*85):shortest=1:y=66+((t-1)*23.04)

85 ? 23.04 ?

85 e 23,04 é a taxa de deslocamento xey que eu tenho que chegar ao destino x_end e y_end de x_start e y_start

x_start = 20, y_start = 66

x_end = 411, y_end = 172

x_diff = 391 y_diff = 106

overlay_start_time = 1 overlay_end_time = 5.6

duration = overlay_end_time - overlay_start_time

duração = 5,6 - 1

duração = 4,6

shift_x_rate = x_diff / duration

shift_x_rate = 391 / 4,6 = 85

shift_y_rate = y_diff / duration

shift_y_rate = 106 / 4,6 = 23,04

x = x_start + (t-overlay_start_time) * shift_x_rate

x = 20 + (t-1) * 85

deixe se t = 5.6

x = 20 + (5,6-1) * 85

x = 411 // destino x

y = y_start + (t-overlay_start_time) * shift_y_rate

y = 66 + (t-1) * 23,04

deixe se t = 5.6

y = 66 + (5,6-1) * 23,04

y = 171 // destino y

    
por user44570 27.08.2018 / 12:21

1 resposta

1

Existem vários problemas aqui:

a) embora suas expressões sejam contínuas e uniformes ao longo do tempo, o vídeo é uma série de quadros discretos, portanto, a série real de valores de tempo é quantizada. Assim, a velocidade do seu movimento deve ser um múltiplo integral da taxa de quadros do vídeo, em termos de x-pixels / seg e y-pixels / seg. Dessa forma, o delta x e y em cada quadro é constante, gerando assim um movimento em linha reta. No seu caso, estes diferem quadro a quadro devido ao truncamento.

b) devido a subamostragem de croma , a posição final avaliada da sobreposição está sujeita a um novo arredondamento para um valor par . Assim, calculado (314,6,56,3) será arredondado para (314,56) e (316,8,57,4) será arredondado para (316,56), produzindo assim um movimento horizontal nesse quadro, mesmo que as expressões 'puro delta seja inclinado. A solução é informar sobreposição para saída com amostragem de croma completa e downconvers later later.

Estes problemas estão em jogo durante toda a animação de sobreposição, mas como o vídeo tem uma resolução baixa, a falha é visível. Seu vídeo é de 30 fps, por isso defini deltas xey para múltiplos.

Então,

ffmpeg.exe -y -i small.mp4 -loop 1 -i google.png -filter_complex [1]fade=t=in:st=0.9:d=1,fade=t=out:st=4.6:d=1[over1];[0:v][over1]overlay=x=20+((t-0.9)*60):shortest=1:y=66+((t-0.9)*30):enable='between(t,0.9,5.6)':format=yuv444,format=yuv420p -c:v libx264 output.mp4
    
por 27.08.2018 / 16:26

Tags