CodeGym /Kurs Javy /Python SELF PL /Nałożenie i animacja elementów w wideo: tworzenie ruchome...

Nałożenie i animacja elementów w wideo: tworzenie ruchomego tekstu i grafiki

Python SELF PL
Poziom 48 , Lekcja 0
Dostępny

1. Dodanie tekstu i animacja jego ruchu

MoviePy to po prostu rewelacyjne narzędzie, które pozwala zamienić nudne filmy w prawdziwe arcydzieła kinematografii. No dobra, albo przynajmniej w coś, co zawiera ruchomy tekst i grafikę. Na początek zobaczymy, jak dodawać statyczne elementy do naszego wideo, a następnie przejdziemy do magii – animacji.

Dodanie tekstu i animacja jego ruchu

Do tworzenia tekstu i jego animacji w MoviePy używa się TextClip, który pozwala ustawić tekst, czcionkę, kolor i inne parametry. Potem dzięki metodzie set_position() można określić ruch tekstu na ekranie.

Ruchomy tekst w poziomie

W tym przykładzie tekst będzie poruszał się od lewej do prawej.


from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip

# Wczytanie głównego wideo
video = VideoFileClip("sample_video.mp4")

# Tworzenie tekstowego klipu
text = TextClip("Ruchomy tekst", fontsize=50, color='white')
text = text.set_position(lambda t: (int(200 * t), 100)).set_duration(5)

# Nałożenie tekstu na wideo
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_moving_text.mp4", fps=24)

Tu:

  • TextClip("Ruchomy tekst", fontsize=50, color='white') tworzy tekst w kolorze białym o rozmiarze czcionki 50.
  • set_position(lambda t: (int(200 * t), 100)) tworzy animację, w której tekst przesuwa się w prawo w poziomie z stałą prędkością.
  • CompositeVideoClip([video, text]) łączy tekstowy klip i główny klip wideo.

Animacja tekstu ze zmianą kierunku ruchu

Możesz także tworzyć bardziej skomplikowane trajektorie ruchu tekstu, łącząc ruchy w poziomie i pionie.

Ruch tekstu po przekątnej

W tym przykładzie tekst będzie przesuwał się po przekątnej.


text = TextClip("Tekst po przekątnej", 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)

Tu:

  • Funkcja set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))) tworzy ruch po przekątnej, łącząc poziome i pionowe przesunięcie tekstu.

Animacja tekstu z efektem pojawiania się i znikania

Aby tekst pojawiał się i znikał, można zmieniać jego przezroczystość w zależności od czasu. Do tego w MoviePy używane są metody fadein() i fadeout().

Płynne pojawienie się i zniknięcie tekstu


# Tekst z efektem płynnego pojawiania się i znikania
text = TextClip("Pojawiający się tekst", 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)

Tu:

  • fadein(1) i fadeout(1) dodają płynne pojawienie się tekstu na początku i zniknięcie na końcu w ciągu 1 sekundy.

2. Wstawianie elementów graficznych

Dodanie obrazów i animacja ich ruchu

Oprócz tekstu, MoviePy pozwala dodawać obrazy do wideo przy użyciu klasy ImageClip. Można animować obraz, określając jego trajektorię i zmieniając pozycję przy pomocy set_position().

Animacja logo poruszającego się od dołu do góry


from moviepy.editor import VideoFileClip, ImageClip

# Wczytanie wideo i obrazu
video = VideoFileClip("sample_video.mp4")
logo = ImageClip("logo.png").set_duration(5)

# Animacja logo — ruch od dołu do góry
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Nałożenie logo na wideo
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_moving_logo.mp4", fps=24)

Tu:

  • ImageClip("logo.png").set_duration(5) wczytuje obraz logo i ustawia jego czas trwania.
  • set_position(lambda t: ('center', int(500 - 100 * t))) sprawia, że logo porusza się od dołu do góry w pionie.

Pojawienie się obrazu z powiększeniem skali

Kolejny efekt, który można stworzyć — to pojawienie się obrazu z stopniowym zwiększaniem rozmiaru.


# Wczytanie obrazu
logo = ImageClip("logo.png").set_duration(5)

# Ustawienie skali obrazu dla efektu powiększenia
logo = logo.resize(lambda t: 1 + 0.5 * t)  # Powiększanie skali
logo = logo.set_position(('center', 'center'))

# Nałożenie logo z animacją skali na wideo
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_zoom_in_logo.mp4", fps=24)

Tu:

  • logo.resize(lambda t: 1 + 0.5 * t) zwiększa skalę logo o 50% na sekundę, tworząc efekt przybliżania.

3. Połączenie kilku animowanych elementów

MoviePy pozwala na połączenie kilku animowanych elementów w jednym wideo. Na przykład, można jednocześnie dodać tekst poruszający się w poziomie i obraz przesuwający się w pionie.

Jednoczesna animacja tekstu i obrazu


# Tworzenie tekstu poruszającego się w poziomie
text = TextClip("Tekst i obraz", fontsize=40, color='red')
text = text.set_position(lambda t: (int(200 * t), 50)).set_duration(5)

# Animacja logo od dołu do góry
logo = ImageClip("logo.png").set_duration(5)
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Nałożenie tekstu i logo na wideo
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("video_with_text_and_logo.mp4", fps=24)

Tu:

  • Tworzymy animację tekstu poruszającego się od lewej do prawej i logo przesuwającego się od dołu do góry.
  • CompositeVideoClip([video, text, logo]) nakłada oba animowane elementy na główne wideo.

Tworzenie animacji tekstu i grafiki w jednym wideo

W tym przykładzie stworzymy pełny klip wideo, w którym tekst będzie poruszał się po przekątnej, a logo będzie płynnie pojawiało się i powiększało w skali.


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

# Wczytanie wideo
video = VideoFileClip("sample_video.mp4")

# Tekst, poruszający się po przekątnej
text = TextClip("Animowany tekst", fontsize=40, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)

# Logo, powiększające się w skali i z płynnym pojawieniem się
logo = ImageClip("logo.png").set_duration(5)
logo = logo.resize(lambda t: 1 + 0.5 * t).fadein(1)

# Nałożenie tekstu i logo na wideo
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("animated_text_and_logo.mp4", fps=24)

Błędy, na które należy zwrócić uwagę

Czasami tekst lub grafika mogą nie działać tak, jak oczekiwano. Może to wynikać z błędnego określenia czasu lub pozycji. Sprawdzaj wyrażenia logiczne, które używasz, i pamiętaj o debugowaniu kodu.

Inne częste pytanie — dlaczego moje wideo nie zapisuje się w odpowiednim formacie? Upewnij się, że masz zainstalowane odpowiednie kodeki do eksportu wideo. MoviePy to upraszcza, ale czasem mogą wystąpić problemy z kompatybilnością, które najłatwiej rozwiązać instalując dodatkowe biblioteki.

Na tym kończy się nasza lekcja. Teraz potrafisz nie tylko dodawać tekst i grafikę do wideo, ale także sprawić, by były dynamiczne i żywe. W kolejnych wykładach czekają na Ciebie nowe ekscytujące techniki, więc zostań z nami i rozwijaj swoje umiejętności!

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