Est-il possible dans FFMPEG de changer d'échelle dans le temps?

11

Ok, donc en utilisant le filtre de superposition, on peut changer l'emplacement x / y d'une vidéo au fil du temps en utilisant la variable "t". Par exemple, overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0peut être utilisé pour commencer à faire glisser un élément superposé du haut à gauche vers le haut à droite, après 2 secondes.

Ce que je veux faire, c'est utiliser un principe similaire pour la mise à l'échelle des éléments. J'aimerais pouvoir changer l'échelle d'une vidéo au fil du temps en utilisant une expression (comme scale=w=iw*t,, ou quelque chose dans ce sens).

Est-ce possible?

quand je lance cette expression via -filter_complex, j'obtiens

Erreur lors de l'évaluation de l'expression «iw * t».

Peut-être que l'expression pour out_w: 'iw * t' ou pour out_h: '- 1' est auto-référencée.

J'ai l'impression qu'il y a de fortes chances que je vais avoir besoin de patcher FFMpeg si je veux obtenir cette fonctionnalité, mais j'ai pensé que je demanderais d'abord, pour voir si quelqu'un serait au courant de ce genre de chose!

Quelqu'un sait-il comment une telle tâche pourrait être accomplie?

Merci pour l'aide!

theophilus777
la source
Cela ressemble plus à une erreur de syntaxe en ce moment mais je n'ai jamais utilisé cette fonctionnalité auparavant, donc malheureusement je ne peux pas vraiment aider ici.
PTS
1
Ce n'est pas une chose définie en ce qui concerne le filtre de superposition.
v010dya
1
Vous pouvez simplement écrire un filtre. wiki.multimedia.cx/index.php?title=FFmpeg_filter_howto
denjello
1
@alexspeller le filtre d'échelle ne prend pas en charge l'édition de la chronologie, donc pas directement possible. Je vais vérifier s'il y a une solution de contournement.
Gyan
1
Techniquement possible avec une sortie H.264 / 5. Je ne sais pas comment les joueurs / éditeurs le géreront.
Gyan

Réponses:

2

D'après ce que je comprends, «t» est évalué une fois. Avez-vous lu ceci: https://ffmpeg.org/ffmpeg-filters.html#zoompan ?

Documents Ffmpeg:

9.170.1 Exemples

  • Effectuez un zoom avant jusqu'à 1,5 et effectuez un panoramique en même temps jusqu'à un point proche du centre de l'image:

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

  • Zoom avant jusqu'à 1,5 et panoramique toujours au centre de l'image:

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

  • Comme ci-dessus mais sans 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) '

Rob
la source