CodeGym /Java Kurs /Python SELF DE /Überlagerung und Animation von Elementen im Video: Erstel...

Überlagerung und Animation von Elementen im Video: Erstellen von bewegendem Text und Grafiken

Python SELF DE
Level 48 , Lektion 0
Verfügbar

1. Hinzufügen von Text und Animation seiner Bewegung

MoviePy ist einfach ein großartiges Werkzeug, das langweilige Videos in cineastische Meisterwerke verwandeln kann. Naja, oder zumindest in etwas, das bewegenden Text und Grafiken enthält. Zunächst sehen wir uns an, wie man statische Elemente in unser Video einfügt, und gehen dann zur Magie über – der Animation.

Hinzufügen von Text und Animation seiner Bewegung

Um Text zu erstellen und zu animieren, verwendet man in MoviePy TextClip, wodurch Text, Schriftart, Farbe und weitere Parameter festgelegt werden können. Anschließend kann mit der Methode set_position() die Bewegung des Textes auf dem Bildschirm definiert werden.

Bewegender Text horizontal

In diesem Beispiel wird der Text von links nach rechts bewegt.


from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip

# Hauptvideo laden
video = VideoFileClip("sample_video.mp4")

# Textclip erstellen
text = TextClip("Bewegender Text", fontsize=50, color='white')
text = text.set_position(lambda t: (int(200 * t), 100)).set_duration(5)

# Text über Video legen
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_moving_text.mp4", fps=24)

Hier:

  • TextClip("Bewegender Text", fontsize=50, color='white') erstellt weißen Text mit Schriftgröße 50.
  • set_position(lambda t: (int(200 * t), 100)) erzeugt eine Animation, bei der sich der Text horizontal nach rechts mit konstanter Geschwindigkeit bewegt.
  • CompositeVideoClip([video, text]) kombiniert den Textclip mit dem Hauptvideoclip.

Animation von Text mit Richtungswechsel

Du kannst auch komplexere Pfade für den Text erstellen, indem du horizontale und vertikale Bewegungen kombinierst.

Textbewegung diagonal

In diesem Beispiel wird der Text diagonal bewegt.


text = TextClip("Diagonaltext", fontsize=50, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)

final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_diagonal_text.mp4", fps=24)

Hier:

  • Die Funktion set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))) erzeugt eine diagonale Bewegung, indem horizontale und vertikale Verschiebungen des Textes kombiniert werden.

Animation von Text mit Ein- und Ausblendeffekt

Damit Text erscheint und verschwindet, kann seine Transparenz abhängig von der Zeit geändert werden. Dafür verwendet MoviePy die Methoden fadein() und fadeout().

Sanftes Ein- und Ausblenden von Text


# Text mit weichem Ein- und Ausblendeffekt
text = TextClip("Erscheinender Text", fontsize=40, color='blue')
text = text.set_position(('center', 'bottom')).set_duration(5).fadein(1).fadeout(1)

final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_fade_text.mp4", fps=24)

Hier:

  • fadein(1) und fadeout(1) fügen am Anfang und Ende des Clips ein sanftes Erscheinen bzw. Verschwinden des Textes über 1 Sekunde hinzu.

2. Einfügen von Grafikelementen

Hinzufügen von Bildern und Animation ihrer Bewegung

Neben Text ermöglicht MoviePy das Hinzufügen von Bildern in Videos mit der Klasse ImageClip. Die Bewegung des Bildes kann animiert werden, indem seine Position mit set_position() festgelegt wird.

Animation eines Logos, das sich von unten nach oben bewegt


from moviepy.editor import VideoFileClip, ImageClip

# Video und Bild laden
video = VideoFileClip("sample_video.mp4")
logo = ImageClip("logo.png").set_duration(5)

# Logo-Animation – Bewegung von unten nach oben
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Logo über Video legen
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_moving_logo.mp4", fps=24)

Hier:

  • ImageClip("logo.png").set_duration(5) lädt ein Logo-Bild und legt seine Dauer fest.
  • set_position(lambda t: ('center', int(500 - 100 * t))) lässt das Logo vertikal von unten nach oben bewegen.

Erscheinendes Bild mit zunehmendem Maßstab

Ein weiterer Effekt, den man erstellen kann, ist das Erscheinen eines Bildes mit allmählich zunehmender Größe.


# Bild laden
logo = ImageClip("logo.png").set_duration(5)

# Skalierung des Bildes für Zoom-Effekt anpassen
logo = logo.resize(lambda t: 1 + 0.5 * t)  # Vergrößerungszoom
logo = logo.set_position(('center', 'center'))

# Skalierungsanimation des Logos über Video legen
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_zoom_in_logo.mp4", fps=24)

Hier:

  • logo.resize(lambda t: 1 + 0.5 * t) vergrößert das Logo um 50 % pro Sekunde und erzeugt einen Zoom-Effekt.

3. Kombination mehrerer animierter Elemente

MoviePy ermöglicht es, mehrere animierte Elemente in einem einzigen Video zu kombinieren. Zum Beispiel können Text, der horizontal bewegt wird, und ein Bild, das sich vertikal bewegt, gleichzeitig hinzugefügt werden.

Gleichzeitige Animation von Text und Bild


# Text erstellen, der sich horizontal bewegt
text = TextClip("Text und Bild", fontsize=40, color='red')
text = text.set_position(lambda t: (int(200 * t), 50)).set_duration(5)

# Logo-Animation von unten nach oben
logo = ImageClip("logo.png").set_duration(5)
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Text und Logo über Video legen
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("video_with_text_and_logo.mp4", fps=24)

Hier:

  • Wir kreieren eine Animation, bei der sich der Text von links nach rechts bewegt und das Logo von unten nach oben.
  • CompositeVideoClip([video, text, logo]) fügt beide animierten Elemente in dasselbe Video ein.

Animierten Text und Grafiken in einem Video erstellen

In diesem Beispiel erstellen wir ein vollständiges Video, in dem sich der Text diagonal bewegt und das Logo sanft erscheint und im Maßstab zunimmt.


from moviepy.editor import VideoFileClip, TextClip, ImageClip, CompositeVideoClip

# Video laden
video = VideoFileClip("sample_video.mp4")

# Text, der sich diagonal bewegt
text = TextClip("Animierter Text", fontsize=40, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)

# Logo, das vergrößert wird und sanft erscheint
logo = ImageClip("logo.png").set_duration(5)
logo = logo.resize(lambda t: 1 + 0.5 * t).fadein(1)

# Text und Logo über Video legen
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("animated_text_and_logo.mp4", fps=24)

Fehler, die man beachten sollte

Manchmal wird der Text oder die Grafik nicht wie erwartet abgespielt. Dies könnte an falschen Angaben zur Zeit oder Position liegen. Überprüfe logische Ausdrücke, die du verwendest, und vergiss nicht, deinen Code zu debuggen.

Eine andere häufige Frage ist: Warum wird mein Video nicht im gewünschten Format gespeichert? Stelle sicher, dass du die benötigten Codecs für den Videoexport installiert hast. MoviePy macht dies einfacher, aber manchmal können Kompatibilitätsprobleme auftreten, die sich mit der Installation zusätzlicher Bibliotheken leicht lösen lassen.

Damit endet unsere Lektion. Jetzt kannst du nicht nur Text und Grafiken zu Videos hinzufügen, sondern sie auch dynamisch und lebendig gestalten. In den nächsten Vorlesungen erwarten dich neue spannende Techniken, also bleib dran und entwickle deine Fähigkeiten weiter!

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION