Ok, entonces usando el filtro de superposición, uno puede cambiar la ubicación x / y de un video con el tiempo usando la variable "t". Por ejemplo, overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
puede usarse para comenzar a deslizar un elemento superpuesto desde la parte superior izquierda a la parte superior derecha, después de que hayan pasado 2 segundos.
Lo que quiero hacer es usar un principio similar para escalar elementos. Me gustaría poder cambiar la escala de un video a lo largo del tiempo usando una expresión (como scale=w=iw*t
, o algo así).
es posible?
cuando ejecuto esa expresión a través de -filter_complex, obtengo
Error al evaluar la expresión 'iw * t'.
Tal vez la expresión para out_w: 'iw * t' o para out_h: '- 1' es autorreferenciada.
Siento que hay una buena posibilidad de que necesite parchear FFMpeg si quiero obtener esta funcionalidad, pero pensé en preguntar primero, ¡para ver si alguien estaría al tanto de este tipo de cosas!
¿Alguien sabe cómo se podría lograr tal tarea?
¡Gracias por la ayuda!
Respuestas:
Por lo que entiendo, 't' se evalúa una vez. ¿Has leído esto: https://ffmpeg.org/ffmpeg-filters.html#zoompan ?
Documentos de Ffmpeg:
9.170.1 Ejemplos
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) '
fuente