In FFMPEG è possibile cambiare scala nel tempo?


11

Ok, quindi usando il filtro overlay, si può cambiare la posizione x / y di un video nel tempo usando la variabile "t". Ad esempio, overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0può essere utilizzato per iniziare a far scorrere un elemento sovrapposto dalla parte superiore sinistra a quella superiore destra, dopo che sono trascorsi 2 secondi.

Quello che voglio fare è usare un principio simile per ridimensionare gli elementi. Vorrei essere in grado di cambiare la scala di un video nel tempo usando un'espressione (come scale=w=iw*t, o qualcosa del genere).

È possibile?

quando eseguo quell'espressione attraverso -filter_complex, ottengo

Errore durante la valutazione dell'espressione 'iw * t'.

Forse l'espressione per out_w: 'iw * t' o per out_h: '- 1' è autoreferenziale.

Sento che c'è una buona possibilità che avrò bisogno di patchare FFMpeg se voglio ottenere questa funzionalità, ma ho pensato di chiedere prima, per vedere se qualcuno fosse al corrente di questo genere di cose!

Qualcuno sa come un tale compito potrebbe essere realizzato?

Grazie per l'aiuto!


Sembra più un errore di sintassi in questo momento, ma non ho mai usato questa funzione prima, quindi purtroppo non posso davvero aiutare qui.
PTS

1
t non è una cosa definita quando si tratta di filtro overlay.
v010dya,

1
Potresti semplicemente scrivere un filtro. wiki.multimedia.cx/index.php?title=FFmpeg_filter_howto
denjello

1
@alexspeller il filtro di scala non supporta la modifica della sequenza temporale, quindi non direttamente possibile. Controllerò se c'è una soluzione alternativa.
Gyan,

1
Tecnicamente possibile con uscita H.264 / 5. Non so come i giocatori / redattori lo gestiranno.
Gyan,

Risposte:


2

Da quello che capisco 't' viene valutato una volta. Hai letto questo: https://ffmpeg.org/ffmpeg-filters.html#zoompan ?

Documenti Ffmpeg:

9.170.1 Esempi

  • Ingrandisci fino a 1,5 e fai una panoramica contemporaneamente in un punto vicino al centro dell'immagine:

zoompan = z = 'min (zoom + 0.0015,1.5)': d = 700: x = 'se (gte (zoom, 1.5), x, x + 1 / a)': y = 'se (gte (zoom, 1.5), y, y + 1) ': s = 640x360

  • Ingrandisci fino a 1,5 e esegui sempre la panoramica al centro dell'immagine:

zoompan = z = 'min (zoom + 0.0015,1.5)': d = 700: x = 'iw / 2- (IW / zoom / 2)': y = 'ih / 2- (ih / zoom / 2)'

  • Come sopra ma senza mettere in pausa:

zoompan = z = 'min (max (zoom, pzoom) +0.0015,1.5)': D = 1: x = 'iw / 2- (IW / zoom / 2)': y = 'ih / 2- (ih / zoom / 2)'

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.