GIF in bestimmten Zeitabständen auf MP4 überlagern (unter Beibehaltung der GIF-Transparenz)

GIF in bestimmten Zeitabständen auf MP4 überlagern (unter Beibehaltung der GIF-Transparenz)

Ich suche nach einer Möglichkeit, über einer MP4-Datei ein GIF-Overlay mit den folgenden Eigenschaften zu implementieren:

  • Beibehalten der GIF-Transparenz im Video
  • Das GIF wird nur für eine bestimmte Zeitspanne angezeigt (usw. 0:02–0:06)
  • Positionieren des GIF in der unteren linken Ecke der MP4-Datei

Antwort1

Sie könnenx=between(t, 2, 6), 0, NAN) Ausdrucksauswertungund y=(H-h).
Siehe overlayFilterDokumentation(Lesen Sie die Beispiele – sie sind nah genug dran).

ffmpeg -y -i in.mp4 -i in.gif -filter_complex "[0][1]overlay=x='if(between(t, 2, 6), 0, NAN):y=(H-h)':format=yuv444" -vcodec libx264 -pix_fmt yuv444p -crf 17 -acodec copy out.mp4

format=yuv444und -pix_fmt yuv444pdienen der Verbesserung der Ausgabequalität.

Ich habe das transparente GIF aus meinem folgenden verwendetPost, und mit synthetischem Muster überlagern.

Beispiel für einen Ausgaberahmen:
Bildbeschreibung hier eingeben


Erstellen des synthetischen Musters (zum Testen verwendet):

ffmpeg -y -f lavfi -r 10 -i testsrc=size=640x480:rate=1:duration=300 -vf setpts=N/10/TB -vcodec libx264 -pix_fmt yuv444p -crf 17 in.mp4

GIF-Bild mit Transparenz:
Bildbeschreibung hier eingeben

verwandte Informationen