Ok, então, usando o filtro de sobreposição, é possível alterar a localização x / y de um vídeo ao longo do tempo usando a variável "t". Por exemplo, overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
pode ser usado para começar a deslizar um elemento sobreposto da parte superior esquerda para a parte superior direita, após 2 segundos.
O que eu quero fazer é usar um princípio semelhante para dimensionar elementos. Gostaria de poder alterar a escala de um vídeo ao longo do tempo usando uma expressão (como scale=w=iw*t
, ou algo nessa linha).
Isso é possível?
quando executo essa expressão através de -filter_complex, recebo
Erro ao avaliar a expressão 'iw * t'.
Talvez a expressão para out_w: 'iw * t' ou para out_h: '- 1' seja auto-referente.
Sinto que há uma boa chance de precisar corrigir o FFMpeg se quiser obter essa funcionalidade, mas pensei em perguntar primeiro, para ver se alguém saberia esse tipo de coisa!
Alguém sabe como essa tarefa pode ser realizada?
Obrigado pela ajuda!
Respostas:
Pelo que entendi, 't' é avaliado uma vez. Você já leu isso: https://ffmpeg.org/ffmpeg-filters.html#zoompan ?
Documentos do Ffmpeg:
9.170.1 Exemplos
zoompan = z = 'min (zoom + 0,0015,1,5)': d = 700: x = 'if (gte (zoom, 1,5), x, x + 1 / a)': y = 'if (gte (zoom, 1,5), y, y + 1) ': s = 640x360
zoompan = z = 'min (zoom + 0,0015,1,5)': d = 700: x = 'iw / 2- (iw / zoom / 2)': y = 'ih / 2- (ih / zoom / 2)'
zoompan = z = 'min (max (zoom, pzoom) +0,0015,1,5)': d = 1: x = 'iw / 2- (iw / zoom / 2)': y = 'ih / 2- (ih / zoom / 2) '
fonte