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)
ifadeout(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!
GO TO FULL VERSION