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.
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:
input.jpg
:
Vordergrundbild – vorab erstellt (Beispielauflösung ist 270 x 257):
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).