Ist es in FFMPEG möglich, den Maßstab im Laufe der Zeit zu ändern?

11

Ok, mit dem Overlay-Filter kann man die x / y-Position eines Videos im Laufe der Zeit mithilfe der Variablen "t" ändern. Beispielsweise overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0kann verwendet werden , um ein überlagertes Element von oben nach rechts oben nach links zu starten Schiebe-, nach 2 Sekunden vergangen sind.

Ich möchte ein ähnliches Prinzip für die Skalierung von Elementen verwenden. Ich möchte in der Lage sein, die Skalierung eines Videos im Laufe der Zeit mithilfe eines Ausdrucks (wie scale=w=iw*t, oder etwas in dieser Richtung) zu ändern .

Ist das möglich?

Wenn ich diesen Ausdruck über -filter_complex ausführe, erhalte ich

Fehler beim Auswerten des Ausdrucks 'iw * t'.

Vielleicht ist der Ausdruck für out_w: 'iw * t' oder für out_h: '- 1' selbstreferenzierend.

Ich habe das Gefühl, dass es eine faire Chance gibt, dass ich FFMpeg patchen muss, wenn ich diese Funktionalität erhalten möchte, aber ich dachte, ich würde zuerst fragen, ob jemand etwas über diese Art von Dingen weiß!

Weiß jemand, wie eine solche Aufgabe erfüllt werden könnte?

Danke für die Hilfe!

theophilus777
quelle
Klingt momentan eher nach einem Syntaxfehler, aber ich habe diese Funktion noch nicht verwendet, daher kann ich hier leider nicht wirklich helfen.
PTS
1
t ist keine definierte Sache, wenn es um Overlay-Filter geht.
v010dya
1
Sie könnten einfach einen Filter schreiben. wiki.multimedia.cx/index.php?title=FFmpeg_filter_howto
denjello
1
@alexspeller Der Skalierungsfilter unterstützt keine Timeline-Bearbeitung und ist daher nicht direkt möglich. Ich werde prüfen, ob es eine Problemumgehung gibt.
Gyan
1
Technisch möglich mit H.264 / 5 Ausgang. Ich weiß nicht, wie Spieler / Redakteure damit umgehen werden.
Gyan

Antworten:

2

Soweit ich weiß, wird 't' einmal ausgewertet. Haben Sie dies gelesen: https://ffmpeg.org/ffmpeg-filters.html#zoompan ?

Ffmpeg Docs:

9.170.1 Beispiele

  • Zoomen Sie auf 1,5 und schwenken Sie gleichzeitig zu einer Stelle nahe der Bildmitte:

zoompan = z = 'min (zoom + 0,00115,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 × 360

  • Zoomen Sie auf 1,5 und schwenken Sie immer in der Bildmitte:

zoompan = z = 'min (Zoom + 0,00115,1,5)': d = 700: x = 'iw / 2- (iw / zoom / 2)': y = 'ih / 2- (ih / zoom / 2)'

  • Wie oben, jedoch ohne Pause:

zoompan = z = 'min (max (Zoom, pzoom) +0,0015,1,5)': d = 1: x = 'iw / 2- (iw / zoom / 2)': y = 'ih / 2- (ih / zoom / 2) '

rauben
quelle