ffmpeg: Bild und Text in einem definierten Bereich reibungslos scrollen

ffmpeg: Bild und Text in einem definierten Bereich reibungslos scrollen

Ich weiß, wie man mit diesem Befehl ein Bild in einem Video vom unteren zum oberen Rand scrollt:

ffmpeg -f lavfi -i color=s=1920x1080 -loop 1 -t 0.08 -i "input.jpg" -filter_complex "[1:v]scale=1920:-2,setpts=if(eq(N\,0)\,0\,1+1/0.02/TB),fps=25[fg]; [0:v][fg]overlay=y=-\'t*h*0.02\':eof_action=endall[v]" -map "[v]" output.mp4

Ich möchte aber, dass das Bild und der Text an einer Position unten erscheinen, reibungslos scrollen und an einer Position oben verschwinden, wie im Bild unten. Bildbeschreibung hier eingeben

Antwort1

Wir können den relevanten Bereich aus dem Hintergrundbild ausschneiden, den gescrollten Text über den ausgeschnittenen Bereich legen und das Ergebnis auf denselben Bereich im Hintergrundbild legen.


Beispiel:

bk.jpg:
Hintergrundbild - vorab erstellt:
Bildbeschreibung hier eingeben

input.jpg:
Vordergrundbild – vorab erstellt (Beispielauflösung ist 270 x 257): Bildbeschreibung hier eingeben


Beispielbefehl:

ffmpeg -y -loop 1 -r 25 -i bk.jpg -loop 1 -r 25 -i input.jpg -filter_complex "[0:v]crop=270:257:360:55[c0];[c0][1:v]overlay=y='257-t*257*0.04':eof_action=endall[fg];[0:v][fg]overlay=x=360:y=55:eof_action=endall" -t 50 output.mp4


  • [0:v]crop=270:257:360:55[c0]- schneidet einen 270 x 257 großen Bereich aus dem Hintergrund aus.
  • [c0][1:v]overlay=y='257-t*257*0.04':eof_action=endall[fg]- legt den gescrollten Text über den zugeschnittenen Bereich.
  • [0:v][fg]overlay=x=360:y=55:eof_action=endall- wird [fg]über das Hintergrundbild gelegt (an der gleichen Stelle wie der zugeschnittene Bereich).

Herunterskaliertes Ergebnis:
Bildbeschreibung hier eingeben

verwandte Informationen