Ok, więc używając filtra nakładki, można zmienić lokalizację x / y wideo w czasie, używając zmiennej „t”. Na przykład overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
można go użyć do rozpoczęcia przesuwania nakładanego elementu od lewego górnego do prawego górnego rogu, po upływie 2 sekund.
Chcę zastosować podobną zasadę do skalowania elementów. Chciałbym móc zmieniać skalę filmu w czasie za pomocą wyrażenia (jak scale=w=iw*t
, lub coś wzdłuż tej linii).
czy to możliwe?
kiedy uruchamiam to wyrażenie przez -filter_complex, otrzymuję
Błąd podczas oceny wyrażenia „iw * t”.
Może wyrażenie dla out_w: 'iw * t' lub dla out_h: '- 1' odnosi się do siebie.
Wydaje mi się, że istnieje spora szansa, że będę musiał załatać FFMpeg, jeśli chcę uzyskać tę funkcjonalność, ale pomyślałem, że najpierw zapytam, czy ktoś będzie wiedział o tego rodzaju rzeczach!
Czy ktoś wie, jak można wykonać takie zadanie?
Dzięki za pomoc!
Odpowiedzi:
Z tego, co rozumiem, „t” jest oceniane raz. Czytałeś to: https://ffmpeg.org/ffmpeg-filters.html#zoompan ?
Dokumenty Ffmpeg:
9.170.1 Przykłady
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 = 640 x 360
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 (maks. (zoom, pzoom) +0,0015,1,5)': d = 1: x = 'iw / 2- (iw / zoom / 2)': y = 'ih / 2- (ih / zoom / 2) ”
źródło