Итак, используя оверлейный фильтр, можно изменить местоположение видео по времени с помощью x / y, используя переменную «t». Например, overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
может использоваться, чтобы начать скольжение наложенного элемента сверху слева направо, через 2 секунды прошло.
Я хочу использовать аналогичный принцип для масштабирования элементов. Я хотел бы иметь возможность изменять масштаб видео с течением времени с помощью выражения (например scale=w=iw*t
, или что-то подобное).
Это возможно?
когда я запускаю это выражение через -filter_complex, я получаю
Ошибка при вычислении выражения 'iw * t'.
Может быть, выражение для out_w: 'iw * t' или для out_h: '- 1' является самоссылкой.
Я чувствую, что есть большая вероятность, что мне понадобится пропатчить FFMpeg, если я хочу получить эту функциональность, но я подумал, что сначала спрошу, чтобы узнать, кто-нибудь узнает об этом!
Кто-нибудь знает, как можно решить такую задачу?
Спасибо за помощь!
Ответы:
Из того, что я понимаю, 't' оценивается один раз. Вы читали это: https://ffmpeg.org/ffmpeg-filters.html#zoompan ?
Документы Ffmpeg:
9.170.1 Примеры
zoompan = г = 'мин (увеличение + 0.0015,1.5)': d = 700: х = 'если (GTE (увеличение, 1,5), х, х + 1 / а)': у = ', если (GTE (масштабирование, 1.5), у, у + 1) ': s = 640x360
zoompan = г = 'мин (увеличение + 0.0015,1.5)': d = 700: х = 'IW / 2- (IW / увеличение / 2)': у = 'IH / 2- (Ih / увеличение / 2)'
zoompan = г = 'мин (макс (увеличение, pzoom) +0.0015,1.5)': d = 1: х = 'IW / 2- (IW / увеличение / 2)': у = 'IH / 2- (Ih / увеличение / 2)»
источник