FFmpeg: Video mit Überblendungen und dem Effekt „Nach oben/Nach unten verschieben“ funktioniert nicht richtig

FFmpeg: Video mit Überblendungen und dem Effekt „Nach oben/Nach unten verschieben“ funktioniert nicht richtig

Ich erstelle ein Video aus Bildern, die unterschiedliche Größen und Ausrichtungen haben. Tatsächlich muss ich Animationen für Videofolien basierend auf der Bildausrichtung (Seitenverhältnis) erstellen. Nehmen wir also an, ich habe 4 Bilder mit den folgenden Größen:

1.jpg 1280x1600 (von oben nach unten)
2.jpg 1280x1600 (unten nach oben)
3.jpg 1280x1600 ( Von oben nach unten )
4.jpg 1280x1280 (Kein Effekt)

Hier ist dasFFmpegBefehl, den ich ausführe

ffmpeg -y -r 25 \ 
-loop 1 -t 5 -i 1.jpg \
-loop 1 -t 5 -i 2.jpg \
-loop 1 -t 5 -i 3.jpg \
-loop 1 -t 5 -i 4.jpg \
-i audio.mp3 \
-filter_complex " \
[0]crop=1280:1280:ow:((ih-oh)/5)*t,format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+0/TB[f0];
[1]crop=1280:1280:ow:(ih-oh)-((ih-oh)*t/5),format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+4/TB[f1];
[2]crop=1280:1280:ow:((ih-oh)/5)*t,format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+8/TB[f2];
[3]fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+12/TB[f3];
[0][f0]overlay[bg1];[bg1][f1]overlay[bg2];[bg2][f2]overlay[bg3];[bg3][f3]overlay,format=yuv420p[v]" -map "[v]" -map 4:a -b:v 4000k -movflags +faststart -t 20 -s 1280x1280 out.mp4

Bitte schauen Sie sich die ersten Sekunden des Videos an

Bildbeschreibung hier eingeben

Die Überblendung, das Zuschneiden und der Effekt funktionieren also, aber wie Sie sehen, bleibt ein unnötiger Abschnitt am unteren Rand des Videos erhalten. Alle anderen Animationen werden im obigen Abschnitt angezeigt.

Bildbeschreibung hier eingeben

Ich bin mir nicht sicher, aber es scheint, als ob die Höhe des ersten Bildes (1600) erhalten bleibt. Ich freue mich auf jeden Vorschlag zur Behebung dieses Problems.

Antwort1

Verwenden Sie diexverblassenFilter:

Bildbeschreibung hier eingeben

ffmpeg \
-loop 1 -t 5 -i cyan.jpg \
-loop 1 -t 5 -i magenta.jpg \
-loop 1 -t 5 -i yellow.jpg \
-loop 1 -t 5 -i black.jpg \
-i audio.mp4
-filter_complex \
"[0]crop=1280:1280[v1]; \
 [1]crop=1280:1280[v2]; \
 [2]crop=1280:1280[v3]; \
 [3]crop=1280:1280[v4]; \
 [v1][v2]xfade=wipedown:duration=1:offset=4[x1]; \
 [x1][v3]xfade=wipeup:duration=1:offset=8[x2]; \
 [x2][v4]xfade=wipedown:duration=1:offset=12,format=yuv420p[v]" \
-map "[v]" -map 4:a -movflags +faststart -shortest output.mp4

Eine Galerie aller Übergänge finden Sie unterFFmpeg Wiki: xfade.

verwandte Informationen