CodeGym /Kurslar /Python SELF AZ /Videoda elementlərin üst-üstə düşməsi və animasiyası: hər...

Videoda elementlərin üst-üstə düşməsi və animasiyası: hərəkət edən mətn və qrafikanın yaradılması

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Mətnin əlavə edilməsi və onun hərəkət animasiyası

MoviePy — bu, sadəcə əla bir alətdir ki, darıxdırıcı videoları kino şedevrlərinə çevirsin. Ya da ən azından, hərəkət edən mətn və qrafik olan bir şey etsin. Əvvəlcə videomuza statik elementləri necə əlavə edə biləcəyimizi anlayaq, sonra isə magiyaya — animasiyaya keçək.

Mətnin əlavə edilməsi və onun hərəkət animasiyası

MoviePy-də mətn və onun animasiyası üçün TextClip istifadə olunur. Bunun vasitəsilə mətn, şrift, rəng və digər parametrləri təyin etmək mümkündür. Daha sonra set_position() metodu vasitəsilə mətnin ekran üzərindən hərəkəti təyin olunur.

Mətnin üfüqi olaraq hərəkəti

Bu nümunədə mətn soldan sağa hərəkət edəcək.


from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip

# Əsas videonu yükləmək
video = VideoFileClip("sample_video.mp4")

# Mətn klipini yaratmaq
text = TextClip("Hərəkət edən mətn", fontsize=50, color='white')
text = text.set_position(lambda t: (int(200 * t), 100)).set_duration(5)

# Mətnin video üzərinə əlavə olunması
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_moving_text.mp4", fps=24)

Burada:

  • TextClip("Hərəkət edən mətn", fontsize=50, color='white') ağ rəngdə və 50 ölçüsündə mətn yaradır.
  • set_position(lambda t: (int(200 * t), 100)) mətnin sağa, yəni üfüqi olaraq sabit sürətlə hərəkət etməsini təmin edir.
  • CompositeVideoClip([video, text]) mətn klipi ilə əsas videoklip arasındakı birləşməni təmin edir.

Mətnin hərəkət istiqamətinin dəyişməsi ilə animasiya

Həmçinin, mətn üçün daha mürəkkəb bir hərəkət trayektoriyası yarada bilərsiniz, üfüqi və şaquli hərəkətləri birləşdirərək.

Mətnin diaqonal hərəkəti

Bu nümunədə mətn diaqonal olaraq hərəkət edəcək.


text = TextClip("Diaqonal mətn", 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)

Burada:

  • set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))) funksiyası mətnin diaqonal hərəkətini təmin edir, üfüqi və şaquli yerdəyişməni birləşdirərək.

Mətnin görünmə və yox olma effekti ilə animasiyası

Mətnin görünməsi və yox olması üçün onun şəffaflığını zamanla dəyişmək olar. Bunun üçün MoviePy-də fadein()fadeout() metodları istifadə olunur.

Mətnin yumşaq görünmə və yox olma effekti


# Yumşaq görünmə və yox olma effekti ilə mətn
text = TextClip("Görünən mətn", 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)

Burada:

  • fadein(1)fadeout(1) mətnin 1 saniyə ərzində yumşaq şəkildə görünməsi və yox olmasını təmin edir.

2. Qrafik elementlərin əlavə olunması

Şəkillərin əlavə edilməsi və onların hərəkətinin animasiyası

Mətnə əlavə olaraq, MoviePy ImageClip sinifindən istifadə edərək video üzərinə şəkillər əlavə etməyə imkan verir. Şəkilin trayektoriyasını təyin edərək və ya set_position() köməyi ilə onun mövqeyini dəyişərək onu animasiya edə bilərsiniz.

Loqotipin aşağıdan yuxarıya hərəkəti ilə animasiyası


from moviepy.editor import VideoFileClip, ImageClip

# Videonun və şəkilin yüklənməsi
video = VideoFileClip("sample_video.mp4")
logo = ImageClip("logo.png").set_duration(5)

# Loqotipin animasiyası — aşağıdan yuxarıya hərəkət
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Videonun üzərinə loqotip yerləşdirilməsi
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_moving_logo.mp4", fps=24)

Burada:

  • ImageClip("logo.png").set_duration(5) loqotipin şəklini yükləyir və onun müddətini təyin edir.
  • set_position(lambda t: ('center', int(500 - 100 * t))) loqotipi şaquli olaraq aşağıdan yuxarıya hərəkət etdirir.

Şəkilin miqyas artımı ilə görünməsi

Yarada biləcəyiniz digər bir effekt isə şəkilin tədricən miqyasının artması ilə görünməsidir.


# Şəkilin yüklənməsi
logo = ImageClip("logo.png").set_duration(5)

# Miqyas artımı effekti üçün görüntünün tənzimlənməsi
logo = logo.resize(lambda t: 1 + 0.5 * t)  # Miqyasın artırılması
logo = logo.set_position(('center', 'center'))

# Miqyas animasiyalı loqotipi video üzərinə əlavə etmə
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_zoom_in_logo.mp4", fps=24)

Burada:

  • logo.resize(lambda t: 1 + 0.5 * t) loqotipin miqyasını hər saniyə 50% artırır və yaxınlaşma effekti yaradır.

3. Bir neçə animasiya elementinin kombinasiyası

MoviePy bir neçə animasiya elementinin bir videoda birləşdirilməsinə imkan verir. Məsələn, eyni zamanda üfüqi istiqamətdə hərəkət edən mətn əlavə etmək və şaquli istiqamətdə hərəkət edən şəkil əlavə etmək olar.

Mətn və şəkilin eyni vaxtda animasiyası


# Üfüqi olaraq hərəkət edən mətnin yaradılması
text = TextClip("Mətn və şəkil", fontsize=40, color='red')
text = text.set_position(lambda t: (int(200 * t), 50)).set_duration(5)

# Loqotipin aşağıdan yuxarı animasiyası
logo = ImageClip("logo.png").set_duration(5)
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Mətn və loqotipin videoya əlavə edilməsi
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("video_with_text_and_logo.mp4", fps=24)

Burada:

  • Biz soldan sağa hərəkət edən mətn animasiyası və aşağıdan yuxarı hərəkət edən loqotip yaradırıq.
  • CompositeVideoClip([video, text, logo]) hər iki animasiya elementini əsas video üzərinə yerləşdirir.

Bir videoda mətn və qrafika animasiyası yaratmaq

Bu nümunədə tam bir videoçarx yaradacağıq, burada mətn diaqonal olaraq hərəkət edəcək, loqotip isə tədricən meydana çıxacaq və miqyasca böyüyəcək.


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

# Videonun yüklənməsi
video = VideoFileClip("sample_video.mp4")

# Diaqonal olaraq hərəkət edən mətn
text = TextClip("Animasiya edilmiş mətn", fontsize=40, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)

# Loqotip, miqyasca böyüyür və tədricən görünür
logo = ImageClip("logo.png").set_duration(5)
logo = logo.resize(lambda t: 1 + 0.5 * t).fadein(1)

# Mətn və loqotipin videoya əlavə edilməsi
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("animated_text_and_logo.mp4", fps=24)

Diqqət etməli olduğunuz səhvlər

Bəzən mətn və ya qrafika gözlədiyiniz kimi göstərilməyə bilər. Bu, zaman və ya mövqeyi düzgün təyin etməməklə bağlı ola bilər. İstifadə etdiyiniz məntiqi ifadələri yoxlayın və kodunuzu debugging etməyi unutmayın.

Digər bir tez-tez verilən sual — videom niyə düzgün formatda saxlanmır? Videonun ixracı üçün lazım olan codec-lərin quraşdırılmış olduğundan əmin olun. MoviePy bunu asanlaşdırır, amma bəzən uyğunluq problemləri yarana bilər ki, bu problemləri əlavə kitabxanalar quraşdırmaqla həll etmək daha asandır.

Bununla biz dərsimizi bitiririk. İndi siz yalnız mətn və qrafikanı videoya əlavə etmək deyil, həm də onları dinamik və canlı etmək bacarığına maliksiniz. Növbəti mühazirələrdə sizi yeni maraqlı texnikalar gözləyir, ona görə bizimlə qalın və bacarıqlarınızı inkişaf etdirməyə davam edin!

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION